diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2024-06-21  Joshua D. Guttman  <guttman@mitre.org>
+
+	* cpsa.cabal (Version): Tagged as version 4.3.4.  This version has
+	important bug fixes especially for the Diffie-Hellman "absence"
+	computation.  
+
+2023-10-23  John D. Ramsdell  <ramsdell@mitre.org>
+
+	* cpsa.cabal (Version): Tagged as version 4.3.3
+
 2022-04-14  John D. Ramsdell  <ramsdell@mitre.org>
 
 	* src/CPSA/Signature.hs (loadSig): Improved language field loading
diff --git a/NEWS b/NEWS
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,38 @@
 CPSA NEWS -- history of user-visible changes.
 
+* Changes in version 4.4.4
+
+** We corrected a significant bug in the handling of absence
+   assumptions in Diffie-Hellman.  As a consequence, CPSA pursues
+   analysis paths that were previously discarded.
+
+** We eliminated DH variables of sort base.  These are logically
+   superfluous, because expt variables can specify exactly the same
+   cases, and they require similar code to handle delicate conditions,
+   the absence assumptions being an example.
+
+** We modified the way skeletons are printed to be more explicit
+   about many properties of the skeletons and the operations that
+   connect them.  In particular, strand-maps are now printed, so that
+   it is easy for other programs to determine the homomorphisms
+   between skeletons in the analysis process.  Information is also
+   available on the operation that leads from a skeleton to another
+   when the latter is one of its already-seen children.
+
+** The test directory has now been updated with much better DH test
+   files.  Long-running tests have been gathered in the tst-harder
+   subdirectory.
+
+** The manual has been updated to reflect the removal of variables
+   of DH base sort.  It also now explains the relation between unique
+   origination and unique generation better, among other improvements.  
+
+** the new program cpsa4prolog now generates a prolog file with much
+   information about a whole CPSA analysis run.  Further programs will
+   offer tighter results.
+
+
+
 * Changes in version 4.4.3
 
 ** Added the cpsa4query program which loads CPSA output and a query.
diff --git a/README b/README
--- a/README
+++ b/README
@@ -139,11 +139,11 @@
 ADDITIONAL PROGRAMS
 
 The src directory of the source distributions includes programs
-written in Scheme, Prolog, Elisp, and OCamlq 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,6 +1,6 @@
 Name:                   cpsa
-Version:                4.4.3
-Maintainer:             ramsdell@mitre.org
+Version:                4.4.4
+Maintainer:             guttman@mitre.org
 Cabal-Version:          >= 1.10
 License:                BSD3
 License-File:           license.txt
@@ -142,8 +142,8 @@
   doc/SDAG.lhs doc/cpsalogo.mp src/index.html src/cpsajson.py
   src/split.py src/cpsa2svg src/cpsa.el src/cpsaperm.scm src/lastlabel.py
   src/cpsaops.scm src/preskel src/cpsa.pl src/unsorted.pl src/pp.pl
-  src/sexpr.pl src/perm.pl src/prover9.pl src/zoom.js src/js2hs
-  src/ghcmemlimit build.xml src/scala/Main.scala
+  src/sexpr.pl src/perm.pl src/prover9.pl src/cpsa4prolog.pl src/zoom.js
+  src/js2hs src/ghcmemlimit build.xml src/scala/Main.scala
   src/scala/Pretty.scala src/scala/Printer.scala src/scala/SExpr.scala
   src/ocaml/Makefile src/ocaml/README src/ocaml/cpsa.d.itarget
   src/ocaml/cpsa.itarget src/ocaml/cpsa.mllib src/ocaml/cpsa.mltop
@@ -151,106 +151,174 @@
   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/DH_hack.scm tst/DH_hack.tst tst/Make4.hs tst/Makefile tst/README
-  tst/ab.scm tst/ab.tst tst/abc.scm tst/abc.tst tst/aik.scm
-  tst/aik.tst tst/atomic-open-closed.scm tst/atomic-open-closed.tst
-  tst/attest.scm tst/attest.tst tst/auth-enc.scm tst/auth-enc.tst
-  tst/auth-hash.scm tst/auth-hash.tst tst/blanchet.scm
-  tst/blanchet.tst tst/blanchet_doorsep.prot tst/blanchet_doorsep.tst
-  tst/bug_example.scm tst/bug_example.tst tst/cert_lang.scm
-  tst/cert_lang.tst tst/chan-envelope.scm tst/chan-envelope.tst
-  tst/chan-perrig-song.scm tst/chan-perrig-song.tst
+  tst/DH_hack.scm tst/DH_hack.tst tst/DH_hack_shapes.tst tst/ab.scm
+  tst/ab.tst tst/ab_shapes.tst tst/abc.scm tst/abc.tst
+  tst/abc_shapes.tst tst/aik.scm tst/aik.tst tst/aik_shapes.tst
+  tst/atomic-open-closed.scm tst/atomic-open-closed.tst
+  tst/atomic-open-closed_shapes.tst tst/attest.scm tst/attest.tst
+  tst/attest_shapes.tst tst/auth-enc.scm tst/auth-enc.tst
+  tst/auth-enc_shapes.tst tst/auth-hash.scm tst/auth-hash.tst
+  tst/auth-hash_shapes.tst tst/blanchet-strandmax.scm
+  tst/blanchet-strandmax.tst tst/blanchet.scm tst/blanchet.tst
+  tst/blanchet_doorsep.prot tst/blanchet_doorsep.tst
+  tst/blanchet_doorsep_shapes.tst tst/blanchet_shapes.tst
+  tst/bug_example.scm tst/bug_example.tst tst/bug_example_shapes.tst
+  tst/cert_lang.scm tst/cert_lang.tst tst/cert_lang_shapes.tst
+  tst/chan-envelope.scm tst/chan-envelope.tst
+  tst/chan-envelope_shapes.tst tst/chan-perrig-song.scm
+  tst/chan-perrig-song.tst tst/chan-perrig-song_shapes.tst
   tst/chan-unilateral.scm tst/chan-unilateral.tst
-  tst/chan-yahalom-role-decl.scm tst/chan-yahalom-role-decl.tst
-  tst/chan-yahalom.scm tst/chan-yahalom.tst tst/checktst
-  tst/commitment.scm tst/commitment.tst tst/comp_test.scm
-  tst/comp_test.tst tst/completeness-test.scm
-  tst/completeness-test.tst tst/cpsagraphall tst/cpsagraphtst
-  tst/cpsashapesall tst/crushing.scm tst/crushing.tst
-  tst/dass-mod.lisp tst/dass.lisp tst/dass_simple.scm
-  tst/dass_simple.tst tst/denning-sacco.scm tst/denning-sacco.tst
-  tst/deorig_contract.scm tst/deorig_contract.tst tst/deorig_mesg.scm
-  tst/deorig_mesg.tst tst/deorig_simple.scm tst/deorig_simple.tst
-  tst/dh-ca_hack.scm tst/dh-ca_hack.tst tst/dh_encrypt_hack.scm
-  tst/dh_encrypt_hack.tst tst/dh_group_sig.scm tst/dh_group_sig.tst
+  tst/chan-unilateral_shapes.tst tst/chan-yahalom-role-decl.scm
+  tst/chan-yahalom-role-decl.tst tst/chan-yahalom-role-decl_shapes.tst
+  tst/chan-yahalom.scm tst/chan-yahalom.tst
+  tst/chan-yahalom_shapes.tst tst/commitment.scm tst/commitment.tst
+  tst/commitment_shapes.tst tst/comp_test.scm tst/comp_test.tst
+  tst/comp_test_shapes.tst tst/completeness-test.scm
+  tst/completeness-test.tst tst/completeness-test_shapes.tst
+  tst/crushing.scm tst/crushing.tst tst/crushing_shapes.tst
+  tst/dass_simple.scm tst/dass_simple.tst tst/dass_simple_shapes.tst
+  tst/denning-sacco.scm tst/denning-sacco.tst
+  tst/denning-sacco_shapes.tst tst/deorig_contract.scm
+  tst/deorig_contract.tst tst/deorig_contract_shapes.tst
+  tst/deorig_mesg.scm tst/deorig_mesg.tst tst/deorig_mesg_shapes.tst
+  tst/deorig_simple.scm tst/deorig_simple.tst
+  tst/deorig_simple_shapes.tst tst/dh-ca_hack-uniq_cert.scm
+  tst/dh-ca_hack-uniq_cert.tst tst/dh-ca_hack.scm tst/dh-ca_hack.tst
+  tst/dh-ca_hack_shapes.tst tst/dh_encrypt_hack.scm
+  tst/dh_encrypt_hack.tst tst/dh_encrypt_hack_shapes.tst
+  tst/dh_group_sig.scm tst/dh_group_sig.tst
   tst/dh_group_sig_auth_failure.scm tst/dh_group_sig_auth_failure.tst
-  tst/dh_mim.lisp tst/dh_mim_hack.scm tst/dh_mim_hack.tst
-  tst/dhcr_um.lisp tst/dhcr_um.scm tst/dhcr_um.tst tst/dhcr_um3.scm
-  tst/dhcr_um3.tst tst/dhcr_um_exercise_resolved_bug.scm
-  tst/dhcr_um_exercise_resolved_bug.tst tst/dhcr_um_expt.scm
-  tst/dhcr_um_expt.tst tst/dhcr_umx.scm tst/dhcr_umx.tst
-  tst/dhke2.lisp tst/dhnsl_hack.scm tst/dhnsl_hack.tst
-  tst/dhstatic-state.scm tst/dhstatic-state.tst tst/disclosure.scm
-  tst/disclosure.tst tst/doorsep.scm tst/doorsep.tst
-  tst/doorsep2invk.scm tst/doorsep2invk.tst tst/ds-short.lisp
-  tst/dy.lsp tst/dy.tst tst/encsig.scm tst/encsig.tst tst/envelope.scm
-  tst/envelope.tst tst/epmo-hash.scm tst/epmo-hash.tst
-  tst/epmo-key-hash.scm tst/epmo-key-hash.tst tst/epmo.scm
+  tst/dh_group_sig_auth_failure_shapes.tst tst/dh_group_sig_shapes.tst
+  tst/dh_mim_hack.scm tst/dh_mim_hack.tst tst/dh_mim_hack_shapes.tst
+  tst/dhcr_um.scm tst/dhcr_um.tst tst/dhcr_um3.scm tst/dhcr_um3.tst
+  tst/dhcr_um3_goals.scm tst/dhcr_um3_goals.tst
+  tst/dhcr_um3_shapes.tst tst/dhcr_um_exercise_resolved_bug_shapes.tst
+  tst/dhcr_um_expt_shapes.tst tst/dhcr_um_goals.scm
+  tst/dhcr_um_goals.tst tst/dhcr_um_implicit_auth.scm
+  tst/dhcr_um_implicit_auth.tst tst/dhcr_um_shapes.tst
+  tst/dhcr_umx.scm tst/dhcr_umx.tst tst/dhcr_umx_goals.scm
+  tst/dhcr_umx_goals.tst tst/dhcr_umx_implicit_auth.scm
+  tst/dhcr_umx_implicit_auth.tst tst/dhcr_umx_shapes.tst
+  tst/dhnsl_hack.scm tst/dhnsl_hack.tst tst/dhnsl_hack_shapes.tst
+  tst/dhstatic-state.scm tst/dhstatic-state.tst
+  tst/dhstatic-state_shapes.tst tst/disclosure.scm tst/disclosure.tst
+  tst/doorsep.scm tst/doorsep.tst tst/doorsep2invk.scm
+  tst/doorsep2invk.tst tst/doorsep2invk_shapes.tst
+  tst/doorsep_shapes.tst tst/dy.lsp tst/dy.tst tst/dy_shapes.tst
+  tst/encsig.scm tst/encsig.tst tst/encsig_shapes.tst tst/envelope.scm
+  tst/envelope.tst tst/envelope_shapes.tst tst/epmo-hash.scm
+  tst/epmo-hash.tst tst/epmo-hash_shapes.tst tst/epmo-key-hash.scm
+  tst/epmo-key-hash.tst tst/epmo-key-hash_shapes.tst tst/epmo.scm
   tst/epmo.tst tst/epmo_acctnum-key-hash.scm
-  tst/epmo_acctnum-key-hash.tst tst/epmo_acctnum.lisp
-  tst/epmo_acctnum.tst tst/expand.scm tst/expand.tst tst/facts.scm
-  tst/facts.tst tst/factvar.scm tst/factvar.tst tst/ffgg.scm
-  tst/ffgg.tst tst/fluffy_draft03_gske.scm tst/fluffy_draft03_gske.tst
-  tst/fragile_pruning.scm tst/fragile_pruning.tst tst/goals.scm
-  tst/goals.tst tst/hashtest-key-hash.scm tst/hashtest-key-hash.tst
-  tst/hashtest.scm tst/hashtest.tst tst/incompleteness_example.scm
-  tst/incompleteness_example.tst tst/isoreject-corrected.scm
-  tst/isoreject-corrected.tst tst/isoreject.scm tst/isoreject.tst
-  tst/jdg-neuman-stubblebine-reauth.tst tst/kelly1.scm tst/kelly1.tst
-  tst/kelly64.lisp tst/kerb5.lisp tst/kerberos.scm tst/kerberos.tst
-  tst/locn_envelope.scm tst/locn_envelope.tst tst/mass.lsp
-  tst/mass.tst tst/mass2.lsp tst/mass2.tst tst/missing_contraction.scm
-  tst/missing_contraction.tst tst/mksas tst/neq_test.scm
-  tst/neq_test.tst tst/neuman-stubblebine-alt.lisp
+  tst/epmo_acctnum-key-hash.tst tst/epmo_acctnum-key-hash_shapes.tst
+  tst/epmo_acctnum.lsp tst/epmo_acctnum.tst
+  tst/epmo_acctnum_shapes.tst tst/epmo_shapes.tst tst/example.scm
+  tst/example.tst tst/example_shapes.tst tst/expand.scm tst/expand.tst
+  tst/expand_shapes.tst tst/facts.scm tst/facts.tst
+  tst/facts_shapes.tst tst/factvar.scm tst/factvar.tst
+  tst/factvar_shapes.tst tst/ffgg.scm tst/ffgg.tst tst/ffgg_shapes.tst
+  tst/fluffy_draft03_gske.scm tst/fluffy_draft03_gske.tst
+  tst/fluffy_draft03_gske_shapes.tst tst/fragile_pruning.scm
+  tst/fragile_pruning.tst tst/fragile_pruning_shapes.tst tst/goals.scm
+  tst/goals.tst tst/goals_shapes.tst tst/hashtest-key-hash.scm
+  tst/hashtest-key-hash.tst tst/hashtest-key-hash_shapes.tst
+  tst/hashtest.scm tst/hashtest.tst tst/hashtest_shapes.tst
+  tst/hull-alt.scm tst/hull-alt.tst tst/incompleteness_example.scm
+  tst/incompleteness_example.tst tst/incompleteness_example_shapes.tst
+  tst/isoreject-corrected.scm tst/isoreject-corrected.tst
+  tst/isoreject-corrected_shapes.tst tst/isoreject.scm
+  tst/isoreject.tst tst/isoreject_shapes.tst
+  tst/jdg-neuman-stubblebine-reauth_shapes.tst tst/jdg-wonthull.scm
+  tst/jdg-wonthull.tst tst/kelly1.scm tst/kelly1.tst
+  tst/kelly1_shapes.tst tst/kerberos-variant-guar.scm
+  tst/kerberos-variant-guar.tst tst/kerberos.scm tst/kerberos.tst
+  tst/kerberos_shapes.tst tst/locn_envelope.scm tst/locn_envelope.tst
+  tst/locn_envelope_shapes.tst tst/mass.lsp tst/mass.tst tst/mass2.lsp
+  tst/mass2.tst tst/mass2_shapes.tst tst/mass_shapes.tst
+  tst/missing_contraction.scm tst/missing_contraction.tst
+  tst/missing_contraction_shapes.tst tst/neq_test.scm tst/neq_test.tst
+  tst/neq_test_shapes.tst tst/neuman-stubblebine-reauth-tagged.lsp
   tst/neuman-stubblebine-reauth-tagged.tst
-  tst/neuman-stubblebine-reauth.lisp tst/neuman-stubblebine-reauth.lsp
-  tst/neuman-stubblebine-reauth.tst tst/neuman-stubblebine.scm
-  tst/neuman-stubblebine.tst tst/no_contraction.scm
-  tst/no_contraction.tst tst/non_transforming.scm
-  tst/non_transforming.tst tst/nonaug-prune.scm tst/nonaug-prune.tst
-  tst/ns-l.scm tst/ns-l.tst tst/ns-rebinding.scm tst/ns-rebinding.tst
-  tst/ns.scm tst/ns.tst tst/nsl3.scm tst/nsl3.tst tst/nsl4.lisp
-  tst/nsl4cm1.lisp tst/nsl4init.lisp tst/nsl4resp1.lisp
-  tst/nsl4resp2.lisp tst/nsl4resp3.lisp tst/nsl5.lisp tst/nsl5i.lisp
-  tst/nsl5resp3.lisp tst/nslsk.scm tst/nslsk.tst
-  tst/open-closed-multiloc.scm tst/open-closed-multiloc.tst
-  tst/open-closed-tag.scm tst/open-closed-tag.tst tst/open-closed.scm
-  tst/open-closed.tst tst/or.scm tst/or.tst tst/ordered.scm
-  tst/ordered.tst tst/par tst/pca.scm tst/pca.tst
+  tst/neuman-stubblebine-reauth-tagged_shapes.tst
+  tst/neuman-stubblebine-reauth.lsp tst/neuman-stubblebine-reauth.tst
+  tst/neuman-stubblebine-reauth_shapes.tst tst/neuman-stubblebine.scm
+  tst/neuman-stubblebine.tst tst/neuman-stubblebine_shapes.tst
+  tst/no_contraction.scm tst/no_contraction.tst
+  tst/no_contraction_shapes.tst tst/non_transforming.scm
+  tst/non_transforming.tst tst/non_transforming_shapes.tst
+  tst/nonaug-prune.scm tst/nonaug-prune.tst
+  tst/nonaug-prune_shapes.tst tst/ns-l.scm tst/ns-l.tst
+  tst/ns-l_shapes.tst tst/ns-rebinding.scm tst/ns-rebinding.tst
+  tst/ns-rebinding_shapes.tst tst/ns.scm tst/ns.tst tst/ns_shapes.tst
+  tst/nsl3.scm tst/nsl3.tst tst/nsl3_shapes.tst tst/nslsk.scm
+  tst/nslsk.tst tst/nslsk_shapes.tst tst/open-closed-multiloc.scm
+  tst/open-closed-multiloc.tst tst/open-closed-multiloc_shapes.tst
+  tst/open-closed-tag.scm tst/open-closed-tag.tst
+  tst/open-closed-tag_shapes.tst tst/open-closed.scm
+  tst/open-closed.tst tst/open-closed_shapes.tst tst/or.scm tst/or.tst
+  tst/or_shapes.tst tst/ordered.scm tst/ordered.tst
+  tst/ordered_shapes.tst tst/pca.scm tst/pca.tst tst/pca_shapes.tst
   tst/pen-non-orig-test.scm tst/pen-non-orig-test.tst
-  tst/pfs-via-pubkey.scm tst/pfs-via-pubkey.tst tst/pkinit.scm
-  tst/pkinit.tst tst/preprocess.scm tst/preprocess.tst tst/print.scm
-  tst/print.tst tst/prottrans.scm tst/prottrans.tst tst/pruning1.scm
-  tst/pruning1.tst tst/puzzle_example.scm tst/puzzle_example.tst
-  tst/reflect.scm tst/reflect.tst tst/renamings.scm tst/renamings.tst
-  tst/role_uniq.scm tst/role_uniq.tst tst/rule-node.scm
-  tst/rule-node.tst tst/rule-order.scm tst/rule-order.tst
-  tst/sigenc.scm tst/sigenc.tst tst/sorted_epmo_acctnum.scm
-  tst/sorted_epmo_acctnum.tst tst/sts.scm tst/sts.tst
-  tst/sts_unflip.scm tst/sts_unflip.tst tst/sts_weak.scm
-  tst/sts_weak.tst tst/subatomic-open-closed-test-genrule.scm
+  tst/pen-non-orig-test_shapes.tst tst/pfs-via-pubkey.scm
+  tst/pfs-via-pubkey.tst tst/pfs-via-pubkey_shapes.tst tst/pkinit.scm
+  tst/pkinit.tst tst/pkinit_shapes.tst tst/preprocess.scm
+  tst/preprocess.tst tst/preprocess_shapes.tst tst/print.scm
+  tst/print.tst tst/print_shapes.tst tst/prottrans.scm
+  tst/prottrans.tst tst/prottrans_shapes.tst tst/pruning1.scm
+  tst/pruning1.tst tst/pruning1_shapes.tst tst/puzzle_example.scm
+  tst/puzzle_example.tst tst/puzzle_example_shapes.tst tst/reflect.scm
+  tst/reflect.tst tst/reflect_shapes.tst tst/renamings.scm
+  tst/renamings.tst tst/renamings_shapes.tst tst/role_uniq.scm
+  tst/role_uniq.tst tst/role_uniq_shapes.tst tst/rule-node.scm
+  tst/rule-node.tst tst/rule-node_shapes.tst tst/rule-order.scm
+  tst/rule-order.tst tst/rule-order_shapes.tst tst/sa.scm tst/sa.tst
+  tst/sigenc.scm tst/sigenc.tst tst/sigenc_shapes.tst
+  tst/sorted_epmo_acctnum.scm tst/sorted_epmo_acctnum.tst
+  tst/sorted_epmo_acctnum_shapes.tst tst/sts.scm tst/sts.tst
+  tst/sts_non_role.scm tst/sts_non_role.tst
+  tst/sts_weakened_reflect.scm tst/sts_weakened_reflect.tst
+  tst/subatomic-open-closed-dist.scm
+  tst/subatomic-open-closed-dist.tst
+  tst/subatomic-open-closed-test-genrule.scm
   tst/subatomic-open-closed-test-genrule.tst
+  tst/subatomic-open-closed-test-genrule_shapes.tst
   tst/subatomic-open-closed.scm tst/subatomic-open-closed.tst
-  tst/sync_locn_envelope.scm tst/sync_locn_envelope.tst
-  tst/targetterms1.scm tst/targetterms1.tst tst/targetterms2.scm
-  tst/targetterms2.tst tst/targetterms6.scm tst/targetterms6.tst
-  tst/targetterms8.scm tst/targetterms8.tst
-  tst/thisthat.scm tst/thisthat.tst tst/tickle-unique.scm
-  tst/tickle-unique.tst tst/timestamping.scm tst/timestamping.tst
-  tst/tnsl5.lisp tst/trust-anchor.scm tst/trust-anchor.tst
-  tst/uncarried_keys.scm tst/uncarried_keys.tst tst/unilateral.scm
-  tst/unilateral.tst tst/uniq-gen-test.scm tst/uniq-gen-test.tst
-  tst/uo.scm tst/uo.tst tst/updatetst tst/wang-hash.scm
-  tst/wang-hash.tst tst/wang-key-hash-tst.tst tst/wang-key-hash.scm
-  tst/wang-key-hash.tst tst/wang.lisp
-  tst/weakened-subatomic-open-closed.tst tst/weird.scm tst/weird.tst
-  tst/wide-mouth-frog-scyther.lsp tst/wide-mouth-frog-scyther.tst
-  tst/wide-mouth-frog.lsp tst/wide-mouth-frog.tst tst/wonthull.scm
-  tst/wonthull.tst tst/wonthull2.scm tst/wonthull2.tst
-  tst/wonthull3.scm tst/wonthull3.tst tst/woolam.scm tst/woolam.tst
-  tst/wrap_decrypt.tst tst/yahalom-6.3.6.scm tst/yahalom-6.3.6.tst
-  tst/yahalom.scm tst/yahalom.tst tst/blanchet-strandmax.scm
-  tst/blanchet-strandmax.tst tst/ugo.scm tst/ugo.tst
+  tst/subatomic-open-closed_shapes.tst tst/sync_locn_envelope.scm
+  tst/sync_locn_envelope.tst tst/sync_locn_envelope_shapes.tst
+  tst/targetterms1.scm tst/targetterms1.tst
+  tst/targetterms1_shapes.tst tst/targetterms2.scm
+  tst/targetterms2.tst tst/targetterms2_shapes.tst
+  tst/targetterms6.scm tst/targetterms6.tst
+  tst/targetterms6_shapes.tst tst/targetterms8.scm
+  tst/targetterms8.tst tst/targetterms8_shapes.tst tst/thisthat.scm
+  tst/thisthat.tst tst/thisthat_shapes.tst tst/tickle-unique.scm
+  tst/tickle-unique.tst tst/tickle-unique_shapes.tst
+  tst/timestamping.scm tst/timestamping.tst
+  tst/timestamping_shapes.tst tst/trust-anchor.scm
+  tst/trust-anchor.tst tst/trust-anchor_shapes.tst tst/ugen-at.scm
+  tst/ugen-at.tst tst/ugo.scm tst/ugo.tst tst/uncarried_keys.scm
+  tst/uncarried_keys.tst tst/uncarried_keys_shapes.tst
+  tst/unilateral.scm tst/unilateral.tst tst/unilateral_shapes.tst
+  tst/uniq-at.scm tst/uniq-at.tst tst/uniq-gen-test.scm
+  tst/uniq-gen-test.tst tst/uniq-gen-test_shapes.tst tst/uo.scm
+  tst/uo.tst tst/uo_shapes.tst tst/wang-hash.scm tst/wang-hash.tst
+  tst/wang-hash_shapes.tst tst/wang-key-hash-tst_shapes.tst
+  tst/wang-key-hash.scm tst/wang-key-hash.tst
+  tst/wang-key-hash_shapes.tst
+  tst/weakened-subatomic-open-closed_shapes.tst tst/weird.scm
+  tst/weird.tst tst/weird_shapes.tst tst/wide-mouth-frog-scyther.lsp
+  tst/wide-mouth-frog-scyther.tst
+  tst/wide-mouth-frog-scyther_shapes.tst tst/wide-mouth-frog.lsp
+  tst/wide-mouth-frog.tst tst/wide-mouth-frog_shapes.tst
+  tst/wonthull.scm tst/wonthull.tst tst/wonthull2.scm
+  tst/wonthull2.tst tst/wonthull2_shapes.tst tst/wonthull3.scm
+  tst/wonthull3.tst tst/wonthull3_shapes.tst tst/wonthull_shapes.tst
+  tst/woolam.scm tst/woolam.tst tst/woolam_shapes.tst
+  tst/wrap_decrypt_shapes.tst tst/yahalom-6.3.6.scm
+  tst/yahalom-6.3.6.tst tst/yahalom-6.3.6_shapes.tst
+  tst/yahalom-forward.scm tst/yahalom-forward.tst tst/yahalom.scm
+  tst/yahalom.tst tst/yahalom_shapes.tst tst/yes-or-no.scm
+  tst/yes-or-no.tst
   coq/Sem_tactics.v coq/Comp.v coq/Alt_sem.v coq/Match.v coq/Alg.v
   coq/Exec.v coq/Intro.v coq/Nonce.v coq/Preamble.v
   coq/Unilateral_proof.v coq/Makefile coq/Run.v coq/procdoc.tex
@@ -291,7 +359,7 @@
     CPSA.Lib.SExpr CPSA.Lib.Printer CPSA.Lib.Entry CPSA.Options
     CPSA.Algebra CPSA.Protocol CPSA.Strand CPSA.Characteristic
     CPSA.Channel CPSA.LoadFormulas CPSA.GenRules CPSA.Loader
-    CPSA.Displayer CPSA.Cohort
+    CPSA.Displayer CPSA.Cohort CPSA.Operation
     CPSA.Lib.Expand CPSA.Reduction CPSA.Signature
 
 Executable cpsa4sas
@@ -468,3 +536,41 @@
     CPSA.Lib.Printer CPSA.Lib.Entry CPSA.Lib.Expand
     CPSA.Lib.Utilities
     CPSA.Query.Loader CPSA.Query.Tree CPSA.Query.Query
+
+Executable cpsa4prolog
+  Main-Is:              CPSA/Prolog/Main.hs
+  Default-Language:     Haskell2010
+  Build-Depends:        base, containers
+  GHC-Options:
+    -Wall -fno-warn-name-shadowing -fwarn-unused-imports
+  Hs-Source-Dirs:       src
+  Other-Modules:
+    Paths_cpsa CPSA.Lib.Pretty CPSA.Lib.SExpr
+    CPSA.Lib.Printer CPSA.Lib.Entry CPSA.Lib.Expand
+    CPSA.Lib.Utilities
+    CPSA.Prolog.Loader CPSA.Prolog.Tree
+
+Executable cpsa4db
+  Main-Is:              CPSA/Db/Main.hs
+  Default-Language:     Haskell2010
+  Build-Depends:        base >= 4.13 && < 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.Options CPSA.Algebra
+    CPSA.Signature CPSA.Db.Loader CPSA.Db.Structs CPSA.Channel
+    CPSA.Protocol CPSA.Db.Tree CPSA.Db.Displayer
+
+Executable cpsa4dbprolog
+  Main-Is:              CPSA/DbProlog/Main.hs
+  Default-Language:     Haskell2010
+  Build-Depends:        base, containers
+  GHC-Options:
+    -Wall -fno-warn-name-shadowing -fwarn-unused-imports
+  Hs-Source-Dirs:       src
+  Other-Modules:
+    Paths_cpsa CPSA.Lib.SExpr CPSA.Lib.Pretty CPSA.Lib.Printer
+    CPSA.Lib.Entry CPSA.Lib.Utilities
+    
diff --git a/doc/cpsa4manual.pdf b/doc/cpsa4manual.pdf
Binary files a/doc/cpsa4manual.pdf and b/doc/cpsa4manual.pdf differ
diff --git a/doc/cpsaprimer.pdf b/doc/cpsaprimer.pdf
Binary files a/doc/cpsaprimer.pdf and b/doc/cpsaprimer.pdf differ
diff --git a/doc/cpsauser.html b/doc/cpsauser.html
--- a/doc/cpsauser.html
+++ b/doc/cpsauser.html
@@ -66,6 +66,9 @@
   JSON encoded CPSA into CPSA
   S-Expressions. The <a href="#cpsaquery"><code>cpsa4query</code></a>
   program queries CPSA output as derivation trees.
+  The <a href="#cpsaprolog"><code>cpsa4prolog</code></a>
+  translates CPSA output into Prolog so it can be analyzed using the
+  power of Prolog.
   Finally,
   the <a href="#cpsa42latex"><code>cpsa42latex</code></a> program
   translates CPSA macros into equivalent LaTeX macros.</p>
@@ -401,13 +404,14 @@
 associated with each strand is given by the <code>(traces ...)</code> form.
 Finally, the operation used to derive this skeleton from its parent is recorded
 with <code>(operation TEST KIND TERM NODE TERM*)</code>, where <code>TEST</code> is the
-authentication test <code>encryption-test</code> or <code>nonce</code>, <code>KIND</code>
+authentication test <code>encryption-test</code>, <code>nonce</code>,
+or <code>channel-test</code>; <code>KIND</code>
 is <code>(added-strand ID INT)</code>,
 <code>(displaced INT INT ID INT)</code>,
 <code>(contracted MAPLET*)</code>,
-<code>(added-listener TERM)</code>, or
-<code>TERM</code> is the critical term,
-<code>NODE</code> in the test node,
+<code>(added-listener TERM)</code>;
+<code>TERM</code> is the critical term;
+<code>NODE</code> in the test node;
 and the remaining terms specify the escape set.
 When the operation kind is augmenting, the instance's role name and height are
 provided.
@@ -1153,6 +1157,38 @@
 (has-key shape) 0 1
 $ cpsa4query query.txt tst/unilateral.txt
     1    3</pre>
+</blockquote>
+
+<h2 id="cpsaprolog">Querying CPSA Output Using Prolog</h2>
+
+<p>The <code>cpsa4prolog</code> program is used to analyze the
+output of CPSA.  It translates CPSA output into a Prolog database
+that captures the essential features of the output in a form that
+can be queried using all of the power of Prolog.</p>
+
+<p><code>cpsa4prolog</code> assembles the skeletons in the output into a
+forest of derivation trees.  It then prints the forest in Prolog
+syntax.  To be loadable by Prolog, the output must be sorted so that
+clauses of one predicate are colocated.  The sorting program provided
+in all dialects of Unix does the job.</p>
+
+<p>The output should be used by SWI Prolog as strings must not be atoms.
+Load the file generated by <code>cpsa4prolog</code>
+using <code>consult/1</code>.  Next load your query.  The
+file <code>src/cpsa4prolog.pl</code> in a source distribution
+contains useful predicates that may help formulate your query.  The
+comments for each predicate are intended help users understand the
+output format.</p>
+
+
+<h3>Usage</h3>
+
+<blockquote>
+  <pre>$ cpsa4prolog -h
+Usage: cpsa4prolog [OPTIONS] [FILE]
+  -o FILE  --output=FILE  output FILE
+  -h       --help         show help message
+  -v       --version      show version number</pre>
 </blockquote>
 
 <h2>S-expressions</h2>
diff --git a/doc/src/cpsa4manual/algebra.tex b/doc/src/cpsa4manual/algebra.tex
--- a/doc/src/cpsa4manual/algebra.tex
+++ b/doc/src/cpsa4manual/algebra.tex
@@ -15,16 +15,25 @@
 along with the \texttt{data, text, name, skey,} and \texttt{akey}
 sorts, and the \texttt{pubk, privk, invk, enc,} and \texttt{cat}
 function symbols.  In addition to these, the basic cryptoalgebra
-contains the sorts \ttindex{tag} \texttt{tag} and \texttt{mesg}, and the \texttt{ltk}
-and \texttt{hash} function symbols, and string constants.
+contains the sorts \ttindex{tag} \texttt{tag} and \texttt{mesg}, and
+the \texttt{ltk} and \texttt{hash} function symbols, and string
+constants.
 
-The Diffie-Hellman cryptoalgebra introduces three further sorts,
-\texttt{base, rndx,} and \texttt{expt}, and six new function symbols,
-\texttt{bltk, exp, rec, mul, gen,} and \texttt{one}.  For performance
-reasons, one should always avoid using variables of sort
-\texttt{base}.  Instead, replace the variable with \texttt{(exp (gen)
-  x)}, where \texttt{x} is a variable of sort \texttt{expt}.
+The Diffie-Hellman cryptoalgebra introduces two further sorts,
+\texttt{rndx} and \texttt{expt}, and six new function symbols,
+\texttt{bltk, exp, rec, mul, gen,} and \texttt{one}.
 
+At one time variables of sort \texttt{base} were also permitted, but a
+variable \texttt{b} of sort \texttt{base} has the same meaning as a
+term \texttt{(exp (gen) alpha)} where \texttt{alpha} is of sort
+\texttt{expt}.  Eliminating variables of sort \texttt{base} allows us
+to eliminate some tricky but conceptually unnecessary, even
+practically unnecessary, code.  Thus, replace these variables with
+\texttt{(exp (gen) alpha)}, where \texttt{alpha} is a variable of sort
+\texttt{expt}.  We still refer to these \emph{terms} as having sort
+\texttt{base}, since they may be the bases for further exponentiation,
+but there are no variables of this sort.
+
 In this chapter we will explain these additional features with
 examples.  In Section~\ref{sec:kerberos}, we will discuss the
 \texttt{ltk} function symbol and the use of the \texttt{mesg} sort,
@@ -309,11 +318,14 @@
 Version 3 of {\cpsa} introduces the Diffie-Hellman algebra, which
 allows for analysis of protocols that incorporate Diffie-Hellman
 techniques.  The Diffie-Hellman algebra includes all the function
-symbols and sorts available in the basic algebra, plus three
-additional sorts: two sorts (\texttt{rndx} and \texttt{expt}) for
-exponents such as $x$, and \texttt{base}, for exponentiated values
-such as $g^x$.  The Diffie-Hellman specific functions symbols are as
-follows:
+symbols and sorts available in the basic algebra, plus two additional
+sorts of variable, namely the two sorts \texttt{rndx} and
+\texttt{expt} for exponents such as $x$.
+%   
+%   , for
+%   exponentiated values such as $g^x$.
+%   
+The Diffie-Hellman specific functions symbols are as follows:
 
 \begin{itemize}
 \item \texttt{exp} represents exponentation.  For example, $h^x$ is
@@ -384,17 +396,17 @@
 \label{fig:plaindh defprotocol}
 \end{figure}
 
-\ttindex{rndx} \ttindex{expt}
-Note that the initiator uses a variable $x$ of the \texttt{rndx} sort
-to represent its own random variable, and a variable $y$ of the
-\texttt{expt} sort to represent the exponent present in the base value
-it receives from the initiator.  Distinct values of the \texttt{rndx}
-sort model distinct independent random choices of exponents, while
-\texttt{expt} values merely represent arbitrary exponents which may or
-may not be calculated as some product of other known values.  Here,
-since the initiator chooses their own exponent, we model $x$ as an
-\texttt{rndx} value.  But since the initiator cannot know how the base value
-$g^y$ was calculated, we model $y$ as an \texttt{expt} value.
+\ttindex{rndx} \ttindex{expt} Note that the initiator uses a variable
+$x$ of the \texttt{rndx} sort to represent its own random variable,
+and a variable $y$ of the \texttt{expt} sort to represent the exponent
+present in the base value \texttt{(exp (gen) y)} it receives from the
+initiator.  Distinct values of the \texttt{rndx} sort model distinct
+independent random choices of exponents, while \texttt{expt} values
+merely represent arbitrary exponents which may or may not be
+calculated as some product of other known values.  Here, since the
+initiator chooses their own exponent, we model $x$ as an \texttt{rndx}
+value.  But since the initiator cannot know how the base value $g^y$
+was calculated, we model $y$ as an \texttt{expt} value.
 
 Note that unlike the example in Section~\ref{sec:kerberos},
 where receiving a specifically formatted encryption in a protocol role
diff --git a/doc/src/cpsa4manual/algorithm.tex b/doc/src/cpsa4manual/algorithm.tex
--- a/doc/src/cpsa4manual/algorithm.tex
+++ b/doc/src/cpsa4manual/algorithm.tex
@@ -52,7 +52,7 @@
 \index{skeleton!realized} A \emph{realized} skeleton is one in which
 every reception is explainable given the assumed restrictions on the
 attacker.  The attacker is capable of producing every basic value
-(that is, every possible value of the base sorts
+(that is, every possible value of the basic sorts
 $\scap{data},\scap{text},\scap{name},\scap{akey},\scap{skey},$ and
 $\scap{rndx}$), except for those specifically withheld from the
 adversary.  The values withheld are the ones for which there is one of
@@ -180,6 +180,8 @@
   test node was an encryption.
 \item \texttt{nonce-test} indicates that the critical term at the test
   node was an atom, not an encryption.
+\item \texttt{channel-test} indicates that the critical term at the test
+  node was an authenticated channel message.
 \item \texttt{generalization} indicates that the skeleton was realized
   and the tool is trying to make it more general without making it
   unrealized.
@@ -250,3 +252,8 @@
 a skeleton, while Item 7 adds a key server instance in which the key
 server agrees with the initiator on $a$ but not on $b$.  But Item 7 is
 a realized skeleton, while Item 2 is not realized.
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "cpsa4manual"
+%%% End:
diff --git a/doc/src/cpsa4manual/basic.tex b/doc/src/cpsa4manual/basic.tex
--- a/doc/src/cpsa4manual/basic.tex
+++ b/doc/src/cpsa4manual/basic.tex
@@ -698,23 +698,31 @@
 but were lost due to the removal of the role declaration.
 \end{exercise}
 
-\begin{exercise}
-Starting from your modified version of the Blanchet protocol from
-Exercise~\ref{ex:noroledecls_blanchet}, add a \texttt{uniq-orig} declaration
-on $s$ to the point of view with a responder instance and a listener for $d$.
+\iffalse{
+    % This exercise illustrates the CPSA 3 restriction on uniq-orig
+    % assumptions for values that do not have a point of origination
+    % in the skeleton already.  This restriction no longer exists in
+    % CPSA 4 -- it is not needed -- so we have edited out the
+    % exploration 
+    
+    \begin{exercise}
+      Starting from your modified version of the Blanchet protocol from
+      Exercise~\ref{ex:noroledecls_blanchet}, add a \texttt{uniq-orig} declaration
+      on $s$ to the point of view with a responder instance and a listener for $d$.
 
-This should produce an error message, because {\cpsa} expects that for
-every value declared to be uniquely originating, that value originates
-at some point in the skeleton.  When only the responder's strand and
-the listener are present, $s$ does not originate; it is received by
-the responder before being used in an outgoing message, and it does
-not occur on the listener strand at all.
+      This should produce an error message, because {\cpsa} expects that for
+      every value declared to be uniquely originating, that value originates
+      at some point in the skeleton.  When only the responder's strand and
+      the listener are present, $s$ does not originate; it is received by
+      the responder before being used in an outgoing message, and it does
+      not occur on the listener strand at all.
 
-Now add a \texttt{defstrand} adding an instance of an initiator
-(height 1), using the same $s$, and declare $s$ to be uniquely
-originating.  Check that the resulting shape is the same attack shape
-as in the unmodified \texttt{blanchet.xhtml}.
-\end{exercise}
+      Now add a \texttt{defstrand} adding an instance of an initiator
+      (height 1), using the same $s$, and declare $s$ to be uniquely
+      originating.  Check that the resulting shape is the same attack shape
+      as in the unmodified \texttt{blanchet.xhtml}.
+    \end{exercise}}
+\fi 
 
 %  See Section~\ref{sec:role_decls2} for more about how role
 %  declarations work.
diff --git a/doc/src/cpsa4manual/channels_state.tex b/doc/src/cpsa4manual/channels_state.tex
--- a/doc/src/cpsa4manual/channels_state.tex
+++ b/doc/src/cpsa4manual/channels_state.tex
@@ -21,6 +21,7 @@
 long-term, cross-session mutable state in {\cpsa}.  The goal of this
 chapter is to explain how to use the {\cpsa} channel mechanism, and to
 build on that understanding to work with long-term mutable state.
+\index{channel}
 
 \paragraph{Channel security guarantees.}  The most important
 guarantees are \emph{authenticated} channels and \emph{confidential}
@@ -31,12 +32,14 @@
   \item An authenticated channel guarantees to the recipient of a
   message that this message was sent by some instance of a role of the
   protocol.
+  \index{channel!authenticated}
   \item A confidential channel guarantees to the sender that this
   transmission will not be received by the adversary, i.e.~that any
   recipient is an instance of a role of the protocol.  Hence, any
   disclosure of not-yet-public parts of the message occur only if the
   message is received and acted on by one or more instances of
-  protocol roles.
+  protocol roles.  \index{channel!confidential}
+
 \end{itemize}
 %
 A channel that is both \emph{authenticated} and \emph{confidential} is
@@ -143,6 +146,11 @@
     (conf ch-name-2)
 \end{verbatim}
 %
+\index{channel!annotations}
+\ttindex{auth}
+\ttindex{conf}
+
+
 As with annotations such as \verb|uniq-orig| and \verb|non-orig|,
 these can appear either within a \verb|defskeleton| query form or
 within a \verb|defrole| role declaration.  As in the previous cases,
@@ -430,13 +438,18 @@
 the same value, a transition event ensures that the new value is the
 only value available from this location.  This fact---that transitions
 erase the past---is the essential characteristic of mutable state.
+\index{mutable state}
+\index{state}
 
+
 \paragraph{``Leads to.''}  When a state transition event $n_0$ writes
 a value $v$ into a state location $\ell$, and a later observation or
 transition event $n_1$ obtains this value $v$ from $\ell$, without any
 other transitions having occurred to $\ell$ in between, we say that
 $n_0$ \emph{leads to} $n_1$, and we write $n_0\leadsto n_1$.
+\index{leads-to relation}
 
+
 Thus, when $n_0\leadsto n_1$ the following conclusions hold:
 \begin{renumerate}
   \item $n_0$ and $n_1$ are events on the same location $\ell$;
@@ -504,12 +517,13 @@
       *+[F]{m_1}\ar@{~>}[ddl]\\
       & & & \Longrightarrow   \\
       & n && && n}
-  \]
+  \] 
   \caption[Leads-to axioms]{Two axioms about state events on the same
     location $\ell$}
   \label{fig:leads:to}
 \end{figure}
 %
+\index{mutable state!axioms}
 
 In each case, the events $n,m_0,m_1$ are all state events on the same
 location $\ell$.
@@ -665,6 +679,8 @@
 \verb|locn|.  Its intent is to open a door in response to a suitable
 encrypted command, conforming its action.
 %
+\ttindex{locn} 
+%
 \begin{figure}\small
   %
 \begin{verbatim}(defrole dev-open
@@ -696,7 +712,10 @@
 A \verb|load| or \verb|stor| event always contains a location variable
 followed by a message term, just like a channel \verb|send| or
 \verb|recv| (Section~\ref{sec:channels:state:ch}).
+\ttindex{load}
+\ttindex{stor}
 
+
 Observe that the \verb|stor| event immediately follows a \verb|load|
 event, and this is in fact always the case.  Since together they
 represent a transition that consumes an old value that will no longer
@@ -763,6 +782,7 @@
 \end{enumerate}
 %
 These are the transition rules.
+\ttindex{trans}
 
 The second kind are the \emph{generated state value rules}.  As we
 mentioned at the start, a generated state value is a value $v$ that is
@@ -771,6 +791,7 @@
 acting like an authenticated channel for $v$.  In particular {\cpsa}
 will consider which instances of the roles could previously have
 stored $v$ into $\ell$; one of those must be present.
+\index{generated state value}
 
 A generated state assumption may be introduced as a per-strand
 assumption, akin to the declarations discussed in
@@ -787,7 +808,9 @@
 This \texttt{gen-st} declaration says that the particular tuple
 \texttt{(dev-key-state d o k)} using the values of the variables that
 appear in this strand forms a generated state value.
+\ttindex{gen-st}
 
+
 A generated state assumption may be introduced as a role-level
 assumption, akin to the declarations discussed in
 Section~\ref{sec:channels:state:ch:role:level}.  In this case, the
@@ -869,7 +892,7 @@
 generate the rules in Fig.~\ref{fig:critical:section:rules}.  They are
 of value only when the state segment has multiple loads or multiple
 stores.  In this particular example, the critical section declaration
-does not in fact make a difference to the analysis.
+does not in fact make a difference to the analysis. 
 %
 \label{state:gen:rules:end}
 
diff --git a/doc/src/cpsa4manual/cpsa4manual.tex b/doc/src/cpsa4manual/cpsa4manual.tex
--- a/doc/src/cpsa4manual/cpsa4manual.tex
+++ b/doc/src/cpsa4manual/cpsa4manual.tex
@@ -43,7 +43,7 @@
   {\Large The MITRE Corporation}\\ \\ CPSA Version \version}
 
 \makeindex
-\begin{document}
+\begin{document} 
 
 \ifpubrel
 \thispagestyle{title}
diff --git a/doc/src/cpsa4manual/cpsaprimer.tex b/doc/src/cpsa4manual/cpsaprimer.tex
--- a/doc/src/cpsa4manual/cpsaprimer.tex
+++ b/doc/src/cpsa4manual/cpsaprimer.tex
@@ -155,11 +155,11 @@
 {\cpsa}'s use of order-sorted algebras is beyond the scope of this
 paper.
 
-The sorts that correspond to the atomic values are the base
+The sorts that correspond to the atomic values are the basic
 sorts---for \textsc{bca} they are \fn{text}, \fn{data}, \fn{name},
-\fn{akey}, and \fn{skey}.  The non-base sort is
-\fn{mesg}.  Every term is of sort~\fn{mesg}, and every one of the
-other sorts is a subsort of~\fn{mesg}.\index{sort}
+\fn{akey}, and \fn{skey}.  The non-basic sort is \fn{mesg}.  Every
+term is of sort~\fn{mesg}, and every one of the other sorts is a
+subsort of~\fn{mesg}.\index{sort}
 
 The simplest term is a variable, which syntactically is a
 \textsc{symbol} as described in Appendix~\ref{sec:syntax reference}.
@@ -182,7 +182,7 @@
 Two names can be used to identify a long
 term symmetric key with the \texttt{ltk} operator.
 
-Terms formed from base sorted variables, and the operators
+Terms formed from basic sorted variables, and the operators
 \texttt{invk}, \texttt{pubk}, \texttt{privk}, and \texttt{ltk} are
 called atoms, because each one represents an atomic value.  A key
 property of an atom is that the receiver of an atom carried in a
@@ -210,8 +210,8 @@
 traditional notation and \texttt{(hash $t$)} in S-expression syntax.
 {\cpsa} treats a hashed term as if it were an encryption in which the
 term that is hashed is the encryption key.  As with encryption,
-\texttt{(hash $a$ $b$ $c$ $d$)} is equivalent to \texttt{hash (cat $a$
-  $b$ $c$ $d$))}.  Figure~\ref{fig:ns responder} on
+\texttt{(hash $a$ $b$ $c$ $d$)} is equivalent to \texttt{(hash (cat
+  $a$ $b$ $c$ $d$))}.  Figure~\ref{fig:ns responder} on
 Page~\pageref{fig:ns responder} contains examples of \textsc{bca}
 message terms.  Also see \textsc{term} in Table~\ref{tab:syntax},
 Appendix~\ref{sec:syntax reference}.
diff --git a/doc/src/cpsa4manual/declarations.tex b/doc/src/cpsa4manual/declarations.tex
--- a/doc/src/cpsa4manual/declarations.tex
+++ b/doc/src/cpsa4manual/declarations.tex
@@ -74,6 +74,9 @@
 
 \index{origination} We say that a value \emph{originates} on a strand
 when its first \emph{carried} occurrence is in a transmission.
+\index{generation} We say that a value \emph{generates} on a strand
+when its first occurrence (whether carried or not) in that strand is
+in a transmission.
 
 \begin{itemize}
 \index{origination!unique}
@@ -102,20 +105,37 @@
 value uniquely originates, is non-originating, or is penetrator
 non-originating, respectively.
 
-\ttindex{uniq-gen} \index{generation} The fourth declaration that
-imposes a secrecy assumption is the \texttt{uniq-gen} declaration.  We
-say that a value \emph{generates} on a strand when its first
-occurrence (carried or not) in that strand is in a transmission.  The
-presence of a \texttt{uniq-gen} declaration of a value equates to a
-restriction to bundles in which the declared value generates on only
-one strand.  Note that if a value that generates uniquely generates on
-a regular strand, it cannot be produced in a ``create'' instance.
+\ttindex{uniq-gen} The fourth declaration that imposes a secrecy
+assumption is the \texttt{uniq-gen} declaration.  The presence of a
+\texttt{uniq-gen} declaration of a value equates to a restriction to
+bundles in which the declared value generates on only one strand.
+Note that if a value that generates uniquely generates on a regular
+strand, it cannot be produced in a ``create'' instance.
 
 The \texttt{uniq-orig} (resp. \texttt{uniq-gen}) declaration can only
 be used in {\cpsa} input for values that do originate (resp. generate)
 on the role or in the skeleton in which the declaration appears.  This
 forces the use of such declarations to create a secrecy assumption.
 
+Because ``generation'' covers a wider set of occurrences than
+``origination,'' a value that originates uniquely on one strand may
+still generate on a different strand.  For instance, it may be used to
+encrypt a message on that strand.  This means that one can model a key
+(for instance) that is distributed from a point of unique origination,
+and subsequently used to encrypt messages on other strands, without
+modeling a particular mechanism for storing it in the recipient's
+device.  This property of origination and generation can, however,
+cause surprises if the key could surface unexpectedly in other
+strands.  See Chapter~\ref{chap:channels:state} to understand how to
+store values explicitly, when that is desired.
+
+In fact, because ``generation'' covers a wider set of occurrences than
+``origination,'' when a value $v$ originates on a strand, declaring
+$v$ \texttt{uniq-gen} is actually stronger than declaring it
+\texttt{uniq-orig}.  The \texttt{uniq-gen} declaration prohibits
+unexplained key usage, as opposed to the \texttt{uniq-orig}
+declaration that permits it.  
+
 \begin{exercise}
 Experiment with variants of your favorite simple protocol in which you
 try replacing \texttt{uniq-orig} with \texttt{uniq-gen} and/or
@@ -144,9 +164,9 @@
 \begin{itemize}
 
   \item \ttindex{absent} The \texttt{absent} declaration specifies
-    that a particular \scap{rndx} variable does not occur in a base or
+    that a particular \scap{rndx} variable does not occur in an % base or
     exponent expression.  This declaration is automatically added to
-    specify $x$ is absent within $y$ whenever $y$ is a base or
+    specify $x$ is absent within $y$ whenever $y$ is an %  base or
     exponent expression that occurs in a strand in which $x$ is
     declared \texttt{uniq-gen} before the point where $x$ is
     generated.  This declaration is also added by the algorithm in
@@ -347,13 +367,12 @@
 \begin{itemize}
 
   \item \ttindex{absent} The \texttt{absent} declaration specifies
-    that a particular \scap{rndx} variable does not occur in a base or
-    exponent expression.  This declaration is automatically added to
-    specify $x$ is absent within $y$ whenever $y$ is a base or
-    exponent expression that occurs in a strand in which $x$ is
-    declared \texttt{uniq-gen} before the point where $x$ is
-    generated.  This declaration is also added by the algorithm in
-    rare circumstances.
+  that a particular \scap{rndx} variable does not occur in an % base or
+  exponent expression.  This declaration is automatically added to
+  specify $x$ is absent within $y$ whenever $y$ is an % base or
+  exponent expression that occurs in a strand in which $x$ is declared
+  \texttt{uniq-gen} before the point where $x$ is generated.  This
+  declaration is also added by the algorithm in rare circumstances.
 
   \item \ttindex{precur} The \texttt{precur} declaration specifies
     that a particular node is present in the skeleton to be the
diff --git a/doc/src/cpsa4manual/goals.tex b/doc/src/cpsa4manual/goals.tex
--- a/doc/src/cpsa4manual/goals.tex
+++ b/doc/src/cpsa4manual/goals.tex
@@ -30,26 +30,31 @@
 \begin{table}
 \begin{center}\scshape
   \begin{tabular}{rcl}
- goal&$\leftarrow$&(\sym{defgoal} id sentence+ alist)
-\\ sentence&$\leftarrow$&(\sym{forall} (gvdecl$\ast$) implication)
-\\ gvdecl&$\leftarrow$&(id+ sort)~$\mid$~(id+ \sym{strd})~$\mid$~(id+ \sym{indx})
-\\ implication&$\leftarrow$&(\sym{implies} conjunction conclusion)
-\\ conjunction&$\leftarrow$&atomic~$\mid$~(\sym{and} atomic+)
-\\ conclusion&$\leftarrow$&(\sym{false})~$\mid$~existential
-\\ &$\mid$& (\sym{or} existential+)
-\\ existential&$\leftarrow$&conjunction~$\mid$~(\sym{exists} (gvdecl$\ast$) conjunction)
-\\ atomic&$\leftarrow$&(\sym{p} string strdvar integer)
-\\ &$\mid$&(\sym{p} string string strdvar term)
-\\ &$\mid$&(\sym{prec} strdvar index strdvar index)
-\\ &$\mid$&(\sym{leads-to} strdvar index strdvar index)
-\\ &$\mid$&(\sym{non} term)~$\mid$~(\sym{pnon} term)
-\\ &$\mid$&(\sym{uniq} term)~$\mid$~(\sym{uniq-at} term strdvar index)
-\\ &$\mid$&(\sym{ugen} term)~$\mid$~(\sym{ugen-at} term strdvar index)
-\\ &$\mid$&(\sym{=} strdvar strdvar)~$\mid$~(\sym{=} term term)
-    \\ &$\mid$&(\sym{fact} id term*)
-                %~$\mid$~(\sym{absent} (term term)+)
-\\ strdvar&$\leftarrow$&symbol
-\\ index&$\leftarrow$&symbol~$\mid$~integer
+    goal&$\leftarrow$&(\sym{defgoal} id sentence+ alist)
+    \\ sentence&$\leftarrow$&(\sym{forall} (gvdecl$\ast$) implication)
+    \\ gvdecl&$\leftarrow$&(id+ sort)~$\mid$~(id+ \sym{strd})~$\mid$~(id+ \sym{indx})
+    \\ implication&$\leftarrow$&(\sym{implies} conjunction conclusion)
+    \\ conjunction&$\leftarrow$&atomic~$\mid$~(\sym{and} atomic+)
+    \\ conclusion&$\leftarrow$&(\sym{false})~$\mid$~existential
+    \\ &$\mid$& (\sym{or} existential+)
+    \\ existential&$\leftarrow$&conjunction~$\mid$~(\sym{exists} (gvdecl$\ast$) conjunction)
+    \\ atomic&$\leftarrow$&(\sym{p} string strdvar integer)
+    \\ &$\mid$&(\sym{p} string string strdvar term)
+    \\ &$\mid$&(\sym{prec} strdvar index strdvar index)
+    \\ &$\mid$&(\sym{leads-to} strdvar index strdvar index)
+    \\ &$\mid$&(\sym{non} term)~$\mid$~(\sym{pnon} term)
+    \\ &$\mid$&(\sym{uniq} term)~$\mid$~(\sym{uniq-at} term strdvar index)
+    \\ &$\mid$&(\sym{ugen} term)~$\mid$~(\sym{ugen-at} term strdvar index)
+    \\ &$\mid$&(\sym{conf} term)~$\mid$~(\sym{auth} term)
+    \\ &$\mid$&(\sym{=} strdvar strdvar)~$\mid$~(\sym{=} term term)
+    \\ &$\mid$&(\sym{gen-st} term)~$\mid$~(\sym{trans} strdvar index)
+    \\&$\mid$&(\sym{comm-pr} strdvar index strdvar index)
+    \\&$\mid$&(\sym{state-node} strdvar index) 
+    \\&$\mid$&(\sym{same-locn} strdvar index strdvar index) 
+    \\ &$\mid$&(\sym{component} term term)~$\mid$~(\sym{fact} id term*)
+    % ~$\mid$~(\sym{absent} (term term)+)
+    \\ strdvar&$\leftarrow$&symbol
+    \\ index&$\leftarrow$&symbol~$\mid$~integer
   \end{tabular}
 \end{center}
 \caption[Goal syntax]{Goal syntax.  See Tables~\ref{tab:basic_term}
@@ -66,7 +71,7 @@
 examples and examine the output while reading this chapter.
 
 %% Use a margin width of 62 for S-expressions
-
+\iffalse 
 \begin{figure}
 \begin{center}
 \includegraphics{cpsadiagrams-0.mps}\hfil
@@ -94,7 +99,7 @@
 \caption{Needham-Schroeder Initiator and Responder Roles}
 \label{fig:ns roles 2}
 \end{figure}
-
+\fi 
 \begin{figure}
 \begin{verbatim}
 (defgoal ns                ; Goal
@@ -132,7 +137,8 @@
 \index{examples!Needham-Schroeder!logical goals in}
 In this chapter we return to the Needham-Schroeder protocol discussed
 in Chapter~\ref{ch:basic}.  The roles are displayed in
-Figure~\ref{fig:ns roles 2}.
+Figure~%\ref{fig:ns roles 2}.
+\ref{fig:ns defprotocol}.
 
 The protocol is analyzed from the point of view of a complete run of
 one instance of the initiator role.  The input security goal, followed
@@ -292,6 +298,20 @@
 not.  If an atom is an asymmetric key, it and its inverse are
 generated together at the first outbound occurrence of either one.
 
+Predicates \texttt{conf} and \texttt{auth} hold true of
+\emph{channels}, when those channels are assumed to be confidential or
+authenticated channels as described in
+Chapter~\ref{chap:channels:state}.  The \texttt{gen-st} predicate
+holds true of a message value that cannot be an unexplained value in a
+state location, but can only be the result of a transition caused by a
+regular role (Section~\ref{sec:channels:state:state}).  The
+\texttt{leads-to} predicate relates a pair of nodes when the former
+creates a state value in a location, and the latter reads it from that
+location with no intervening transitions
+(Section~\ref{sec:channels:state:state}).  The \texttt{comm-pr},
+\texttt{comm-pr}, and \texttt{state-node} predicates are used mainly
+internally to {\cpsa}.   
+
 \iffalse{
     %
     In the Diffie-Hellman algebra (see Section~\ref{sec:input:dh}), a
@@ -553,13 +573,13 @@
 Support for rules was introduced in version 3.6.0 of {\cpsa}.
 
 Each protocol includes a small collection of rules.  A rule is a
-sentence in the goal language presented in Section~\ref{sec:goalsyntax}.
-Rules are defined after the roles of a protocol are defined.  The
-syntax of a rule follows.
+sentence in the goal language presented in
+Table~\ref{tab:goal_syntax}.  Rules are defined after the roles of a
+protocol are defined.  The syntax of a rule follows.
 
 \begin{center}\scshape
   \begin{tabular}{rcl}
-    rule&$\leftarrow$&(\sym{defrule} name sent comments)
+    rule&$\leftarrow$&(\sym{defrule} name sentence comments)
   \end{tabular}
 \end{center}
 
diff --git a/doc/src/cpsa4manual/input.tex b/doc/src/cpsa4manual/input.tex
--- a/doc/src/cpsa4manual/input.tex
+++ b/doc/src/cpsa4manual/input.tex
@@ -277,7 +277,9 @@
 %
 \begin{tabular}{|lll|}
 \multicolumn{3}{c}{Sorts}\\ \hline
-Sorts: & \multicolumn{2}{l|}{\scap{name}, \scap{text}, \scap{data}, \scap{tag}, \scap{skey}, \scap{akey}, \scap{base}  $<$ \scap{mesg}} \\
+Sorts: & \multicolumn{2}{l|}{\scap{name}, \scap{text}, \scap{data},
+         \scap{tag}, \scap{skey}, \scap{akey}%, \scap{base}
+         $<$ \scap{mesg}} \\
        & \multicolumn{2}{l|}{\scap{rndx} $<$ \scap{expt} $<$ \scap{mesg}} \\
   &  \multicolumn{2}{l|}{\scap{chan}, \scap{locn} $<$ \scap{mesg}}
 \\ \hline \multicolumn{3}{c}{Operations}\\ \hline
@@ -333,27 +335,30 @@
 \label{tab:dh_algebra_signature}
 \end{table}
 
-\ttindex{expt}
-In Section~\ref{sec:dh} we discussed modeling Diffie-Hellman in
-{\cpsa}, but we said almost nothing about the $\scap{expt}$ sort that
-features prominently in the algebra signature.  Our message model for
-Diffie-Hellman has two sorts of exponents.  The $\scap{rndx}$ sort is
-for exponents that are to be thought of as atomic values.  Randomly
-chosen exponents should always be of this sort, which is why
-\texttt{rndx} appears exclusively in our examples, while \texttt{expt}
-does not.  The $\scap{expt}$ sort is for compound expressions
-involving exponents.  There may also be variables of this sort, but
-they should not appear in protocol roles, and even using them in a
-\texttt{defskeleton} is unusual.  However, they do appear in the
-output with some frequency, due to one of two kinds of bits of
-reasoning: first, a base variable (say, $h$) may be rewritten as an
-explicit power of $g$.  When this happens, since $h$ could stand for
-any power of $g$ including a power with a complex variable, if we
-rewrite $h$ as $g^z$, $z$ will need to be of the generic $\scap{expt}$
-sort so that those possibilities are covered.  Second, {\cpsa} will
-sometimes assume the presence of a value in some instance related to
-another one, and a generic $\scap{expt}$ variable is used to capture
-the somewhat arbitrary relationship between the two.
+\ttindex{expt} In Section~\ref{sec:dh} we discussed modeling
+Diffie-Hellman in {\cpsa}, but we said almost nothing about the
+$\scap{expt}$ sort that features prominently in the algebra signature.
+Our message model for Diffie-Hellman has two sorts of exponents.  The
+$\scap{rndx}$ sort is for exponents that are to be thought of as
+atomic values.  Randomly chosen exponents should always be of this
+sort, which is why \texttt{rndx} appears exclusively in our examples,
+while \texttt{expt} does not.  The $\scap{expt}$ sort is for compound
+expressions involving exponents, or values \texttt{(exp (gen) alpha)}
+that are received with unconstrained exponent.  There may also be
+variables of this sort, but they should not first occur in
+transmissions in protocol roles.
+%   ,
+%   and even using them in a \texttt{defskeleton} is unusual.
+%   However, they do appear in the output with some frequency, due to one
+%   of two kinds of bits of reasoning: first, a base variable (say, $h$)
+%   may be rewritten as an explicit power of $g$.  When this happens,
+%   since $h$ could stand for any power of $g$ including a power with a
+%   complex variable, if we rewrite $h$ as $g^z$, $z$ will need to be of
+%   the generic $\scap{expt}$ sort so that those possibilities are
+%   covered.  Second, {\cpsa} will sometimes assume the presence of a
+%   value in some instance related to another one, and a generic
+%   $\scap{expt}$ variable is used to capture the somewhat arbitrary
+%   relationship between the two.
 
 Table~\ref{tab:dh_term} describes the grammar for Diffie-Hellman
 crypto algbera messages in the input syntax.  Symbols in the grammar
@@ -368,7 +373,8 @@
 \\ alg&$\leftarrow$&$\sym{diffie-hellman}$
 \\
   sort&$\leftarrow$&$\sym{text}\mid\sym{data}\mid\sym{name}\mid\sym{tag}\mid\sym{skey}\mid\sym{akey}$
-\\ &$\mid$ & $\sym{rndx}~\mid\sym{expt}\mid\sym{base}\mid\sym{chan}\mid\sym{locn}\mid\sym{mesg}\mid$ id
+  \\ &$\mid$ & $\sym{rndx}~\mid\sym{expt}\mid%\sym{base}\mid
+               \sym{chan}\mid\sym{locn}\mid\sym{mesg}\mid$ id
 \\ id&$\leftarrow$&symbol
 \\ term&$\leftarrow$&
 $\mbox{id}\mid(\sym{pubk}\mbox{ id})
diff --git a/doc/src/cpsa4manual/troubleshooting.tex b/doc/src/cpsa4manual/troubleshooting.tex
--- a/doc/src/cpsa4manual/troubleshooting.tex
+++ b/doc/src/cpsa4manual/troubleshooting.tex
@@ -130,9 +130,12 @@
 \item \textbf{``Algebra.absenceSubst: bad absence assertion''} or
   \textbf{``Algebra.nullifyOne: unexpected pattern''} The
   \texttt{absent} declaration must be declared on a pair where the
-  first element is an \scap{rndx} variable and the second element is either
-  an exponent or a \scap{base} term.  These errors should not occur if you
-  did not give {\cpsa} an input with an absent declaration.
+  first element is an \scap{rndx} variable and the second element is 
+  an exponent.
+  % or a \scap{base} term.
+  %
+  These errors should not occur if you did not give {\cpsa} an input
+  with an absent declaration.
 
 \item \textbf{``Algebra.inv: Cannot invert a variable of sort mesg''}.
   Variables of the \texttt{mesg} sort should never be used as the key
@@ -353,10 +356,10 @@
   Section~\ref{sec:secrecy_assumptions} fr an explanation of
   ``carried.''
 
-\item \textbf{``Role not well formed: variable [...] not obtained''}.
-  Variables of the $\scap{base}$ or $\scap{expr}$ sort must be
-  ``obtained'' when used in roles, meaning that the first occurrence
-  must be in a reception.
+  \item \textbf{``Role not well formed: variable [...] not
+    obtained''}.  Variables of the %$\scap{base}$ or
+  $\scap{expr}$ sort must be ``obtained'' when used in roles, meaning
+  that the first occurrence must be in a reception.
 
 \item \textbf{``[Role / Skeleton] not well formed: inequality
   conditions violated''}.  A \texttt{neq} declaration is false where
diff --git a/doc/src/cpsaprimer.tex b/doc/src/cpsaprimer.tex
--- a/doc/src/cpsaprimer.tex
+++ b/doc/src/cpsaprimer.tex
@@ -984,13 +984,13 @@
 \index{operation}\texttt{(operation~}\textsc{test kind term node
   term$\ast$}\texttt{)}, where \textsc{test} is the authentication
 test \texttt{encryption-test}, \texttt{nonce-test}, or
-\texttt{channel-test},
+\texttt{channel-test};
 \textsc{kind} is
 \texttt{(added-strand} \textsc{id} \textsc{integer}\texttt{)},
 \texttt{(displaced} \textsc{integer} \textsc{integer} \textsc{id} \textsc{integer}\texttt{)},
 \texttt{(contracted} \textsc{maplet$\ast$}\texttt{)}, or
-\texttt{(added-listener} \textsc{term}\texttt{)}, \textsc{term} is the
-critical term, \textsc{node} in the test node, and the remaining terms
+\texttt{(added-listener} \textsc{term}\texttt{)}; \textsc{term} is the
+critical term; \textsc{node} in the test node; and the remaining terms
 specify the escape set. When the operation kind is added strand, the
 instance's role name and height are provided.
 For kind displaced, the first number is the strand being merged, the
diff --git a/doc/src/cpsaspec.tex b/doc/src/cpsaspec.tex
--- a/doc/src/cpsaspec.tex
+++ b/doc/src/cpsaspec.tex
@@ -1,4 +1,4 @@
- \documentclass[12pt]{report}
+\documentclass[12pt]{report}
 \usepackage{amssymb}
 \usepackage{amsmath}
 \usepackage{amsthm}
diff --git a/doc/src/macros.tex b/doc/src/macros.tex
--- a/doc/src/macros.tex
+++ b/doc/src/macros.tex
@@ -1,5 +1,5 @@
 \newcommand{\cpsa}{\textsc{cpsa}}
-\newcommand{\version}{4.4.3}
+\newcommand{\version}{4.4.4}
 \newcommand{\cpsacopying}{\begingroup
   \renewcommand{\thefootnote}{}\footnotetext{{\copyright} 2010 The
     MITRE Corporation.  Permission to copy without fee all or part of
diff --git a/src/CPSA/Algebra.hs b/src/CPSA/Algebra.hs
--- a/src/CPSA/Algebra.hs
+++ b/src/CPSA/Algebra.hs
@@ -132,7 +132,7 @@
     substitute,
     unify,
     compose,
-    absentSubst,
+    absentEnv,
     substDomainWithin,
 
     Env,
@@ -191,6 +191,12 @@
 zz x = z x x
 --}
 
+-- Switch to determine whether variables of sort base will be
+-- permitted or excluded
+
+variablesOfSortBase :: Bool
+variablesOfSortBase = False -- True 
+
 -- The default name for the algebra handled by this module
 -- One gets Diffie Hellman features too.
 name :: String
@@ -328,7 +334,7 @@
 
 -- For Absence
 
--- Seperate a group term based on one variable.
+-- Separate a group term based on one variable.
 -- When the variable is not in the group, return Nothing
 -- Otherwise return a group with just the variable negated,
 -- and a group that contains the rest of the group.
@@ -1650,14 +1656,16 @@
   Just $ Subst (M.fromList [(head $ M.keys m, G M.empty)])
 destroyer _ = Nothing
 
--- Extend a substitution so that it satisfies an absence assertion
-absentSubst :: (Gen, Subst) -> (Term, Term) -> [(Gen, Subst)]
-absentSubst gs (G v, G t) | isGroupVar v =
+-- Extend an environment so that it satisfies an absence assertion
+absentEnv :: GenEnv -> (Term, Term) -> [GenEnv]
+absentEnv gs (G v, G t) | isGroupVar v =
   case separateVar (getGroupVar v) t of
     Nothing -> [gs]
-    Just (v', t') -> unifyGroup v' t' gs
-absentSubst _ ts =
-  error ("Algebra.absentSubst: Bad absent pair " ++ show ts)
+    Just (_, t') -> match (G t) (G t') gs
+                    --   (z (show v ++ show t)
+                    --     (zz $ match (G t) (G t') gs))
+absentEnv _ ts =
+  error ("Algebra.absentEnv: Bad absent pair " ++ show ts)
 
 -- Matching and instantiation
 
@@ -2369,7 +2377,15 @@
   | sort == "pval" = return $ F Pval [I x]
   | sort == "chan" = return $ F Chan [I x]
   | sort == "locn" = return $ F Locn [I x]
-  | sort == "base" = return $ F Base [I x]
+  | sort == "base" =
+      if variablesOfSortBase
+      then
+          return $ F Base [I x]
+      else
+          fail
+          (shows pos
+           "mkVar:  Variables of sort base are now deprecated " ++
+           (show x))
   | sort == "expt" = return $ groupVar Expt x
   | sort == "rndx" = return $ groupVar Rndx x
   | sort == "mesg" = return $ I x
@@ -2393,7 +2409,15 @@
   | sort == "pval" = F Pval [I x]
   | sort == "chan" = F Chan [I x]
   | sort == "locn" = F Locn [I x]
-  | sort == "base" = F Base [I x]
+  | sort == "base" =      
+      if variablesOfSortBase
+      then
+          F Base [I x]
+      else
+          error
+          (show
+           "mkVarUnfailingly:  Variables of sort base are now deprecated " ++
+           (show x))
   | sort == "expt" = groupVar Expt x
   | sort == "rndx" = groupVar Rndx x
   | sort == "mesg" = I x
diff --git a/src/CPSA/Characteristic.hs b/src/CPSA/Characteristic.hs
--- a/src/CPSA/Characteristic.hs
+++ b/src/CPSA/Characteristic.hs
@@ -15,6 +15,7 @@
 import CPSA.Lib.SExpr
 import CPSA.Algebra
 import CPSA.Protocol
+import CPSA.Operation
 import CPSA.Strand
 
 {--
@@ -151,11 +152,11 @@
     let gs = foldr mkGenSt [] as
     let cf = foldr mkConf [] as
     let au = foldr mkAuth [] as
-    let (nr', ar', ur', ug', cf', au') =
-          foldl addInstOrigs (nr, ar, ur, ug, cf, au) insts
+    let (nr', ar', ur', ug', cf', au', ab') =
+          foldl addInstOrigs (nr, ar, ur, ug, cf, au, []) insts
     let fs = foldr (mkFact nmap) [] as
     let prios = []
-    let k = mkPreskel g p goals insts o nr' ar' ur' ug' [] []
+    let k = mkPreskel g p goals insts o nr' ar' ur' ug' ab' []
             gs cf' au' fs prios comment
     mapM_ (checkUniqAt nmap k) as
     mapM_ (checkUgenAt nmap k) as
@@ -167,15 +168,17 @@
       Fail msg -> fail $ shows pos
                   $ showString "Skeleton not well formed: " msg
 
-addInstOrigs :: ([Term], [Term], [Term], [Term], [Term], [Term]) ->
-                Instance -> ([Term], [Term], [Term], [Term], [Term], [Term])
-addInstOrigs (nr, ar, ur, ug, cf, au) i =
+addInstOrigs :: ([Term], [Term], [Term], [Term], [Term], [Term], [(Term, Term)]) ->
+                Instance ->
+                    ([Term], [Term], [Term], [Term], [Term], [Term], [(Term, Term)])
+addInstOrigs (nr, ar, ur, ug, cf, au, ab) i =
     (foldl (flip adjoin) nr $ inheritRnon i,
      foldl (flip adjoin) ar $ inheritRpnon i,
      foldl (flip adjoin) ur $ inheritRunique i,
      foldl (flip adjoin) ug $ inheritRuniqgen i,
      foldl (flip adjoin) au $ inheritRconf i,
-     foldl (flip adjoin) cf $ inheritRauth i)
+     foldl (flip adjoin) cf $ inheritRauth i,
+     foldl (flip adjoin) ab $ inheritRabsent i)
 
 mkPrec :: [(Term, Sid)] -> (Pos, AForm) -> [Pair] -> [Pair]
 mkPrec nmap (_, Prec n n') o =
diff --git a/src/CPSA/Cohort.hs b/src/CPSA/Cohort.hs
--- a/src/CPSA/Cohort.hs
+++ b/src/CPSA/Cohort.hs
@@ -15,6 +15,7 @@
 import CPSA.Algebra
 import CPSA.Channel
 import CPSA.Protocol
+import CPSA.Operation
 import CPSA.Strand
 
 {-- Debugging support
@@ -313,10 +314,11 @@
     case findTest mode k u a of
       Nothing -> reduceNoTest mode k
       Just ks ->                -- normal cohort for selected unrealized node
-        Crt (parFoldr
-             (\k soFar -> (simplify k) ++ soFar)
-             []
-             $ factorIsomorphicPreskels ks)
+        Crt (filterSame
+             k (parFoldr
+                (\k soFar -> (simplify k) ++ soFar)
+                []
+                $ factorIsomorphicPreskels ks))
     where
       (a, u) = avoid k
 
@@ -471,7 +473,7 @@
 
 mgs :: [(Preskel, [Sid])] -> [Preskel]
 mgs cohort =
-  reverse $ map fst $ loop cohort []
+  reverse $ map recordMap $ loop cohort []
   where
     loop [] acc = acc
     loop (kphi : cohort) acc
@@ -482,6 +484,7 @@
         let ans = any (not. null . homomorphism k' k)
                   (composeFactors (strandids k) (strandids k') phi phi') in
         ans
+    recordMap (k, phi) = updateStrandMap phi k
 
 -- Given two permutations p and p', with ranges r and r', this
 -- function returns the list of permutations p'' such that
@@ -761,7 +764,7 @@
 
 maximize :: Preskel -> [Preskel]
 maximize k =
-    iter $ generalize k
+    iter $ map recordMap $ generalize k
     where
       iter [] = []
       iter ((k',mapping) : rest) =
@@ -770,6 +773,7 @@
             -- Since specialization now simplifies, the ks are
             -- automatically closed under the rules.
             ks -> ks
+      recordMap (k, sm) = (updateStrandMap sm k, sm)
 
 -- Test to see if realized skeleton k is a specialization of
 -- preskeleton k' using the given strand mapping.  Returns the
diff --git a/src/CPSA/Db/Displayer.hs b/src/CPSA/Db/Displayer.hs
new file mode 100644
--- /dev/null
+++ b/src/CPSA/Db/Displayer.hs
@@ -0,0 +1,161 @@
+-- Summarize CPSA output as a formula in coherent logic
+
+-- Copyright (c) 2011 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 CPSA.Db.Displayer (display) where
+
+import System.IO
+import CPSA.Lib.SExpr
+import CPSA.Lib.Entry (writeSExpr)
+import CPSA.Algebra
+import CPSA.Protocol (Trace)
+import CPSA.Db.Loader (strip, massoc, loadStrandMap)
+import CPSA.Db.Structs
+import CPSA.Db.Tree
+
+-- Print forest
+display :: Handle -> Int -> Forest -> IO ()
+display h m f = mapM_ (root h m) f
+
+root :: Handle -> Int -> Tree -> IO ()
+root h m t =
+    do
+      hPutStrLn h ""
+      let x = L () [S () "root", N () (label $ vertex t)]
+      writeSExpr h m x
+      tree h m t t
+
+tree :: Handle -> Int -> Tree -> Tree -> IO ()
+tree h m r t =
+    do
+      let skel = vertex t
+      let l = label skel
+      body h m l (alist skel)
+      mapM_ (displayTrace h m skel) (zip [0..] (ktraces skel))
+      mapM_ (child h m r skel) (children t)
+      mapM_ (dup h m r skel) (seen $ vertex t)
+
+body :: Handle -> Int -> Int -> [SExpr Pos] -> IO ()
+body h m l xs =
+    do
+      let x = L () [S () "skel", N () l, L () (map strip xs)]
+      writeSExpr h m x
+
+displayTrace :: Handle -> Int -> Skel -> (Int, Trace) -> IO ()
+displayTrace h m k strace =
+      mapM_ (displayRoleMatch h m k strace) (roles $ prot k)
+
+displayRoleMatch :: Handle -> Int -> Skel -> (Int, Trace) -> Role -> IO ()
+displayRoleMatch h m k (s, trace) role =
+    case matchTraces (rtrace role) trace (kgen k, emptyEnv) of
+      [] -> return ()
+      (_, e) : _->
+          do
+            let l = label k
+            let len = length trace
+            let x = L () [S () "p", N () l, Q () (rname role),
+                          N () s, N () len]
+            writeSExpr h m x
+            mapM_ (displayParam h m l role s)
+                    (displayEnv (rctx role) (kctx k) e)
+
+displayParam :: Handle -> Int -> Int -> Role -> Int -> SExpr () -> IO ()
+displayParam h m l role s (L () [S () param, val]) =
+    do
+      let x = L () [S () "p", N () l, Q () (rname role),
+                    Q () param, N () s, val]
+      writeSExpr h m x
+displayParam _ _ _ role _ _ =
+    fail ("Bad parameter in role " ++ rname role)
+
+child :: Handle -> Int -> Tree -> Skel -> Tree -> IO ()
+child h m r k t =
+    do
+      let l = label k
+      let lab = label $ vertex t
+      let x = L () [S () "child", N () l, N () lab]
+      writeSExpr h m x
+      case massoc "operation" (alist $ vertex t) of
+        Just op ->
+            do
+              let y = L () [S () "step", N () l,
+                            L () (map strip op),
+                            N () lab]
+              writeSExpr h m y
+              case massoc "strand-map" (alist $ vertex t) of
+                Just xs@(_ : _) ->
+                    do
+                      mapping <- mapM loadStrandMap xs
+                      twa h m k (vertex t) (map strip op) mapping
+                _ -> return ()
+              tree h m r t
+        _ ->
+            do
+              let y = L () [S () "step", N () l, L () [], N () lab]
+              writeSExpr h m y
+              tree h m r t
+
+dup :: Handle -> Int -> Tree -> Skel -> (Int, [SExpr a], [Int]) -> IO ()
+dup _ _ _ k (lab, _, _) | label k == lab = return () -- Ignore self loops
+dup h m r k (lab, op, mapping) =
+    do
+      let l = label k
+      let dop = map strip op
+      let x = L () [S () "step", N () l, L () dop, N () lab]
+      writeSExpr h m x
+      case findSkel lab r of
+        Nothing ->
+            hPutStrLn h ("; Cannot find " ++ show lab)
+        Just k' ->
+            do
+              hPutStrLn h ("; Seen child " ++ show l ++
+                           " -> " ++ show (label k'))
+              twa h m k k' dop mapping
+
+twa :: Handle -> Int -> Skel -> Skel -> [SExpr ()] -> [Int] -> IO ()
+twa h m k k' op@(S () "generalization" : _) mapping =
+    rtwa h m k k' (L () op) mapping
+twa h m k k' op mapping =
+    ftwa h m k k' (L () op) mapping
+
+ftwa :: Handle -> Int -> Skel -> Skel -> SExpr () -> [Int] -> IO ()
+ftwa h m k k' op mapping =
+    case mtwa k k' mapping of
+      Nothing -> hPutStrLn h "; No forward mapping"
+      Just env ->
+          do
+            let l = label k
+            let l' = label k'
+            mapM_ (strands h m l l' op) (zip [0..] mapping)
+            mapM_ (bindings h m l l' op) env
+
+rtwa :: Handle -> Int -> Skel -> Skel -> SExpr () -> [Int] -> IO ()
+rtwa h m k k' op mapping =
+    case mtwa k' k mapping of
+      Nothing -> hPutStrLn h "; No reverse mapping"
+      Just env ->
+          do
+            let l = label k
+            let l' = label k'
+            mapM_ (strands h m l l' op) (zip mapping [0..])
+            mapM_ (bindings h m l l' op) (map swap env)
+    where
+      swap (x, y) = (y, x)
+
+strands :: Handle -> Int -> Int -> Int -> SExpr () -> (Int, Int) -> IO ()
+strands h m l l' op (s, s') =
+    do
+      let x = L () [S () "stwa", N () l, N () s, op,
+                    N () l', N () s']
+      writeSExpr h m x
+
+bindings :: Handle -> Int -> Int -> Int -> SExpr () ->
+            (SExpr (), SExpr ()) -> IO ()
+bindings h m l l' op (t, t') =
+    do
+      let x = L () [S () "mtwa", N () l, t, op, N () l', t']
+      writeSExpr h m x
diff --git a/src/CPSA/Db/Loader.hs b/src/CPSA/Db/Loader.hs
new file mode 100644
--- /dev/null
+++ b/src/CPSA/Db/Loader.hs
@@ -0,0 +1,311 @@
+module CPSA.Db.Loader (State, step, strip, massoc, loadStrandMap) where
+
+import Control.Monad
+import qualified Data.List as L
+import CPSA.Algebra
+import CPSA.Lib.SExpr
+import CPSA.Signature (Sig, loadSig)
+import CPSA.Db.Structs
+import CPSA.Channel
+import CPSA.Protocol (Event (..), Trace, evtMap)
+
+type State = ([Prot], [Skel])
+
+step :: Sig -> String -> Gen -> State ->
+        SExpr Pos -> IO State
+step _ _ _  state (L _ (S _ "comment" : _)) =
+     return state
+step sig nom origin (ps, ks) (L pos (S _ "defprotocol" : prot)) =
+    do
+      prot <- loadProt sig nom origin pos prot
+      return (prot : ps, ks)
+step _ _ _ (ps, ks) (L pos (S _ "defskeleton" : xs)) =
+    do
+      k <- findSkel pos ps xs
+      return (ps, k : ks)
+step _ _ _  state _ =
+     return state
+
+loadProt :: MonadFail m => Sig -> String -> Gen -> Pos ->
+            [SExpr Pos] -> m (Prot)
+loadProt sig nom origin pos (S _ name : S _ alg : x : xs)
+    | alg /= nom =
+        fail (shows pos $ "Expecting terms in algebra " ++ nom)
+    | otherwise =
+        do
+          sig <- loadLang pos sig xs
+          (gen, rs) <- loadRoles sig origin (x : xs)
+          (gen', r) <- mkListenerRole sig pos gen
+          return (Prot { pname = name,
+                         pgen = gen',
+                         roles = r : rs,
+                         psig = sig })
+loadProt _ _ _ pos _ =
+    fail (shows pos "Malformed protocol")
+
+-- Optionally load a lang field in a protocol.
+loadLang :: MonadFail m => Pos -> Sig -> [SExpr Pos] -> m Sig
+loadLang pos _ xs | hasKey "lang" xs = loadSig pos (assoc "lang" xs)
+loadLang _ sig _ | otherwise = return sig
+
+loadRoles :: MonadFail m => Sig -> Gen -> [SExpr Pos] -> m (Gen, [Role])
+loadRoles sig gen (L pos (S _ "defrole" : x) : xs) =
+    do
+      (gen, r) <- loadRole sig gen pos x
+      (gen, rs) <- loadRoles sig gen xs
+      return (gen, r : rs)
+loadRoles _ gen _ =
+    return (gen, [])
+
+loadRole :: MonadFail m => Sig -> Gen -> Pos -> [SExpr Pos] -> m (Gen, Role)
+loadRole sig gen _ (S _ name :
+                    L _ (S _ "vars" : vars) :
+                    L _ (S _ "trace" : evt : c) :
+                    _) =
+    do
+      (gen, vars) <- loadVars sig gen vars
+      c <- loadTrace sig vars (evt : c)
+      return (gen, Role { rname = name,
+                          rvars = vars,
+                          rctx = makeContext vars,
+                          rtrace = c })
+loadRole _ _ pos _ = fail (shows pos "Malformed role")
+
+makeContext :: [Term] -> Context
+makeContext vars =
+    addToContext emptyContext vars
+
+loadTrace :: MonadFail m => Sig -> [Term] -> [SExpr Pos] -> m Trace
+loadTrace sig vars xs = mapM (loadEvt sig vars) xs
+
+loadEvt :: MonadFail m => Sig -> [Term] -> SExpr Pos -> m Event
+loadEvt sig vars (L _ [S _ "recv", t]) =
+    do
+      t <- loadTerm sig vars False t
+      return (In $ Plain t)
+loadEvt sig vars (L _ [S _ "recv", ch, t]) =
+    do
+      ch <- loadChan sig vars ch
+      t <- loadTerm sig vars False t
+      return (In $ ChMsg ch t)
+loadEvt sig vars (L _ [S _ "send", t]) =
+    do
+      t <- loadTerm sig vars False t
+      return (Out $ Plain t)
+loadEvt sig vars (L _ [S _ "send", ch, t]) =
+    do
+      ch <- loadChan sig vars ch
+      t <- loadTerm sig vars False t
+      return (Out $ ChMsg ch t)
+loadEvt _ _ (L pos [S _ dir, _]) =
+    fail (shows pos $ "Unrecognized direction " ++ dir)
+loadEvt _ _ x = fail (shows (annotation x) "Malformed event")
+
+loadChan :: MonadFail m => Sig -> [Term] -> SExpr Pos -> m Term
+loadChan sig vars x =
+  do
+    ch <- loadTerm sig vars False x
+    case isChan ch of
+      True -> return ch
+      False -> fail (shows (annotation x) "Expecting a channel")
+
+-- This is the only place a role is generated with an empty name.
+-- This is what marks a strand as a listener.
+mkListenerRole :: MonadFail m => Sig -> Pos -> Gen -> m (Gen, Role)
+mkListenerRole sig pos g =
+  do
+    (g, xs) <- loadVars sig g [L pos [S pos "x", S pos "mesg"]]
+    case xs of
+      [x] -> return (g, Role {
+                           rname = "",
+                           rvars = [x],
+                           rctx = makeContext xs,
+                           rtrace = [In $ Plain x, Out $ Plain x]})
+      _ -> fail (shows pos "mkListenerRole: expecting one variable")
+
+---------------------------------------
+
+findSkel :: MonadFail m => Pos -> [Prot] ->
+            [SExpr Pos] -> m Skel
+findSkel pos ps (S _ name : xs) =
+    case L.find (\p -> name == pname p) ps of
+      Nothing -> fail (shows pos $ "Protocol " ++ name ++ " unknown")
+      Just p -> loadSkel (psig p) pos p xs
+findSkel pos _ _ = fail (shows pos "Malformed skeleton")
+
+loadSkel :: MonadFail m => Sig -> Pos -> Prot -> [SExpr Pos] -> m Skel
+loadSkel sig pos p (L _ (S _ "vars" : vars) : xs) =
+    do
+      (gen, kvars) <- loadVars sig (pgen p) vars
+      loadStrands sig pos p kvars gen [] xs
+loadSkel _ pos _ _ = fail (shows pos "Malformed skeleton")
+
+loadStrands :: MonadFail m => Sig -> Pos -> Prot ->
+               [Term] -> Gen -> [Trace] -> [SExpr Pos] -> m Skel
+loadStrands sig top p kvars gen insts (L pos (S _ "defstrand" : x) : xs) =
+    case x of
+      S _ role : N _ height : env ->
+          do
+            (gen, i) <- loadInst sig pos p kvars gen role height env
+            loadStrands sig top p kvars gen (i : insts) xs
+      _ ->
+          fail (shows pos "Malformed defstrand")
+loadStrands sig top p kvars gen insts (L pos (S _ "deflistener" : x) : xs) =
+    case x of
+      [term] ->
+          do
+            t <- loadTerm sig kvars True term
+            let i = [In $ Plain t, Out $ Plain t]
+            loadStrands sig top p kvars gen (i : insts) xs
+      _ ->
+          fail (shows pos "Malformed deflistener")
+loadStrands _ _ p kvars gen insts xs =
+    do
+      checkAlist xs -- Ensure alist syntax
+      label <- nassoc "label" xs
+      parent <- nassoc "parent" xs
+      seen <- loadSeen (massoc "seen-ops" xs)
+      case label of
+        Just l ->
+            return Skel { prot = p,
+                          kvars = kvars,
+                          kctx = makeContext kvars,
+                          kgen = gen,
+                          ktraces = reverse insts,
+                          label = l,
+                          parent = parent,
+                          seen = L.sortOn (\(tag, _, _) -> tag) seen,
+                          alist = xs }
+        Nothing -> fail "Skeleton without a label"
+
+loadInst :: MonadFail m => Sig -> Pos -> Prot -> [Term] -> Gen -> String ->
+            Int -> [SExpr Pos] -> m (Gen, Trace)
+loadInst sig pos p kvars gen role height env =
+    do
+      r <- lookupRole pos p role
+      case height < 1 || height > length (rtrace r) of
+        True -> fail (shows pos "Bad height")
+        False ->
+            do
+              let vars = rvars r
+              (gen', env') <- foldM (loadMaplet sig kvars vars)
+                              (gen, emptyEnv) env
+              return (mkTrace gen' r env' height)
+
+lookupRole :: MonadFail m => Pos -> Prot -> String -> m Role
+lookupRole pos p role =
+    case L.find (\r -> role == rname r) (roles p) of
+      Nothing ->
+          fail (shows pos $ "Role " ++ role ++ " not found in " ++ pname p)
+      Just r -> return r
+
+loadMaplet :: MonadFail m => Sig -> [Term] -> [Term] ->
+              (Gen, Env) -> SExpr Pos -> m (Gen, Env)
+loadMaplet sig kvars vars env (L pos [domain, range]) =
+    do
+      t <- loadTerm sig vars False domain
+      t' <- loadTerm sig kvars False range
+      case match t t' env of
+        env' : _ -> return env'
+        [] -> fail (shows pos "Domain does not match range")
+loadMaplet _ _ _ _ x = fail (shows (annotation x) "Malformed maplet")
+
+mkTrace :: Gen -> Role -> Env -> Int -> (Gen, Trace)
+mkTrace gen role env height =
+    let trace = rtrace role
+        rheight = length trace in
+    if height < 1 || height > rheight then
+        error "Db.Loader.mkTrace: Bad strand height"
+    else
+        let (gen', env') = grow (rvars role) gen env in
+        (gen', map (evtMap $ instantiate env') (take height trace))
+
+-- For each term that matches itself in the environment, extend the
+-- mapping so that the term maps to one with a fresh set of variables.
+-- It is an error if a variable in one of the terms is explicitly
+-- mapped to itself in the initial environment.
+grow :: [Term] -> Gen -> Env -> (Gen, Env)
+grow [] gen env = (gen, env)
+grow (t : ts) gen env =
+    case match t t (gen, env) of
+      [] -> grow ts gen env     -- Term already mapped
+      _ ->                      -- Otherwise make a fresh mapping
+          let (gen', t') = clone gen t in
+          case match t t' (gen', env) of
+            (gen'', env') : _ -> grow ts gen'' env'
+            [] -> error "Db.Loader.grow: Internal error"
+
+-- Association lists
+
+loadSeen :: MonadFail m => Maybe [SExpr Pos] -> m [(Int, [SExpr Pos], [Int])]
+loadSeen Nothing = return []
+loadSeen (Just xs) = mapM loadSeenOp xs
+
+loadSeenOp :: MonadFail m => SExpr Pos -> m (Int, [SExpr Pos], [Int])
+loadSeenOp (L _ [N _ l, L _ (S _ "operation" : xs)]) =
+    return (l, xs, [])
+loadSeenOp (L _ [N _ l, L _ (S _ "operation" : xs),
+                 L _ (S _ "strand-map" : nums)]) =
+    do
+      sm <- mapM loadStrandMap nums
+      return (l, xs, sm)
+loadSeenOp (L pos [N _ l]) =
+    return (l, [S pos "new"], [])
+loadSeenOp x = fail (shows (annotation x) "Malformed seen operation")
+
+loadStrandMap :: MonadFail m => SExpr Pos -> m Int
+loadStrandMap (N _ n) = return n
+loadStrandMap x = fail (shows (annotation x) "Malformed strand map")
+
+-- Strip positions from an S-expression
+
+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)
+
+-- Ensure alist has the proper form
+checkAlist :: MonadFail m => [SExpr Pos] -> m ()
+checkAlist [] = return ()
+checkAlist ((L _ (S _ _ : _)) : xs) = checkAlist xs
+checkAlist xs = fail (shows (annotation $ head xs) "Malformed association list")
+
+-- 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 ]
+
+keyPred :: String -> SExpr a -> Bool
+keyPred key (L _ (S _ head : _)) = key == head
+keyPred _ _ = False
+
+hasKey :: String -> [SExpr a] -> Bool
+hasKey key alist = any (keyPred key) alist
+
+-- Lookup value in alist, appending values with the same key
+massoc :: String -> [SExpr Pos] -> Maybe [SExpr Pos]
+massoc key alist =
+    loop alist Nothing
+    where
+      loop ((L _ (S _ head : tail)) : rest) vals
+          | key == head = loop rest (extend tail vals)
+          | otherwise = loop rest vals
+      loop _ vals = vals
+      extend x Nothing = Just x
+      extend x (Just y) = Just (x ++ y)
+
+nassoc :: MonadFail m => String -> [SExpr Pos] -> m (Maybe Int)
+nassoc key xs =
+    case massoc key xs of
+      Nothing -> return Nothing
+      Just [val] ->
+          do
+            ns <- num val
+            return (Just ns)
+      Just (x:_) -> fail (shows (annotation x) "Expecting one number")
+      Just [] -> fail (shows (annotation (head xs)) "Expecting one number")
+
+num :: MonadFail m => SExpr Pos -> m Int
+num (N _ n) = return n
+num x = fail (shows (annotation x) "Expecting a number")
diff --git a/src/CPSA/Db/Main.hs b/src/CPSA/Db/Main.hs
new file mode 100644
--- /dev/null
+++ b/src/CPSA/Db/Main.hs
@@ -0,0 +1,99 @@
+-- Summarize CPSA output as a formula in coherent logic
+
+-- Copyright (c) 2011 The MITRE Corporation
+--
+-- This program is free software: you can redistribute it and/or
+-- modify it under the terms of the BSD License as published by the
+-- University of California.
+
+module Main (main) where
+
+import System.IO
+import CPSA.Lib.SExpr
+import CPSA.Signature (Sig, defaultSig, loadSig)
+import CPSA.Algebra
+import CPSA.Lib.Entry
+import CPSA.Options
+import CPSA.Db.Loader
+import CPSA.Db.Tree
+import CPSA.Db.Displayer
+
+-- Algebra names
+algs :: [String]
+algs = [name, alias]
+
+main :: IO ()
+main =
+    do
+      let options = algOptions name
+      let interp = algInterp name algs
+      (p, (output, alg, margin)) <- start options interp
+      h <- outputHandle output
+      (_, ks) <- herald p margin h alg
+      display h margin (forest $ reverse ks)
+      hClose h
+
+-- Handle the herald
+herald :: PosHandle -> Int -> Handle -> String -> IO State
+herald p margin h alg =
+    do
+      x <- readSExpr p
+      case x of
+        Nothing -> abort "Empty input"
+        Just x@(L pos (S _ "herald" : _ : xs)) ->
+          do
+            writeSExpr h margin x
+            hPutStrLn h ""
+            sig <- loadSig pos (assoc "lang" xs)
+            let nom = getAlgName xs alg
+            select p margin h sig nom Nothing
+        Just (L _ (S _ "comment" : _)) ->
+          herald p margin h alg
+        x ->
+          select p margin h defaultSig alg x
+
+select :: PosHandle -> Int -> Handle -> Sig ->
+          String -> Maybe (SExpr Pos) -> IO State
+select p margin h sig alg x =
+    do
+      writeComment h margin cpsaVersion
+      writeComment h margin "CPSA Database"
+      let stepper = step sig alg origin
+      let state = ([], [])
+      case () of
+        _ | alg == name || alg == alias ->
+            case x of
+              Nothing -> go stepper p state
+              Just x ->
+                do
+                  next <- stepper state x
+                  go stepper p next
+          | otherwise ->
+               abort ("Bad algebra: " ++ alg)
+
+go :: (a -> SExpr Pos -> IO a) -> PosHandle -> a -> IO a
+go f p a =
+    loop a
+    where
+      loop a =
+          do
+            x <- readSExpr p
+            case x of
+              Nothing ->
+                  return a
+              Just x ->
+                  do
+                    a <- f a x
+                    loop a
+
+getAlgName :: [SExpr a] -> String -> String
+getAlgName xs name =
+    case assoc "algebra" xs of
+      [] -> name
+      [S _ nom] -> nom
+      _ -> error "Bad algbra field an herald"
+
+-- 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 ]
diff --git a/src/CPSA/Db/Structs.hs b/src/CPSA/Db/Structs.hs
new file mode 100644
--- /dev/null
+++ b/src/CPSA/Db/Structs.hs
@@ -0,0 +1,81 @@
+module CPSA.Db.Structs (Prot (..), Role (..), Skel (..),
+                        matchTraces, mtwa) where
+
+import Control.Monad
+import qualified Data.List as L
+import CPSA.Algebra
+import CPSA.Signature (Sig)
+import CPSA.Channel (cmMatch)
+import CPSA.Protocol (Trace, Event (..))
+import CPSA.Lib.SExpr
+
+data Role = Role
+    { rname :: String,  -- Role name
+      rvars :: ![Term], -- Set of role variables
+      rctx :: Context,
+      rtrace :: !Trace } -- Events in causal order
+    deriving Show
+
+data Prot = Prot
+    { pname :: String, -- Protocol name
+      pgen :: Gen,     -- Generator for preskeletons
+      roles :: [Role], -- Protocol roles including listener role
+      psig :: Sig }    -- the protocol's signature
+    deriving Show
+
+data Skel = Skel
+    { prot :: Prot,
+      kvars :: [Term], -- Skeleton vars
+      kctx :: Context,
+      kgen :: Gen,
+      ktraces :: [Trace], --Strands
+      label :: Int,             -- Label from the input or generated
+                                -- by the loader
+      parent :: Maybe Int,      -- Parent from the input
+      -- Seen preskeletons isomorphic to cohort members
+      -- with their operation field
+      seen :: [(Int, [SExpr Pos], [Int])],
+      alist :: [SExpr Pos] }
+    deriving Show
+
+homomorphism :: Skel -> Skel -> [Int] -> [Env]
+homomorphism k k' mapping =
+    if L.length mapping == L.length (ktraces k)
+    then
+        let gg = gmerge (kgen k) (kgen k') in
+        let strandids = take (L.length (ktraces k)) [0..] in
+        let ge = foldM (matchStrand k k' mapping) (gg, emptyEnv) strandids in
+        map snd ge
+    else []
+
+matchStrand :: Skel -> Skel -> [Int] -> (Gen, Env) -> Int -> [(Gen, Env)]
+matchStrand k k' mapping env s =
+    matchTraces (ktraces k !! s) (ktraces k' !! s') env
+    where
+      s' = mapping !! s
+
+matchTraces :: Trace -> Trace -> (Gen, Env) -> [(Gen, Env)]
+matchTraces [] _ env = [env]    -- Pattern can be shorter
+matchTraces (In t : c) (In t' : c') env =
+    do
+      e <- cmMatch t t' env
+      matchTraces c c' e
+matchTraces (Out t : c) (Out t' : c') env =
+    do
+      e <- cmMatch t t' env
+      matchTraces c c' e
+matchTraces _ _ _ = []
+
+mtwa :: Skel -> Skel -> [Int] -> Maybe [(SExpr (), SExpr ())]
+mtwa k k' mapping =
+    case homomorphism k k' mapping of
+      [] -> Nothing
+      env : _ ->
+          Just (map (displayMaplet (kctx k) (kctx k')) maplets)
+          where
+            maplets = reify (kvars k) env
+
+displayMaplet :: Context -> Context -> (Term, Term) ->
+                 (SExpr (), SExpr ())
+displayMaplet domain range (x, t)=
+    (displayTerm domain x, displayTerm range t)
diff --git a/src/CPSA/Db/Tree.hs b/src/CPSA/Db/Tree.hs
new file mode 100644
--- /dev/null
+++ b/src/CPSA/Db/Tree.hs
@@ -0,0 +1,91 @@
+-- Generate a tree of preskeletons
+
+-- This code is based on what is in CPSA.Graph.Tree
+
+-- Copyright (c) 2024 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 CPSA.Db.Tree (Tree (..), Forest, forest, findSkel) where
+
+import qualified Data.Map as M
+import Data.Map (Map)
+import Data.List (foldl')
+import CPSA.Lib.Utilities (seqList)
+import CPSA.Db.Structs
+
+-- The preskeletons in the output are assembled together for display
+-- into trees based on the parent relation.  In reality, the
+-- relationship between preskeletons is not tree-like, but includes
+-- other edges as a result of a preskeleton having cohort members that
+-- have been seen before.  These members are called a tree node's
+-- duplicates, and their children are displayed somewhere else in the
+-- display.
+
+data Tree = Tree
+    { vertex :: !Skel,
+      children :: !Forest,      -- Freshly discovered preskeletons
+      duplicates :: !Forest }   -- Preskeletons already seen
+    deriving Show
+
+makeTree :: Skel -> [Tree] -> [Tree] -> Tree
+makeTree k kids dups =
+    Tree { vertex = k,
+           children = seqList kids,
+           duplicates = seqList dups }
+
+type Forest = [Tree]
+
+-- Assemble preskeletons into a forest and then set the alive flag
+forest :: [Skel] -> Forest
+forest ks =
+    reverse (foldl' f [] ks)
+    where
+      f ts k
+        | parent k == Nothing = -- Found tree root
+            assemble (childMap ks) k : ts
+        | otherwise = ts        -- Otherwise skip k
+
+-- A child map maps a label to a preskeleton and a list of its
+-- childnen.  The map is derived by looking at the parent field.  The
+-- code assumes a parent precedes its children in the input list.
+childMap :: [Skel] -> Map Int (Skel, [Skel])
+childMap ks =
+    foldl' child M.empty ks
+    where
+      child cm k =
+          case parent k of
+            Nothing -> cm'
+            Just p ->
+                M.adjust addChild p cm'
+          where
+            cm' = M.insert (label k) (k, []) cm
+            addChild (k', children) =
+                (k', k : children)
+
+-- Assemble preskeletons into a tree
+assemble :: Map Int (Skel, [Skel]) -> Skel -> Tree
+assemble table k =
+    makeTree k (kids k) (dups k)
+    where
+      kids k =
+          case M.lookup (label k) table of
+            Nothing -> []       -- This should never happen
+            Just (_, ks) -> map (assemble table) (reverse ks)
+      dups k =
+          [ makeTree k' [] []   -- Make an empty tree for a duplicate
+            | (tag, _, _) <- seen k,
+              k' <- maybe [] (\(k, _) -> [k]) (M.lookup tag table) ]
+
+findSkel :: Int -> Tree -> Maybe Skel
+findSkel lab t | lab == label (vertex t) =
+                   Just (vertex t)
+findSkel lab t =
+    f (children t)
+    where f [] = Nothing
+          f (t : ts) =
+              case findSkel lab t of
+                Just k -> Just k
+                Nothing -> f ts
diff --git a/src/CPSA/DbProlog/Main.hs b/src/CPSA/DbProlog/Main.hs
new file mode 100644
--- /dev/null
+++ b/src/CPSA/DbProlog/Main.hs
@@ -0,0 +1,94 @@
+-- Prints the output of a CPSA run as a Prolog database.
+
+-- This programs loads CPSA output.  It assembles the skeletons in the
+-- output into a forest of derivation trees.  It then prints the
+-- forest in Prolog syntax.  To be loadable by Prolog, the output must
+-- be sorted so that clauses of one predicate are colocated.
+
+-- The output should be used by SWI Prolog as strings must not be atoms.
+-- Load the generated file using consult/1.
+
+-- Copyright (c) 2024 The MITRE Corporation
+--
+-- This program is free software: you can redistribute it and/or
+-- modify it under the terms of the BSD License as published by the
+-- University of California.
+
+module Main (main) where
+
+import System.IO
+import Data.Char (toLower)
+import Text.Printf (printf)
+import CPSA.Lib.SExpr
+import CPSA.Lib.Entry
+
+main :: IO ()
+main =
+    do
+      (p, (output, _)) <- start filterOptions filterInterp
+      h <- outputHandle output
+      dbProlog p h
+      hClose h
+
+dbProlog :: PosHandle -> Handle -> IO ()
+dbProlog p h =
+    do
+      x <- gentlyReadSExpr p
+      case x of
+        Nothing -> return ()
+        Just x ->
+            do
+              display h x
+              dbProlog p h
+
+display :: Handle -> SExpr Pos -> IO ()
+display h (L _ [S _ "comment", Q _ comment]) =
+    hPutStrLn h ("%% " ++ comment)
+display _ (L _ (S _ "comment" : _)) =
+    return ()
+display h (L _ (S _ pred : x : xs)) =
+    do
+      hPutStr h (printf "%s(" pred)
+      sexpr h x
+      rest h xs
+      hPutStrLn h ")."
+display _ _ =
+    return ()
+
+sexprs :: Handle -> [SExpr a] -> IO ()
+sexprs h [] =
+    hPutStr h "[]"
+sexprs h (x : xs) =
+    do
+      hPutStr h "["
+      sexpr h x
+      rest h xs
+      hPutStr h "]"
+
+sexpr :: Handle -> SExpr a -> IO ()
+sexpr h (S _ []) = -- This should never happen
+    hPutStr h []
+sexpr h (S _ (c : s)) = -- Ensure symbol is a Prolog constant
+    hPutStr h (map toUnderScore (toLower c : s))
+sexpr h (Q _ q) =
+    do
+      hPutStr h "\""
+      hPutStr h q
+      hPutStr h "\""
+sexpr h (N _ n) =
+    hPutStr h (printf "%d" n)
+sexpr h (L _ xs) =
+    sexprs h xs
+
+toUnderScore :: Char -> Char
+toUnderScore '-' = '_'
+toUnderScore c = c
+
+rest :: Handle -> [SExpr a] -> IO ()
+rest _ [] =
+    return ()
+rest h (x : xs) =
+    do
+      hPutStr h ", "
+      sexpr h x
+      rest h xs
diff --git a/src/CPSA/Displayer.hs b/src/CPSA/Displayer.hs
--- a/src/CPSA/Displayer.hs
+++ b/src/CPSA/Displayer.hs
@@ -6,7 +6,10 @@
 -- modify it under the terms of the BSD License as published by the
 -- University of California.
 
-module CPSA.Displayer (displayProt, displayPreskel, displayNode, displayFact, displayForm) where
+module CPSA.Displayer (displayProt, displayPreskel, displayNode,
+                       displayFact, displayForm,
+                       displayOperation, displayStrandMap,
+                       varsContext) where
 
 import qualified Data.List as L
 import qualified Data.Set as S
@@ -14,6 +17,7 @@
 import CPSA.Algebra
 import CPSA.Channel
 import CPSA.Protocol
+import CPSA.Operation
 import CPSA.Strand
 
 {--
@@ -272,7 +276,8 @@
                  (kcomment k ++
                   (displayOptional "rule" (L.sort (map (S ()) (krules k)))
                    (displayOperation k ctx
-                    (displayOptional "traces" traces rest))))))))))))))))
+                    (displayStrandMap k
+                     (displayOptional "traces" traces rest)))))))))))))))))
     where
       priorities = map displayPriority (kpriority k)
       traces = map (L () . displayTrace ctx . trace) (insts k)
@@ -336,26 +341,26 @@
 displayOperation k ctx rest =
     case operation k of
       New -> rest
-      Contracted subst cause ->
+      Contracted _ subst cause ->
           let substitution = displaySubst ctx subst in
           displayCause (L () (S () "contracted" : substitution)) cause
-      Displaced s s' role height cause ->
+      Displaced _ s s' role height cause ->
           displayCause
           (L () [S () "displaced", N () s, N () s', S () role, N () height])
           cause
-      AddedStrand role height cause ->
+      AddedStrand _ role height cause ->
           displayCause
           (L () [S () "added-strand", S () role, N () height]) cause
-      AddedListener t cause ->
+      AddedListener _ t cause ->
           displayCause
           (L () [S () "added-listener", displayOpCmt ctx $ CM $ Plain t]) cause
-      AddedAbsence t1 t2 cause ->
+      AddedAbsence _ t1 t2 cause ->
           displayCause (L () [S () "added-absence", displayOpCmt ctx $ TM t1,
                                 displayOpCmt ctx $ TM t2]) cause
-      Generalized method ->
+      Generalized _ method ->
           let desc = displayMethod ctx method in
           L () (S () "operation" : S () "generalization" : desc) : rest
-      Collapsed s s' ->
+      Collapsed _ s s' ->
           let desc = [N () s, N () s'] in
           L () (S () "operation" : S () "collapsed" : desc) : rest
     where
@@ -393,3 +398,10 @@
 displayCmt ctx (CM (ChMsg ch t)) =
   L () [S () "ch-msg", displayTerm ctx ch, displayTerm ctx t]
 displayCmt ctx (TM t) = displayTerm ctx t
+
+-- Display the strand map
+displayStrandMap :: Preskel -> [SExpr ()] -> [SExpr ()]
+displayStrandMap k rest =
+    case getStrandMap $ operation k of
+      [] -> rest
+      sm -> L () (S () "strand-map" : map (N ()) sm) : rest
diff --git a/src/CPSA/Loader.hs b/src/CPSA/Loader.hs
--- a/src/CPSA/Loader.hs
+++ b/src/CPSA/Loader.hs
@@ -20,6 +20,7 @@
 import CPSA.Algebra
 import CPSA.Channel
 import CPSA.Protocol
+import CPSA.Operation
 import CPSA.Strand
 import CPSA.Characteristic
 import CPSA.LoadFormulas
diff --git a/src/CPSA/Operation.hs b/src/CPSA/Operation.hs
new file mode 100644
--- /dev/null
+++ b/src/CPSA/Operation.hs
@@ -0,0 +1,82 @@
+-- The operation datastructure
+
+-- 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 CPSA.Operation (Sid, Node, Pair,
+                       Cause (..), Direction (..),
+                       Method (..), Operation (..),
+                       getStrandMap, addStrandMap) where
+
+import Data.Set (Set)
+import CPSA.Algebra (Term, Subst)
+import CPSA.Channel (CMT)
+
+type Sid = Int                  -- Strand Identifier
+
+-- A node is composed of two integers, a strand identifier and a
+-- position.  The position identifies an event in the strand's trace.
+-- The second integer must be non-negative and less than the strand's
+-- height
+
+type Node = (Sid, Int)
+
+-- A pair gives an ordering of two nodes, meaning the first node is
+-- before the second one.
+
+type Pair = (Node, Node)
+
+-- Data structure for tracking the causes for the creation of
+-- preskeletons.
+
+data Cause
+    = Cause Direction Node CMT (Set CMT)
+    deriving Show
+
+data Direction = Encryption | Nonce | Channel deriving Show
+
+data Method
+    = Deleted Node
+    | Weakened Pair
+    | Separated Term
+    | Forgot Term
+    deriving Show
+
+-- The operation used to generate the preskeleteton is either new via
+-- the loader, a contraction, a regular augmentation, a listener
+-- augmentation, or a mininization.  The augmentation includes a role
+-- name and instance height.
+data Operation
+    = New
+    | Contracted [Sid] Subst Cause
+    | Displaced [Sid] Int Int String Int Cause
+    | AddedStrand [Sid] String Int Cause
+    | AddedListener [Sid] Term Cause
+    | AddedAbsence [Sid] Term Term Cause
+    | Generalized [Sid] Method
+    | Collapsed [Sid] Int Int
+      deriving Show
+
+getStrandMap :: Operation -> [Sid]
+getStrandMap New = []
+getStrandMap (Contracted sm _ _) = sm
+getStrandMap (Displaced sm _ _ _ _ _) = sm
+getStrandMap (AddedStrand sm _ _ _) = sm
+getStrandMap (AddedListener sm _ _) = sm
+getStrandMap (AddedAbsence sm _ _ _) = sm
+getStrandMap (Generalized sm _) = sm
+getStrandMap (Collapsed sm _ _) = sm
+
+addStrandMap :: [Sid] -> Operation -> Operation
+addStrandMap _ New = New
+addStrandMap sm (Contracted _ s c) = Contracted sm s c
+addStrandMap sm (Displaced _ n1 n2 str n3 c) =
+    Displaced sm n1 n2 str n3 c
+addStrandMap sm (AddedStrand _ str n c) = AddedStrand sm str n c
+addStrandMap sm (AddedListener _ t c) = AddedListener sm t c
+addStrandMap sm (AddedAbsence _ t1 t2 c) = AddedAbsence sm t1 t2 c
+addStrandMap sm (Generalized _ m) = Generalized sm m
+addStrandMap sm (Collapsed _ n1 n2) = Collapsed sm n1 n2
diff --git a/src/CPSA/Prolog/Loader.hs b/src/CPSA/Prolog/Loader.hs
new file mode 100644
--- /dev/null
+++ b/src/CPSA/Prolog/Loader.hs
@@ -0,0 +1,160 @@
+-- Loads preskeletons and supplies functions for dealing with the
+-- preskeleton's alist.  The code is based on what is in
+-- CPSA.Graph.Loader.
+
+-- Copyright (c) 2024 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 CPSA.Prolog.Loader (Preskel, label, parent, seen, alist, strip,
+                           assoc, nassoc, State, loadFirst, loadNext)
+                          where
+
+import qualified Data.List as L
+import CPSA.Lib.SExpr
+import CPSA.Lib.Entry (gentlyReadSExpr)
+
+-- A view of preskeletons designed for queries.
+
+data Preskel = Preskel
+    { label :: Int,             -- Label from the input or generated
+                                -- by the loader
+      parent :: Maybe Int,      -- Parent from the input
+      -- Seen preskeletons isomorphic to cohort members
+      -- with their operation field
+      seen :: [(Int, SExpr Pos)],
+      alist :: [SExpr Pos] }     -- Body of this preskeleton
+    deriving Show
+
+instance Eq Preskel where
+    k0 == k1 = label k0 == label k1
+
+instance Ord Preskel where
+    compare k0 k1 = compare (label k0) (label k1)
+
+-- The remaing is in support of the loader
+
+-- Load one preskeleton at a time from the input.  The state of
+-- loading follows.
+
+newtype State = State (PosHandle, Int)
+
+-- Load the initial comments and the first preskeleton.  It's an error
+-- if there is no preskeleton in the input.
+
+loadFirst :: PosHandle -> IO ([SExpr Pos], Preskel, State)
+loadFirst h =
+    loadComments h []
+
+loadComments :: PosHandle -> [SExpr Pos]
+             -> IO ([SExpr Pos], Preskel, State)
+loadComments h cmts =
+    do
+      x <- gentlyReadSExpr h
+      case x of
+        Nothing -> fail "Empty input"
+        Just x ->
+            case x of
+              cmt@(L _ (S _ "comment" : _)) ->
+                  loadComments h (cmt:cmts)
+              cmt@(L _ (S _ "herald" : _)) ->
+                  loadComments h (cmt:cmts)
+              _ ->
+                  do
+                    n <- loadSExpr (State (h, 0)) x
+                    case n of
+                      Nothing -> fail "Empty input"
+                      Just (p, s) -> return (reverse cmts, p, s)
+
+-- Load the next preskeleton or return Nothing on EOF
+loadNext :: State -> IO (Maybe (Preskel, State))
+loadNext s@(State (h, _)) =
+    do
+      x <- gentlyReadSExpr h
+      case x of
+        Nothing -> return Nothing
+        Just x -> loadSExpr s x
+
+-- Load from one S-expression
+loadSExpr :: State -> SExpr Pos -> IO (Maybe (Preskel, State))
+loadSExpr (State (h, tag)) x@(L pos (S _ "defskeleton" : xs)) =
+    do
+      k <- loadPreskel x pos tag xs
+      return (Just (k, State (h, 1 + max tag (label k))))
+loadSExpr s (L _ (S _ "defprotocol" : _)) =
+    loadNext s
+loadSExpr s (L _ (S _ "comment" : _)) =
+    loadNext s
+loadSExpr _ x = fail (shows (annotation x) "Malformed input")
+
+-- Preskeletons
+
+loadPreskel :: MonadFail m => SExpr Pos -> Pos ->
+               Int -> [SExpr Pos] -> m Preskel
+loadPreskel _ _ tag (S _ _ : xs) =
+    do
+      checkAlist xs -- Ensure alist syntax
+      label <- nassoc "label" xs
+      parent <- nassoc "parent" xs
+      seen <- loadSeen (assoc "seen-ops" xs)
+      return Preskel { label = maybe tag id label,
+                       parent  = parent,
+                       seen = L.sortOn fst seen,
+                       alist = xs }
+loadPreskel _ pos _ _ = fail (shows pos "Malformed skeleton")
+
+loadSeen :: MonadFail m => Maybe [SExpr Pos] -> m [(Int, SExpr Pos)]
+loadSeen Nothing = return []
+loadSeen (Just xs) = mapM loadSeenOp xs
+
+loadSeenOp :: MonadFail m => SExpr Pos -> m (Int, SExpr Pos)
+loadSeenOp (L _ [N _ l, x]) = return (l, x)
+loadSeenOp (L pos [N _ l]) =
+    return (l, L pos [S pos "operation", S pos "new"])
+loadSeenOp x = fail (shows (annotation x) "Malformed seen operation")
+
+-- Strip positions from an S-expression
+
+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)
+
+-- Ensure alist has the proper form
+checkAlist :: MonadFail m => [SExpr Pos] -> m ()
+checkAlist [] = return ()
+checkAlist ((L _ (S _ _ : _)) : xs) = checkAlist xs
+checkAlist xs = fail (shows (annotation $ head xs) "Malformed association list")
+
+-- Lookup value in alist, appending values with the same key
+assoc :: String -> [SExpr Pos] -> Maybe [SExpr Pos]
+assoc key alist =
+    loop alist Nothing
+    where
+      loop ((L _ (S _ head : tail)) : rest) vals
+          | key == head = loop rest (extend tail vals)
+          | otherwise = loop rest vals
+      loop _ vals = vals
+      extend x Nothing = Just x
+      extend x (Just y) = Just (x ++ y)
+
+-- assoc key alist =
+--    concat [ rest | L _ (S _ head : rest) <- alist, key == head ]
+
+nassoc :: MonadFail m => String -> [SExpr Pos] -> m (Maybe Int)
+nassoc key xs =
+    case assoc key xs of
+      Nothing -> return Nothing
+      Just [val] ->
+          do
+            ns <- num val
+            return (Just ns)
+      Just (x:_) -> fail (shows (annotation x) "Expecting one number")
+      Just [] -> fail (shows (annotation (head xs)) "Expecting one number")
+
+num :: MonadFail m => SExpr Pos -> m Int
+num (N _ n) = return n
+num x = fail (shows (annotation x) "Expecting a number")
diff --git a/src/CPSA/Prolog/Main.hs b/src/CPSA/Prolog/Main.hs
new file mode 100644
--- /dev/null
+++ b/src/CPSA/Prolog/Main.hs
@@ -0,0 +1,159 @@
+-- Prints the output of a CPSA run as a Prolog database.
+
+-- This programs loads CPSA output.  It assembles the skeletons in the
+-- output into a forest of derivation trees.  It then prints the
+-- forest in Prolog syntax.  To be loadable by Prolog, the output must
+-- be sorted so that clauses of one predicate are colocated.
+
+-- The output should be used by SWI Prolog as strings must not be atoms.
+-- Load the generated file using consult/1.
+
+-- Copyright (c) 2024 The MITRE Corporation
+--
+-- This program is free software: you can redistribute it and/or
+-- modify it under the terms of the BSD License as published by the
+-- University of California.
+
+module Main (main) where
+
+import System.IO
+import Data.Char (toLower)
+import Text.Printf (printf)
+import CPSA.Lib.SExpr
+import CPSA.Lib.Entry
+import CPSA.Prolog.Loader
+import CPSA.Prolog.Tree
+
+main :: IO ()
+main =
+    do
+      (p, (output, _)) <- start filterOptions filterInterp
+      ks <- loadPreskels p
+      h <- outputHandle output
+      prolog h (forest ks)
+      hClose h
+
+-- Load preskeletons
+loadPreskels :: PosHandle -> IO ([Preskel])
+loadPreskels h =
+    do
+      (_, k, s) <- loadFirst h
+      ks <- loop [k] s
+      return ks
+    where
+      loop ks s =
+          do
+            n <- loadNext s
+            case n of
+              Nothing ->        -- EOF
+                  return $ reverse ks
+              Just (k, s) ->
+                  loop (k:ks) s
+
+-- Print forest
+prolog :: Handle -> Forest -> IO ()
+prolog h f = mapM_ (root h) f
+
+root :: Handle -> Tree -> IO ()
+root h t =
+    do
+      hPutStrLn h (printf "root(%d)." (label $ vertex t))
+      tree h t
+
+tree :: Handle -> Tree -> IO ()
+tree h t =
+    do
+      let l = label $ vertex t
+      body h l (alist $ vertex t)
+      strands h l 0 (alist $ vertex t)
+      mapM_ (child h l) (children t)
+      mapM_ (dup h l) (seen $ vertex t)
+
+body :: Handle -> Int -> [SExpr Pos] -> IO ()
+body h l xs =
+    do
+      hPutStr h (printf "skel(%d, " l)
+      sexprs h xs
+      hPutStrLn h ")."
+
+strands :: Handle -> Int -> Int -> [SExpr Pos] -> IO ()
+strands _ _ _ [] =
+    return ()
+strands h l s (x@(L _ (S _ "defstrand" : _)) : xs) =
+    do
+      hPutStr h (printf "strand(%d, %d, " l s)
+      sexpr h x
+      hPutStrLn h ")."
+      strands h l (s + 1) xs
+strands h l s (x@(L _ (S _ "deflistener" : _)) : xs) =
+    do
+      hPutStr h (printf "strand(%d, %d, " l s)
+      sexpr h x
+      hPutStrLn h ")."
+      strands h l (s + 1) xs
+strands h l s (_ : xs) =
+    do
+      strands h l s xs
+
+sexprs :: Handle -> [SExpr a] -> IO ()
+sexprs h [] =
+    hPutStr h "[]"
+sexprs h (x : xs) =
+    do
+      hPutStr h "["
+      sexpr h x
+      rest h xs
+      hPutStr h "]"
+
+sexpr :: Handle -> SExpr a -> IO ()
+sexpr h (S _ []) = -- This should never happen
+    hPutStr h []
+sexpr h (S _ (c : s)) = -- Ensure symbol is a Prolog constant
+    hPutStr h (map toUnderScore (toLower c : s))
+sexpr h (Q _ q) =
+    do
+      hPutStr h "\""
+      hPutStr h q
+      hPutStr h "\""
+sexpr h (N _ n) =
+    hPutStr h (printf "%d" n)
+sexpr h (L _ xs) =
+    sexprs h xs
+
+toUnderScore :: Char -> Char
+toUnderScore '-' = '_'
+toUnderScore c = c
+
+rest :: Handle -> [SExpr a] -> IO ()
+rest _ [] =
+    return ()
+rest h (x : xs) =
+    do
+      hPutStr h ", "
+      sexpr h x
+      rest h xs
+
+child :: Handle -> Int -> Tree -> IO ()
+child h l t =
+    do
+      let lab = label $ vertex t
+      hPutStrLn h (printf "child(%d, %d)." l lab)
+      case assoc "operation" (alist $ vertex t) of
+        Just op ->
+            do
+              hPutStr h (printf "step(%d, " l) --
+              sexpr h (L () (S () "operation" : map strip op))
+              hPutStrLn h (printf ", %d)." lab)
+              tree h t
+        _ ->
+            do
+              hPutStrLn h (printf "step(%d, [], %d)." l lab)
+              tree h t
+
+dup :: Handle -> Int -> (Int, SExpr a) -> IO ()
+dup _ l (lab, _) | l == lab = return () -- Ignore self loops
+dup h l (lab, op) =
+    do
+      hPutStr h (printf "step(%d, " l)
+      sexpr h op
+      hPutStrLn h (printf ", %d)." lab)
diff --git a/src/CPSA/Prolog/Tree.hs b/src/CPSA/Prolog/Tree.hs
new file mode 100644
--- /dev/null
+++ b/src/CPSA/Prolog/Tree.hs
@@ -0,0 +1,80 @@
+-- Generate a tree of preskeletons
+
+-- This code is based on what is in CPSA.Graph.Tree
+
+-- Copyright (c) 2024 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 CPSA.Prolog.Tree (Tree (..), Forest, forest) where
+
+import qualified Data.Map as M
+import Data.Map (Map)
+import Data.List (foldl')
+import CPSA.Lib.Utilities (seqList)
+import CPSA.Prolog.Loader
+
+-- The preskeletons in the output are assembled together for display
+-- into trees based on the parent relation.  In reality, the
+-- relationship between preskeletons is not tree-like, but includes
+-- other edges as a result of a preskeleton having cohort members that
+-- have been seen before.  These members are called a tree node's
+-- duplicates, and their children are displayed somewhere else in the
+-- display.
+
+data Tree = Tree
+    { vertex :: !Preskel,
+      children :: !Forest,      -- Freshly discovered preskeletons
+      duplicates :: !Forest }   -- Preskeletons already seen
+    deriving Show
+
+makeTree :: Preskel -> [Tree] -> [Tree] -> Tree
+makeTree k kids dups =
+    Tree { vertex = k,
+           children = seqList kids,
+           duplicates = seqList dups }
+
+type Forest = [Tree]
+
+-- Assemble preskeletons into a forest and then set the alive flag
+forest :: [Preskel] -> Forest
+forest ks =
+    reverse (foldl' f [] ks)
+    where
+      f ts k
+        | parent k == Nothing = -- Found tree root
+            assemble (childMap ks) k : ts
+        | otherwise = ts        -- Otherwise skip k
+
+-- A child map maps a label to a preskeleton and a list of its
+-- childnen.  The map is derived by looking at the parent field.  The
+-- code assumes a parent precedes its children in the input list.
+childMap :: [Preskel] -> Map Int (Preskel, [Preskel])
+childMap ks =
+    foldl' child M.empty ks
+    where
+      child cm k =
+          case parent k of
+            Nothing -> cm'
+            Just p ->
+                M.adjust addChild p cm'
+          where
+            cm' = M.insert (label k) (k, []) cm
+            addChild (k', children) =
+                (k', k : children)
+
+-- Assemble preskeletons into a tree
+assemble :: Map Int (Preskel, [Preskel]) -> Preskel -> Tree
+assemble table k =
+    makeTree k (kids k) (dups k)
+    where
+      kids k =
+          case M.lookup (label k) table of
+            Nothing -> []       -- This should never happen
+            Just (_, ks) -> map (assemble table) (reverse ks)
+      dups k =
+          [ makeTree k' [] []   -- Make an empty tree for a duplicate
+            | (tag, _) <- seen k,
+              k' <- maybe [] (\(k, _) -> [k]) (M.lookup tag table) ]
diff --git a/src/CPSA/Query/Tree.hs b/src/CPSA/Query/Tree.hs
--- a/src/CPSA/Query/Tree.hs
+++ b/src/CPSA/Query/Tree.hs
@@ -30,12 +30,6 @@
       duplicates :: !Forest }   -- Preskeletons already seen
     deriving Show
 
-instance Eq Tree where
-    t0 == t1 = vertex t0 == vertex t1
-
-instance Ord Tree where
-    compare t0 t1 = compare (vertex t0) (vertex t1)
-
 makeTree :: Preskel -> [Tree] -> [Tree] -> Tree
 makeTree k kids dups =
     Tree { vertex = k,
diff --git a/src/CPSA/Reduction.hs b/src/CPSA/Reduction.hs
--- a/src/CPSA/Reduction.hs
+++ b/src/CPSA/Reduction.hs
@@ -20,6 +20,7 @@
 import CPSA.Options
 import CPSA.Algebra
 import CPSA.Protocol
+import CPSA.Operation
 import CPSA.Strand
 import CPSA.Cohort
 import CPSA.Displayer
@@ -29,30 +30,30 @@
 import Control.Exception (try)
 import System.IO.Error (ioeGetErrorString)
 
-zP :: Show a => a -> b -> b
-zP x y = unsafePerformIO (print x >> return y)
+z :: Show a => a -> b -> b
+z x y = unsafePerformIO (print x >> return y)
 
 zz :: Show a => a -> a
-zz x = zP x x
+zz x = z x x
 
 zb :: Show a => a -> Bool -> Bool
-zb a False = zP a False
+zb a False = z a False
 zb _ b = b
 
 zn :: Show a => a -> Maybe b -> Maybe b
-zn x Nothing = zP x Nothing
+zn x Nothing = z x Nothing
 zn _ y = y
 
 zf :: Show a => a -> Bool -> Bool
-zf x False = zP x False
+zf x False = z x False
 zf _ y = y
 
 zt :: Show a => a -> Bool -> Bool
-zt x True = zP x True
+zt x True = z x True
 zt _ y = y
 
 zl :: Show a => [a] -> [a]
-zl a = zP (length a) a
+zl a = z (length a) a
 
 zi :: Instance -> String
 zi inst =
@@ -119,13 +120,40 @@
 -- returns it.  What follows is the data structure used to store
 -- information in the seen history used for the isomorphism check.
 -- The integer is the label of the seen skeleton.
-type IPreskel = (Gist, Int)
+type IPreskel = (Preskel, Int)
 
--- Is the skeleton summarized by gist g isomorphic to one with the
--- given label?
-wasSeen :: Gist -> IPreskel -> Bool
-wasSeen g (g', _) = isomorphic g g'
+stronglyIsomorphic :: Preskel -> Preskel -> [Sid]
+stronglyIsomorphic k1 k2 =
+    loop $ findIsomorphisms (gist k1) (gist k2)
+    where
+      loop [] = []
+      loop ((_, _, sm) : maps) =
+          if unrealizedInvariant sm then
+             sm
+          else
+             loop maps
 
+      translateNode sidMap (s,i) = ((sidMap !! s), i)
+
+      setsEq as bs = subset as bs &&
+                     subset bs as
+
+      unrealizedInvariant sidMap =
+          setsEq (map (translateNode sidMap) $ unrealized k1)
+                 $ unrealized k2
+
+-- Suppose homomorphism H has strand map sm1 and homomorphism J has
+-- strand map sm2, where H's target is J's source.
+
+-- Then the strand map of J o H is composeStrandMap sm1 sm2.
+
+composeStrandMap :: [Sid] -> [Sid] -> [Sid]
+composeStrandMap sm1 sm2 = map ((!!) sm2) sm1
+
+--        take (min (length sm1) (length sm2))
+--                (map ((!!) sm2) )
+--    map ((!!) (take (L.length sm1) sm2)) sm1
+
 -- A seen history as a list.
 
 newtype Seen = Seen [IPreskel]
@@ -138,9 +166,20 @@
 remember :: IPreskel -> Seen -> Seen
 remember ik (Seen seen) = Seen (ik : seen)
 
--- Find an element of the seen history that satisfies a predicate.
-recall :: (IPreskel -> Bool) -> Seen -> Maybe (IPreskel)
-recall f (Seen seen) = L.find f seen
+-- If preskel has been seen, return its label and strand map.
+recall :: Preskel -> Seen -> Maybe (Int, [Sid])
+recall k (Seen seen) =
+    loop seen
+    where
+      loop [] = Nothing
+      loop ((k', n) : seen) =
+          let (k1, k2) = if generalized k then
+                             (k', k)
+                         else
+                             (k, k') in
+          case stronglyIsomorphic k1 k2 of
+            [] -> loop seen
+            sm -> Just (n, sm)
 
 -- Create an empty seen history
 void :: Seen
@@ -161,8 +200,8 @@
 
 data Reduct t g s e
     = ReductStable !(LPreskel)
-    | Reduct !(LPreskel) !Int ![Preskel] ![Int]
-    | Genlz !(LPreskel) !Int ![Preskel] ![Int]
+    | Reduct !(LPreskel) !Int ![Preskel] ![SeenSkel]
+    | Genlz !(LPreskel) !Int ![Preskel] ![SeenSkel]
 
 parMap :: (a -> b) -> [a] -> [b]
 parMap _ [] = []
@@ -198,7 +237,7 @@
             if isomorphic (gist k) (gist k') then -- Input was a skeleton
                 let lk' = LPreskel k' n 0 Nothing in
                 begin p h ks (n + optLimit p) (n + 1)
-                         (hist (gist k', n)) lk'
+                         (hist (k', n)) lk'
             else                -- Input was not a skeleton
                 do
                   let lk = LPreskel k n (-1) Nothing
@@ -206,7 +245,7 @@
                            Preskeleton "Not a skeleton")
                   let lk' = withParent k' (n + 1) lk
                   begin p h ks (n + optLimit p) (n + 2)
-                           (hist (gist k', n + 1)) lk'
+                           (hist (k', n + 1)) lk'
         _ -> error "Main.solve: can't handle more than one skeleton"
 
 -- Begin by applying rules as much as possible.
@@ -286,14 +325,14 @@
     | nstrands (content lk) >= optBound p = -- Check strand count
         step p h ks m oseen n seen todo (lk : toobig) reducts
 step p h ks m oseen n seen todo toobig (ReductStable lk : reducts) =
-    case recall (wasSeen (gist (content lk))) seen of
+    case recall (content lk) seen of
       Just (_, _) ->
-      --           zP ("seen", label lk) $
+      --           z ("seen", label lk) $
           step p h ks m oseen n seen todo toobig reducts
       Nothing ->
           do
             wrt p h (commentPreskel lk [] [] Shape Nada "")
-      -- zP ("unseen", label lk) $
+      -- z ("unseen", label lk) $
             step p h ks m oseen n seen todo toobig reducts
 
 step p h ks m oseen n seen todo toobig (Genlz lk size kids dups : reducts)
@@ -360,12 +399,39 @@
            visitOldStrandsFirst = optTryOldStrandsFirst p,
            reverseNodeOrder = optTryYoungNodesFirst p}
 
-duplicates :: Seen -> ([Preskel], [Int]) -> Preskel -> ([Preskel], [Int])
+-- The Seen skeleton's label with the duplicate skeleton
+type SeenSkel = (Int, Preskel)
+
+duplicates :: Seen -> ([Preskel], [SeenSkel]) -> Preskel ->
+              ([Preskel], [SeenSkel])
 duplicates seen (unseen, dups) kid =
-    case recall (wasSeen $ gist kid) seen of
-      Just (_, label) -> (unseen, label : dups)
+    case recall kid seen of
+      Just (label, sm) -> (unseen, (label, fixStrandMap kid sm) : dups)
       Nothing -> (kid : unseen, dups)
 
+fixStrandMap :: Preskel -> [Sid] -> Preskel
+fixStrandMap k sm =
+    updateStrandMap (composeStrandMap sm1 sm2)
+                     --    (if sm1Challenging sm1
+                     --     then z ("sm1 is challenging: " ++ (show sm1)) sm1
+                     --     else sm1)
+                     --    sm2
+    k
+    where
+      (sm1, sm2) =
+          if generalized k then
+              (sm, getStrandMap kop)
+          else
+            (getStrandMap kop, sm)
+      kop = operation k
+      -- sm1Challenging = any ((<=) (L.length sm)) 
+
+generalized :: Preskel -> Bool
+generalized k =
+    case operation k of
+      Generalized _ _ -> True
+      _ -> False
+
 -- Make a todo list for dump
 mktodo :: [Reduct t g s e] -> [LPreskel] -> [LPreskel] -> [LPreskel]
 mktodo reducts todo toobig =
@@ -375,17 +441,16 @@
       f sofar (Genlz lk _ _ _) = lk : sofar
       f sofar (ReductStable _) = sofar
 
-type Next = (Int, Seen, [LPreskel], [Int])
+type Next = (Int, Seen, [LPreskel], [SeenSkel])
 
 -- Update state variables used by step.
 next :: LPreskel -> Next -> Preskel -> Next
 next p (n, seen, todo, dups) k =
-    let g = gist k in
-    case recall (wasSeen g) seen of
-      Just (_, label) ->
-          (n, seen, todo, label : dups)
+    case recall k seen of
+      Just (label, sm) ->
+          (n, seen, todo, (label, fixStrandMap k sm) : dups)
       Nothing ->
-          (n + 1, remember (g, n) seen, lk : todo, dups)
+          (n + 1, remember (k, n) seen, lk : todo, dups)
           where
             lk = withParent k n p -- Label a preskeleton here
 
@@ -441,7 +506,7 @@
 -- Add a label, maybe a parent, a list of seen preskeletons isomorphic
 -- to some members of this skeleton's cohort, and a list of unrealized
 -- nodes.  If it's a shape, note this fact.  Add a comment if present.
-commentPreskel :: LPreskel -> [Int] -> [Node] -> Kind ->
+commentPreskel :: LPreskel -> [SeenSkel] -> [Node] -> Kind ->
                   Anno -> String -> SExpr ()
 commentPreskel lk seen unrealized kind anno msg =
     let realizedToken = case (null unrealized) of
@@ -450,8 +515,10 @@
     displayPreskel k $
     addKeyValues "label" [N () (label lk)] $
     maybeAddVKeyValues "parent" (\p -> [N () (label p)]) (parent lk) $
-    condAddKeyValues "seen" (not $ null seen)
-                     (map (N ()) (L.sort (L.nub seen))) $
+    condAddKeyValues "seen" (not $ null sortedSeen)
+                     (map (N () . fst) sortedSeen) $
+    condAddKeyValues "seen-ops" (not $ null sortedSeen)
+                     (map displaySeen sortedSeen) $
     addKeyValues realizedToken (map displayNode $ L.sort unrealized) $
     addKindKey kind $ addAnnoKey anno $
     condAddKeyValues "satisfies" (kind == Shape && (not $ null $ kgoals k))
@@ -462,6 +529,9 @@
     -- Nodes of origination
     -- Added for cpsasas program
     condAddKeyValues "origs" (starter k || fringe) (origs k) $
+    condAddKeyValues "ugens" (not (null (gens k)) &&
+                                      (starter k || fringe))
+                         (gens k) $
     -- Messages
     case msg of
       "" -> []
@@ -469,6 +539,7 @@
     where
       fringe = isFringe kind
       k = content lk
+      sortedSeen = L.sortOn fst seen
       starter k =               -- True for the POV skeleton and
           case pov k of         -- just a few others
             Nothing -> True
@@ -523,6 +594,14 @@
 addAnnoKey SatisfiesAll xs = addKeyValues "satisfies-all" [] xs
 addAnnoKey Dead xs = addKeyValues "dead" [] xs
 
+displaySeen :: SeenSkel -> SExpr ()
+displaySeen (label, k) =
+    L () (N () label : displayOperation k ctx
+                (displayStrandMap k []))
+    where
+      ctx = varsContext vars
+      vars = kfvars k ++ kvars k
+
 -- Variable assignments and security goals
 
 satisfies :: Preskel -> [SExpr ()]
@@ -559,6 +638,14 @@
 origs k =
     [ L () [displayTerm ctx t, displayNode n]
       | (t, ns) <- korig k, n <- ns ]
+    where
+      ctx = addToContext emptyContext (kvars k)
+
+-- Prints the nodes of generation for each uniquely generated atom
+gens :: Preskel -> [SExpr ()]
+gens k =
+    [ L () [displayTerm ctx t, displayNode n]
+      | (t, ns) <- kugen k, n <- ns ]
     where
       ctx = addToContext emptyContext (kvars k)
 
diff --git a/src/CPSA/Strand.hs b/src/CPSA/Strand.hs
--- a/src/CPSA/Strand.hs
+++ b/src/CPSA/Strand.hs
@@ -7,18 +7,19 @@
 -- University of California.
 
 module CPSA.Strand (Instance, mkInstance, bldInstance, mkListener,
-    role, env, trace, height, listenerTerm, Sid, Node, mkPreskel,
-    firstSkeleton, Pair, Preskel, gen, protocol, kgoals, insts, orderings,
+    role, env, trace, height, listenerTerm, mkPreskel,
+    firstSkeleton, Preskel, gen, protocol, kgoals, insts, orderings,
     pov, knon, kpnon, kunique, kuniqgen, kabsent, kprecur, kgenSt,
     kconf, kauth, kfacts, korig, kugen, kpriority, kcomment, nstrands,
     kvars, kfvars, strandids, kterms, kchans, uniqOrig, uniqGen,
     preskelWellFormed, confCm, authCm,
     verbosePreskelWellFormed, Strand, inst, sid, nodes,
     Vertex, strand, pos, preds, event, graphNode, strands, vertex,
-    Gist, gist, isomorphic, factorIsomorphicPreskels, contract, augment,
+    Gist, gist, isomorphic, factorIsomorphicPreskels, findIsomorphisms, 
+    contract, augment,
     inheritRnon, inheritRpnon, inheritRunique, inheritRuniqgen, inheritRabsent,
     inheritRconf, inheritRauth, addListener, addBaseListener, addAbsence,
-    Cause (..), Direction (..), Method (..), Operation (..),
+    updateStrandMap,
     operation, krules, pprob, prob, homomorphism, toSkeleton, generalize,
     collapse, sat, unSatReport, FTerm (..), Fact (..), simplify, rewrite,
     localSignal, rewriteUnaryOneOnce, nodePairsOfSkel, applyLeadsTo) where
@@ -34,6 +35,7 @@
 import CPSA.Algebra
 import CPSA.Channel
 import CPSA.Protocol
+import CPSA.Operation
 
 {--
 
@@ -140,8 +142,6 @@
 -- sequence.  Duplicates are allowed in the sequence, as two strands
 -- can be instantiated from the same role in the same way.
 
-type Sid = Int                  -- Strand Identifier
-
 data Instance = Instance
     { role :: Role,             -- Role from which this was
                                 -- instantiated
@@ -239,19 +239,7 @@
             ChMsg _ _ -> Nothing
       _ -> Nothing              -- Not a listener strand
 
--- Nodes, Pairs, and Graphs
-
--- A node is composed of two integers, a strand identifier and a
--- position.  The position identifies an event in the strand's trace.
--- The second integer must be non-negative and less than the strand's
--- height
-
-type Node = (Sid, Int)
-
--- A pair gives an ordering of two nodes, meaning the first node is
--- before the second one.
-
-type Pair = (Node, Node)
+-- Graphs
 
 -- Graphs of preskeletons
 
@@ -460,36 +448,9 @@
 
 type Edge = GraphEdge Event Instance
 
--- Data structure for tracking the causes for the creation of
--- preskeletons.
-
-data Cause
-    = Cause Direction Node CMT (Set CMT)
-    deriving Show
-
-data Direction = Encryption | Nonce | Channel deriving Show
-
-data Method
-    = Deleted Node
-    | Weakened Pair
-    | Separated Term
-    | Forgot Term
-    deriving Show
-
--- The operation used to generate the preskeleteton is either new via
--- the loader, a contraction, a regular augmentation, a listener
--- augmentation, or a mininization.  The augmentation includes a role
--- name and instance height.
-data Operation
-    = New
-    | Contracted Subst Cause
-    | Displaced Int Int String Int Cause
-    | AddedStrand String Int Cause
-    | AddedListener Term Cause
-    | AddedAbsence Term Term Cause
-    | Generalized Method
-    | Collapsed Int Int
-      deriving Show
+updateStrandMap :: [Sid] -> Preskel -> Preskel
+updateStrandMap sm k =
+    k { operation = addStrandMap sm $ operation k }
 
 -- Create a preskeleton.  The point of view field is not filled in.
 -- This version is exported for use by the loader.  This preskeleton
@@ -679,6 +640,48 @@
       (t, [_]) <- reverse (kugen k)
       return t
 
+{--
+originatingStrands :: Preskel -> Term -> [Sid]
+originatingStrands k t =
+    let (_,nodes) = originationNodes (strands k) t in
+    map (\(s,_) -> s) nodes
+--}
+
+-- Just check that the strands of the two nodes are equal.
+-- Convenient for debugging when needed.
+
+genOrigMatch :: Term -> Node -> Node -> Bool
+genOrigMatch _ (s,_) (s',_) | s == s' = True
+genOrigMatch _ _ _ | otherwise =
+--       z ("genOrigMatch:  Whoa, mismatch for " ++ (show u) ++ ", gen strand " ++
+--          (show (s,i)) ++ " vs orig strand " ++ (show (s',i')))
+      False
+
+-- The (Term,Nodes) pairs (t,[n]) where either t or its key-inverse
+-- originates uniquely at n.
+
+ugensPlusInverses :: Preskel -> [(Term, [Node])]
+ugensPlusInverses k =
+    concatMap
+    (\(u,gNodes) -> maybe [(u,gNodes)]
+                    (\u' -> [(u,gNodes), (u', gNodes)])
+                    (invertKey u))
+    (kugen k)
+
+-- Consider the preskeleton's ugens and their inverses.  If they have
+-- origination nodes, it's *good* for them to be on the same strands
+-- as the generation nodes.
+
+ugenGoodOrig :: Preskel -> Bool
+ugenGoodOrig k =
+    and
+    [ genOrigMatch u gNode oNode |
+      (u,gNodes) <- ugensPlusInverses k,
+      gNode <- gNodes,
+      oNode <- origs u ]
+    where
+      origs v = snd (originationNodes (strands k) v)
+
 -- 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
@@ -701,7 +704,8 @@
     all chanCheck (kauth k) &&
     wellOrdered k && acyclicOrder k &&
     roleOrigCheck k &&
-    roleGenCheck k
+    roleGenCheck k &&
+    True -- (ugenGoodOrig k || True)
     where
       terms = kterms k
       vs = kvars k
@@ -1047,6 +1051,14 @@
     sameSkyline g g' &&
     any (tryPerm g g') (permutations g g')
 
+findIsomorphisms :: Gist -> Gist -> [((Gen, Env), (Gen, Env), [Sid])]
+findIsomorphisms g g' =
+    if sameSkyline g g'
+    then
+        filter (tryPerm g g') $ permutations g g'
+    else
+        [] 
+
 sameSkyline :: Gist -> Gist -> Bool
 sameSkyline g g' =
     -- nvars g == nvars g' &&      -- Doesn't work for Diffie-Hellman
@@ -1294,17 +1306,17 @@
 
 substOper :: Subst -> Operation -> Operation
 substOper _ New = New
-substOper subst (Contracted s cause) =
-    Contracted (compose subst s) (substCause subst cause)
-substOper _ m@(Displaced _ _ _ _ _) = m
-substOper subst (AddedStrand role height cause) =
-    AddedStrand role height (substCause subst cause)
-substOper subst (AddedListener t cause) =
-    AddedListener (substitute subst t) (substCause subst cause)
-substOper subst (AddedAbsence t1 t2 cause) =
-    AddedAbsence (substitute subst t1) (substitute subst t2) (substCause subst cause)
-substOper _ m@(Generalized _) = m
-substOper _ m@(Collapsed _ _) = m
+substOper subst (Contracted sm s cause) =
+    Contracted sm (compose subst s) (substCause subst cause)
+substOper _ m@(Displaced _ _ _ _ _ _) = m
+substOper subst (AddedStrand sm role height cause) =
+    AddedStrand sm role height (substCause subst cause)
+substOper subst (AddedListener sm t cause) =
+    AddedListener sm (substitute subst t) (substCause subst cause)
+substOper subst (AddedAbsence sm t1 t2 cause) =
+    AddedAbsence sm (substitute subst t1) (substitute subst t2) (substCause subst cause)
+substOper _ m@(Generalized _ _) = m
+substOper _ m@(Collapsed _ _ _) = m
 
 substCause :: Subst -> Cause -> Cause
 substCause subst (Cause dir n t escape) =
@@ -1467,7 +1479,7 @@
 skeletonize thin prs =
   do
     prs' <- enforceAbsence prs
-    case hasMultipleOrig prs' of
+    case origGenChecks prs' of
       True -> []
       False -> enrich thin prs'
 
@@ -1478,32 +1490,45 @@
   | null (kabsent k) = [prs]
 enforceAbsence prs@(_, k, _, _, _) =
   do
-    s <- foldl f [(gen k, emptySubst)] (kabsent k)
-    ksubst prs s
+    e <- foldl f [(gen k, emptyEnv)] (kabsent k)
+    ksubst prs (fst e, substitution $ snd e)
   where
-    f ss ts =
+    f es ts =
       do
-        s <- ss
-        absentSubst s ts
+        e <- es
+        absentEnv e ts
 
 -- Determine if a given PRS has a multiple origination of a
 -- non-numeric fresh value.  Also when a value is both uniq
 -- orig and uniq gen, check to see if they start on different strands.
-hasMultipleOrig :: PRS -> Bool
-hasMultipleOrig prs =
+-- When a value is uniq gen and a *different* strand receives it in
+-- non-carried position and then transmits in carried position, that's
+-- also a problem.  If k is an asymmetric key, its inverse is
+-- generated at the same node at which it is uniquely generated.
+
+origGenChecks :: PRS -> Bool
+origGenChecks prs =
   any (\(_, l) -> length l > 1) (korig (skel prs)) ||
   any (\(_, l) -> length l > 1) (kugen (skel prs)) ||
-  origUgenDiffStrand (korig (skel prs)) (kugen (skel prs))
+  origUgenDiffStrand (korig (skel prs)) (ugensPlusInverses (skel prs)) ||
+  not(ugenGoodOrig (skel prs))
 
 -- When a value is both uniq orig and uniq gen, check to see if they
 -- start on different strands.
 origUgenDiffStrand :: [(Term, [Node])] -> [(Term, [Node])] -> Bool
 origUgenDiffStrand _ [] = False
 origUgenDiffStrand orig ((t, ns) : ugen) =
-  case lookup t orig of
-    Nothing -> origUgenDiffStrand orig ugen
-    Just ns' -> any f ns || origUgenDiffStrand orig ugen
-      where f (s, _) = any (\(s', _) -> s /= s') ns'
+  (case lookup t orig of
+     Nothing -> origUgenDiffStrand orig ugen
+     Just ns' -> any (f ns') ns || origUgenDiffStrand orig ugen)
+  ||
+  (maybe False
+   (\t' -> case lookup t' orig of
+             Nothing -> False
+             Just ns' -> any (f ns') ns)
+   $ invertKey t)
+    where
+      f ns' (s, _) = any (\(s', _) -> s /= s') ns'
 
 -- Hulling or Ensuring Unique Origination
 hull :: Bool -> PRS -> [PRS]
@@ -1526,7 +1551,7 @@
 -- Adds orderings so that a skeleton respects origination.
 
 enrich :: Bool -> PRS -> [PRS]
-enrich _ prs | hasMultipleOrig prs = []
+enrich _ prs | origGenChecks prs = []
 enrich thin (k0, k, n, phi, hsubst) =
     let o = foldl (addUniqOrigOrderings k) (orderings k) (kunique k) in
     let o' = foldl (addUniqGenOrderings k) o (kuniqgen k) in
@@ -1908,7 +1933,7 @@
 contract :: Preskel -> Node -> Cause -> (Gen, Subst) -> [Ans]
 contract k n cause subst =
     do
-      prs <- ksubst (k, k { operation = Contracted emptySubst cause,
+      prs <- ksubst (k, k { operation = Contracted [] emptySubst cause,
                             krules = [] },
                      n, strandids k, emptySubst) subst
       prs' <- skeletonize useThinningWhileSolving prs
@@ -1940,7 +1965,7 @@
                    (Gen, Subst) -> Instance -> [PRS]
 substAndAugment k n cause role subst inst =
     do
-      let operation' = AddedStrand (rname role) (height inst) cause
+      let operation' = AddedStrand [] (rname role) (height inst) cause
       prs <- ksubst (k, k { operation = operation',
                             krules = [] }, n,
                      strandids k, emptySubst) subst
@@ -2059,8 +2084,8 @@
 unifyTraces _ _ _ = []
 
 addedToDisplaced :: Operation -> Int -> Int -> Operation
-addedToDisplaced (AddedStrand role height cause) s s' =
-    Displaced s s' role height cause
+addedToDisplaced (AddedStrand [] role height cause) s s' =
+    Displaced [] s s' role height cause
 addedToDisplaced _ _ _ = error "Strand.addedToDisplaced: Bad operation"
 
 -- Listener Augmentation
@@ -2076,7 +2101,7 @@
       k' = newPreskel gen' (shared k) insts' orderings' (knon k)
            (kpnon k) (kunique k) (kuniqgen k) (kabsent k) (kprecur k)
            (kgenSt k) (kconf k) (kauth k) (kfacts k) (kpriority k)
-           (AddedListener t cause) [] (pprob k) (prob k) (pov k)
+           (AddedListener [] t cause) [] (pprob k) (prob k) (pov k)
       (gen', inst) = mkListener (protocol k) (gen k) t
       insts' = insts k ++ [inst]
       pair = ((length (insts k), 1), n)
@@ -2105,7 +2130,7 @@
       k' = newPreskel gen'' (shared k) insts' orderings' (knon k)
            (kpnon k) (kunique k) (kuniqgen k) (kabsent k) precur'
            (kgenSt k) (kconf k) (kauth k) (kfacts k) (kpriority k)
-           (AddedListener t' cause) [] (pprob k) (prob k) (pov k)
+           (AddedListener [] t' cause) [] (pprob k) (prob k) (pov k)
       (gen', t') = basePrecursor (gen k) t
       (gen'', inst) = mkListener (protocol k) gen' t'
       insts' = insts k ++ [inst]
@@ -2125,7 +2150,7 @@
       k' = newPreskel (gen k) (shared k) (insts k) (orderings k)
            (knon k) (kpnon k) (kunique k) (kuniqgen k) absent' (kprecur k)
            (kgenSt k) (kconf k) (kauth k) (kfacts k) (kpriority k)
-           (AddedAbsence x t cause) (krules k) (pprob k) (prob k) (pov k)
+           (AddedAbsence [] x t cause) (krules k) (pprob k) (prob k) (pov k)
       absent' = (x, t) : kabsent k
 
 -- Homomorphisms
@@ -2377,7 +2402,7 @@
 deleteNodeRest k gen n insts' orderings prob facts =
     newPreskel gen (shared k) insts' orderings non' pnon' unique'
     uniqgen' absent' precur' genSt' conf'
-    auth' facts prio' (Generalized (Deleted n)) [] (pprob k) prob (pov k)
+    auth' facts prio' (Generalized [] (Deleted n)) [] (pprob k) prob (pov k)
     where
       -- Drop nons that aren't mentioned anywhere
       non' = filter mentionedIn (knon k)
@@ -2489,7 +2514,7 @@
       k' = newPreskel (gen k) (shared k) (insts k) orderings (knon k)
            (kpnon k) (kunique k) (kuniqgen k) (kabsent k) (kprecur k)
            (kgenSt k) (kconf k) (kauth k) (kfacts k) (kpriority k)
-           (Generalized (Weakened p)) [] (pprob k) (prob k) (pov k)
+           (Generalized [] (Weakened p)) [] (pprob k) (prob k) (pov k)
 
 -- Origination assumption forgetting
 
@@ -2510,7 +2535,7 @@
       delNon t =
           renewPreskel
           $ k { knon = L.delete t (knon k),
-                operation = Generalized (Forgot t), krules = [] }
+                operation = Generalized [] (Forgot t), krules = [] }
 
 skelNons :: Preskel -> [Term]
 skelNons k =
@@ -2527,7 +2552,7 @@
       delPnon t =
           renewPreskel
           $ k { kpnon = L.delete t (kpnon k),
-                operation = Generalized (Forgot t), krules = [] }
+                operation = Generalized [] (Forgot t), krules = [] }
 
 skelPnons :: Preskel -> [Term]
 skelPnons k =
@@ -2544,7 +2569,7 @@
       delUniq t =
           renewPreskel
           $ k { kunique = L.delete t (kunique k),
-                operation = Generalized (Forgot t),
+                operation = Generalized [] (Forgot t),
                 krules = [] }
 
 skelUniques :: Preskel -> [Term]
@@ -2561,7 +2586,7 @@
     where
       delUgen t =
           k { kuniqgen = L.delete t (kuniqgen k),
-              operation = Generalized (Forgot t), krules = [] }
+              operation = Generalized [] (Forgot t), krules = [] }
 
 skelUniqgens :: Preskel -> [Term]
 skelUniqgens k =
@@ -2665,11 +2690,12 @@
       k0 = newPreskel gen' (shared k) insts' (orderings k) non pnon
            unique0 uniqgen0 (kabsent k) (kprecur k)
            (kgenSt k) (kconf k) (kauth k) (kfacts k) (kpriority k)
-           (Generalized (Separated t))
+           (Generalized [] (Separated t))
            [] (pprob k) (prob k) (pov k)
       k1 = newPreskel gen' (shared k) insts' (orderings k) non pnon
            unique1 uniqgen1 (kabsent k) (kprecur k) (kgenSt k)
-           (kconf k) (kauth k) facts (kpriority k) (Generalized (Separated t))
+           (kconf k) (kauth k) facts (kpriority k) (Generalized []
+                                                    (Separated t))
            [] (pprob k) (prob k) (pov k)
       (gen', insts') = changeStrands locs t gen (strands k)
       non = knon k ++ map (instantiate env) (knon k)
@@ -2732,11 +2758,11 @@
 collapseStrands k s s' =
     do
       (s, s', subst) <- unifyStrands k s s'
-      prs <- ksubst (k, k { operation = Collapsed s s', krules = [] },
+      prs <- ksubst (k, k { operation = Collapsed [] s s', krules = [] },
                      (0, 0), strandids k, emptySubst) subst
       prs <- compress True prs s s'
-      prs <- skeletonize useThinningDuringCollapsing prs
-      return $ skel prs
+      prs@(_, _, _, sm, _) <- skeletonize useThinningDuringCollapsing prs
+      return $ updateStrandMap sm $ skel prs
 
 -- Facts
 
diff --git a/src/cpsa4prolog.pl b/src/cpsa4prolog.pl
new file mode 100644
--- /dev/null
+++ b/src/cpsa4prolog.pl
@@ -0,0 +1,175 @@
+% -*- mode: prolog -*-
+
+%% Library of predicates for analyzing cpsa4prolog output
+
+%% The cpsa4prolog program is used to analyze the output of cpsa4.  It
+%% translates cpsa4 output into a Prolog database that captures the
+%% essential features of the output in a form that can be queried
+%% using all of the power of Prolog.
+
+%% cpsa4prolog assembles the skeletons in the output into a forest of
+%% derivation trees.  It then prints the forest in Prolog syntax.  To
+%% be loadable by Prolog, the output must be sorted so that clauses of
+%% one predicate are colocated.  The sorting program provided in all
+%% dialects of Unix does the job.
+
+%% The output should be used by SWI Prolog as strings must not be
+%% atoms.  Load the file generated by cpsa4prolog using consult/1.
+%% Next load your query.  This file contains useful predicates that
+%% may help formulate your query.  The comments for each predicate are
+%% intended help users understand the output format.
+
+%% Copyright (c) 2024 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.
+
+%% PATHS
+
+%% The predicate path(L, Ls) is true if Ls is a path through the
+%% derivation tree that starts with label L and ends with the label of
+%% a skeleton that is at the root of the tree that contains L.  The
+%% path predicate uses the step/3 predicate to determine if a skeletion
+%% was derived from another skeleton.
+
+%% The step predicate defines a transition relation for individual
+%% cpsa4 steps.  step(P, O, L) is true if a cpsa4 step that started at
+%% the skeleton labeled P produced a skeleton labeled L using the
+%% operation O.  Notice that the same skeleton can appear as the
+%% result of a step starting at different skeletons.  This means the
+%% path predicate can find more than one path to the root.
+
+%% For the path predicate, the operation field information is not
+%% used.
+
+path(L, [L]) :-
+    root(L).
+
+path(L, [L|Ls]) :-
+    step(P, _, L),
+    path(P, Ls).
+
+%% A derivation tree is really a directed acyclic graph.  If the links
+%% used for seen children are removed, the derivation tree becomes a
+%% true tree--every child has exactly one parent.  The child/2
+%% predicate encodes that relation.  It is used to traverse the tree
+%% without revisiting a skeleton twice.  One can use it to count the
+%% number of skeletons in a tree, for example.  Here we use it to find
+%% the terminal skeletons without deplicates.  A terminal node is one
+%% that has no successors.
+
+terminal(L) :-
+    step(L, _, _), !,
+    fail.
+terminal(_).
+
+acc(W, W).
+acc(W, X) :-
+    child(W, Y),
+    acc(Y, X).
+
+%% A query to find the terminal skeletons using these predicates follows.
+
+%% ask(L) :-
+%%    root(W), acc(W, L), terminal(L).
+
+%% SKELETON ASSOCIATION LISTS
+
+%% The body of a skeleton is available as an association list.  It can
+%% be queried using has_key_val(L, K, V), where L is a skeleton label,
+%% K is a key, and V is its value.
+
+has_key_val(L, K, V) :-
+    skel(L, A),
+    assoc(A, K, V).
+
+assoc([[K | V] | _], K, V).
+assoc([_ | A], K, V) :-
+    assoc(A, K, V).
+
+%% A query to find the labels of skeletons that are not eventually
+%% dead follows.
+
+%% ask(L) :-
+%%     root(W), acc(W, L), acc(L, X), terminal(X), \+has_key_val(X, dead, _).
+
+%% ask_all(Ls) :-
+%%     findall(L, ask(L), Ls).
+
+%% *************************************************************A
+
+%% Goal language
+
+%% p(K, R, S, L) is true if skeleton K has a strand S that is an
+%% instance of role R as a string of length L.
+
+%% Listener case
+p(K, "", S, L) :-
+    !,
+    strand(K, S, [deflistener | _]),
+    L == 2.
+%% Non-listener case
+p(K, R, S, L) :-
+    atom_string(Ra, R),
+    strand(K, S, [defstrand, Ra, L | _]).
+
+%% p(K, R, V, S, T) if true if skeleton K has a strand S that is an
+%% instance of role R as a string that binds role variable V as a
+%% string to term T.
+
+%% Listener case
+p(K, "", S, V, T) :-
+    !,
+    V == "x",
+    strand(K, S, [deflistener, T]).
+p(K, R, V, S, T) :-
+    atom_string(Ra, R),
+    atom_string(Va, V),
+    strand(K, S, [defstrand, Ra, _, Args]),
+    assoc(Args, Va, [T]).
+
+%% prec(K, S1, I1, S2, I2) is true if skeleton K has an ordering from
+%% node (S1, I1) to node (S2, I2).
+prec(K, S1, I1, S2, I2) :-
+    skel(K, Alist),
+    assoc(Alist, precedes, Ans),
+    member([[S1, I1], [S2, I2]], Ans).
+
+%% leads_to(K, S1, I1, S2, I2) is true if skeleton K has a leads-to
+%% ordering from node (S1, I1) to node (S2, I2).
+leads_to(K, S1, I1, S2, I2) :-
+    skel(K, Alist),
+    assoc(Alist, leads_to, Ans),
+    member([[S1, I1], [S2, I2]], Ans).
+
+%% non(K, T) is true if skeleton K has a non-originating term T.
+non(K, T) :-
+    skel(K, Alist),
+    assoc(Alist, non_orig, Ans),
+    member(T, Ans).
+
+%% pnon(K, T) is true if skeleton K has a penetrator non-originating
+%% term T.
+pnon(K, T) :-
+    skel(K, Alist),
+    assoc(Alist, pen_non_orig, Ans),
+    member(T, Ans).
+
+%% uniq(K, T) is true if skeleton K has a uniquely originating term T.
+uniq(K, T) :-
+    skel(K, Alist),
+    assoc(Alist, uniq_orig, Ans),
+    member(T, Ans).
+
+%% ugen(K, T) is true if skeleton K has a uniquely generating term T.
+ugen(K, T) :-
+    skel(K, Alist),
+    assoc(Alist, uniq_gen, Ans),
+    member(T, Ans).
+
+%% fact(K, P, As) is true if skeleton K has the fact [P | As].
+fact(K, P, As) :-
+    skel(K, Alist),
+    assoc(Alist, facts, Ans),
+    member([P | As], Ans).
diff --git a/tst/DH_hack.tst b/tst/DH_hack.tst
--- a/tst/DH_hack.tst
+++ b/tst/DH_hack.tst
@@ -1,6 +1,6 @@
 (herald "DH Hack" (bound 15))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/DH_hack.scm")
 (comment "Strand count bounded at 15")
 
@@ -51,6 +51,7 @@
   (non-orig (invk x) (invk y) (privk gcs))
   (operation encryption-test (added-strand commute 2)
     (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
@@ -71,6 +72,7 @@
   (uniq-orig d cek x)
   (operation encryption-test (added-strand init1 1)
     (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
@@ -134,6 +136,7 @@
   (non-orig (invk x) (privk gcs))
   (operation encryption-test (added-strand commute 2)
     (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
@@ -154,6 +157,7 @@
   (uniq-orig d cek x)
   (operation encryption-test (added-strand init1 1)
     (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
@@ -217,6 +221,7 @@
   (non-orig (invk y) (privk gcs))
   (operation encryption-test (added-strand commute 2)
     (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
@@ -237,6 +242,7 @@
   (uniq-orig d cek x)
   (operation encryption-test (added-strand init1 1)
     (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
@@ -302,6 +308,7 @@
   (non-orig (invk x) (invk y) (privk gcs))
   (operation encryption-test (added-strand commute 2)
     (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs)) (0 0))
+  (strand-map 0 1)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
@@ -324,6 +331,7 @@
   (uniq-orig d cek x)
   (operation encryption-test (added-strand init1 1)
     (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
@@ -348,6 +356,7 @@
   (uniq-orig d cek x)
   (operation nonce-test (displaced 4 2 commute 2) cek (1 0)
     (enc cek (hash (invk x) y)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
@@ -373,6 +382,7 @@
   (uniq-orig d cek x)
   (operation nonce-test (added-strand commute 2) cek (1 0)
     (enc cek (hash (invk x) y)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
@@ -402,6 +412,7 @@
   (uniq-orig d cek x)
   (operation nonce-test (added-listener (hash (invk x) y)) cek (1 0)
     (enc cek (hash (invk x) y)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
@@ -428,6 +439,7 @@
   (uniq-orig d cek x)
   (operation nonce-test (added-listener (hash x (invk y))) cek (1 0)
     (enc cek (hash x (invk y))) (enc cek (hash (invk x) y)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
@@ -454,6 +466,7 @@
   (uniq-orig d cek x)
   (operation nonce-test (added-listener (hash (invk x) y)) cek (1 0)
     (enc cek (hash x (invk y))) (enc cek (hash (invk x) y)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
@@ -481,6 +494,7 @@
   (operation encryption-test (displaced 5 3 init1 1)
     (enc x (enc cek (hash (invk x) y)) (enc d-0 cek) (privk gcs-0))
     (4 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
@@ -510,6 +524,7 @@
   (uniq-orig d cek x)
   (operation nonce-test (added-listener (hash x (invk y))) cek (1 0)
     (enc cek (hash x (invk y))) (enc cek (hash (invk x) y)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
@@ -541,6 +556,7 @@
   (uniq-orig d cek x)
   (operation nonce-test (added-listener (hash (invk x) y)) cek (1 0)
     (enc cek (hash x (invk y))) (enc cek (hash (invk x) y)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
@@ -609,6 +625,7 @@
   (non-orig (invk x) (privk gcs))
   (operation encryption-test (added-strand commute 2)
     (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs)) (0 0))
+  (strand-map 0 1)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
@@ -631,6 +648,7 @@
   (uniq-orig d cek x)
   (operation encryption-test (added-strand init1 1)
     (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
@@ -655,6 +673,7 @@
   (uniq-orig d cek x)
   (operation nonce-test (displaced 4 2 commute 2) cek (1 0)
     (enc cek (hash (invk x) y)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
@@ -682,6 +701,7 @@
   (uniq-orig d cek x)
   (operation nonce-test (added-strand commute 2) cek (1 0)
     (enc cek (hash (invk x) y)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
@@ -711,6 +731,7 @@
   (uniq-orig d cek x)
   (operation nonce-test (added-listener (hash (invk x) y)) cek (1 0)
     (enc cek (hash (invk x) y)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
@@ -738,6 +759,7 @@
   (operation encryption-test (displaced 5 3 init1 1)
     (enc x (enc cek (hash (invk x) y)) (enc d-0 cek) (privk gcs-0))
     (4 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
@@ -806,6 +828,7 @@
   (non-orig (invk y) (privk gcs))
   (operation encryption-test (added-strand commute 2)
     (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs)) (0 0))
+  (strand-map 0 1)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
@@ -828,6 +851,7 @@
   (uniq-orig d cek x)
   (operation encryption-test (added-strand init1 1)
     (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
     ((recv cek) (send cek))
diff --git a/tst/DH_hack_shapes.tst b/tst/DH_hack_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/DH_hack_shapes.tst
@@ -0,0 +1,413 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "DH Hack" (bound 15))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/DH_hack.scm")
+
+(comment "Strand count bounded at 15")
+
+(defprotocol DH_hack basic
+  (defrole init1
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (send
+        (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs))))
+    (uniq-orig d cek x))
+  (defrole resp
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (recv
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    (non-orig (privk gcs)))
+  (defrole commute
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
+      (send
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    (non-orig (privk gcs)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton DH_hack
+  (vars (d data) (cek skey) (x y akey) (gcs name))
+  (defstrand resp 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (non-orig (invk x) (invk y) (privk gcs))
+  (traces
+    ((recv
+       (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs)))))
+  (label 0)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton DH_hack
+  (vars (d data) (cek skey) (x y akey) (gcs name))
+  (defstrand resp 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (defstrand commute 2 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (defstrand init1 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (precedes ((1 1) (0 0)) ((2 0) (1 0)))
+  (non-orig (invk x) (invk y) (privk gcs))
+  (uniq-orig d cek x)
+  (operation encryption-test (added-strand init1 1)
+    (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)) (1 0))
+  (traces
+    ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    ((recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
+      (send
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    ((send
+       (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((x x) (y y) (gcs gcs) (cek cek) (d d))))
+  (origs (cek (2 0)) (d (2 0)) (x (2 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol DH_hack basic
+  (defrole init1
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (send
+        (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs))))
+    (uniq-orig d cek x))
+  (defrole resp
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (recv
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    (non-orig (privk gcs)))
+  (defrole commute
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
+      (send
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    (non-orig (privk gcs)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton DH_hack
+  (vars (d data) (cek skey) (x y akey) (gcs name))
+  (defstrand resp 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (non-orig (invk x) (privk gcs))
+  (traces
+    ((recv
+       (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs)))))
+  (label 3)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton DH_hack
+  (vars (d data) (cek skey) (x y akey) (gcs name))
+  (defstrand resp 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (defstrand commute 2 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (defstrand init1 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (precedes ((1 1) (0 0)) ((2 0) (1 0)))
+  (non-orig (invk x) (privk gcs))
+  (uniq-orig d cek x)
+  (operation encryption-test (added-strand init1 1)
+    (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)) (1 0))
+  (traces
+    ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    ((recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
+      (send
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    ((send
+       (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))))
+  (label 5)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((cek cek) (x x) (gcs gcs) (y y) (d d))))
+  (origs (cek (2 0)) (d (2 0)) (x (2 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol DH_hack basic
+  (defrole init1
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (send
+        (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs))))
+    (uniq-orig d cek x))
+  (defrole resp
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (recv
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    (non-orig (privk gcs)))
+  (defrole commute
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
+      (send
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    (non-orig (privk gcs)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton DH_hack
+  (vars (d data) (cek skey) (y x akey) (gcs name))
+  (defstrand resp 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (non-orig (invk y) (privk gcs))
+  (traces
+    ((recv
+       (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs)))))
+  (label 6)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton DH_hack
+  (vars (d data) (cek skey) (y x akey) (gcs name))
+  (defstrand resp 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (defstrand commute 2 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (defstrand init1 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (precedes ((1 1) (0 0)) ((2 0) (1 0)))
+  (non-orig (invk y) (privk gcs))
+  (uniq-orig d cek x)
+  (operation encryption-test (added-strand init1 1)
+    (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)) (1 0))
+  (traces
+    ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    ((recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
+      (send
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    ((send
+       (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))))
+  (label 8)
+  (parent 6)
+  (realized)
+  (shape)
+  (maps ((0) ((cek cek) (y y) (gcs gcs) (x x) (d d))))
+  (origs (cek (2 0)) (d (2 0)) (x (2 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol DH_hack basic
+  (defrole init1
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (send
+        (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs))))
+    (uniq-orig d cek x))
+  (defrole resp
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (recv
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    (non-orig (privk gcs)))
+  (defrole commute
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
+      (send
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    (non-orig (privk gcs)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton DH_hack
+  (vars (d data) (cek skey) (x y akey) (gcs name))
+  (defstrand resp 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (deflistener cek)
+  (non-orig (invk x) (invk y) (privk gcs))
+  (traces
+    ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    ((recv cek) (send cek)))
+  (label 9)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(comment "Nothing left to do")
+
+(defprotocol DH_hack basic
+  (defrole init1
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (send
+        (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs))))
+    (uniq-orig d cek x))
+  (defrole resp
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (recv
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    (non-orig (privk gcs)))
+  (defrole commute
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
+      (send
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    (non-orig (privk gcs)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton DH_hack
+  (vars (d data) (cek skey) (x y akey) (gcs name))
+  (defstrand resp 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (deflistener cek)
+  (non-orig (invk x) (privk gcs))
+  (traces
+    ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    ((recv cek) (send cek)))
+  (label 20)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton DH_hack
+  (vars (d data) (cek skey) (x y akey) (gcs name))
+  (defstrand resp 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (deflistener cek)
+  (defstrand commute 2 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (defstrand init1 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (precedes ((2 1) (0 0)) ((2 1) (1 0)) ((3 0) (2 0)))
+  (non-orig (invk x) (privk gcs))
+  (uniq-orig d cek x)
+  (operation nonce-test (displaced 4 2 commute 2) cek (1 0)
+    (enc cek (hash (invk x) y)))
+  (traces
+    ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    ((recv cek) (send cek))
+    ((recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
+      (send
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    ((send
+       (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))))
+  (label 23)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps ((0 1) ((cek cek) (x x) (gcs gcs) (y y) (d d))))
+  (origs (cek (3 0)) (d (3 0)) (x (3 0))))
+
+(defskeleton DH_hack
+  (vars (d data) (cek skey) (x y akey) (gcs name))
+  (defstrand resp 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (deflistener cek)
+  (defstrand commute 2 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (defstrand init1 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (defstrand commute 2 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (precedes ((2 1) (0 0)) ((3 0) (2 0)) ((3 0) (4 0)) ((4 1) (1 0)))
+  (non-orig (invk x) (privk gcs))
+  (uniq-orig d cek x)
+  (operation encryption-test (displaced 5 3 init1 1)
+    (enc x (enc cek (hash (invk x) y)) (enc d-0 cek) (privk gcs-0))
+    (4 0))
+  (traces
+    ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    ((recv cek) (send cek))
+    ((recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
+      (send
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    ((send (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs))))
+    ((recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
+      (send
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs)))))
+  (label 26)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps ((0 1) ((cek cek) (x x) (gcs gcs) (y y) (d d))))
+  (origs (cek (3 0)) (d (3 0)) (x (3 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol DH_hack basic
+  (defrole init1
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (send
+        (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs))))
+    (uniq-orig d cek x))
+  (defrole resp
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (recv
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    (non-orig (privk gcs)))
+  (defrole commute
+    (vars (gcs name) (cek skey) (x y akey) (d data))
+    (trace
+      (recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
+      (send
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    (non-orig (privk gcs)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton DH_hack
+  (vars (d data) (cek skey) (y x akey) (gcs name))
+  (defstrand resp 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (deflistener cek)
+  (non-orig (invk y) (privk gcs))
+  (traces
+    ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    ((recv cek) (send cek)))
+  (label 27)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton DH_hack
+  (vars (d data) (cek skey) (y x akey) (gcs name))
+  (defstrand resp 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (deflistener cek)
+  (defstrand commute 2 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (defstrand init1 1 (d d) (cek cek) (x x) (y y) (gcs gcs))
+  (precedes ((2 1) (0 0)) ((3 0) (1 0)) ((3 0) (2 0)))
+  (non-orig (invk y) (privk gcs))
+  (uniq-orig d cek x)
+  (operation encryption-test (added-strand init1 1)
+    (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)) (2 0))
+  (traces
+    ((recv (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    ((recv cek) (send cek))
+    ((recv (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))
+      (send
+        (enc x (enc cek (hash x (invk y))) (enc d cek) (privk gcs))))
+    ((send
+       (enc x (enc cek (hash (invk x) y)) (enc d cek) (privk gcs)))))
+  (label 29)
+  (parent 27)
+  (realized)
+  (shape)
+  (maps ((0 1) ((cek cek) (y y) (gcs gcs) (x x) (d d))))
+  (origs (cek (3 0)) (d (3 0)) (x (3 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/Make4.hs b/tst/Make4.hs
deleted file mode 100644
--- a/tst/Make4.hs
+++ /dev/null
@@ -1,272 +0,0 @@
--- A simple, CPSA specific make system
-
-module Make (cpsa, shapes, sas, cleanse, get, set,
-             build, clean, roots) where
-
-{- Place a copy of this source file in the directory used to store
-CPSA problem statements, edit it to suit your needs, and load it into
-a Haskell interpreter.
-
-Normally, just the build and the clean command are used.  It's the
-build command that you usually modify.
-
-To analyze a problem in prob.scm, type:
-
-*Make> cpsa "prob"
-
-If successful, the analysis is in the file prob.xhtml, which can be
-viewed with a standards-compliant browser.
-
-For a shapes only version of the analysis, type:
-
-*Make> shapes "prob"
-
-If successful, the shapes are in the file prob_shapes.xhtml.
-
-*Make> sas "prob"
-
-If successful, the shape analysis sentences are in the file
-prob_sas.text.
-
-To remove the files generated from source files, type:
-
-*Make> cleanse "prob"
-
-To see the command-line options used by CPSA, type:
-
-*Make> get
-
-To change the command-line options used by CPSA to "-b 15", type:
-
-*Make> set "-b 15"
-
-To analyze all source files in the directory, type:
-
-*Make> build
-
-To remove the files generated from source files in the directory, type:
-
-*Make> clean
-
--}
-
-import Control.Monad (mapM_)
-import Data.List (sort)
-import Data.IORef (IORef, newIORef, readIORef, writeIORef)
-import System.Exit (ExitCode (..))
-import System.Process (system)
-import System.IO (putStrLn)
-import System.IO.Unsafe (unsafePerformIO)
-import System.FilePath (FilePath, splitExtension)
-import System.Directory (removeFile, doesFileExist, getModificationTime,
-                         getCurrentDirectory, getDirectoryContents)
-
--- Flags for CPSA
-
-initialCpsaFlags :: String
-initialCpsaFlags = "+RTS -M512m -RTS"
-
-graphFlags :: String
-graphFlags = ""
--- To enable zooming, use:
--- graphFlags = " -z"
-
--- A mutable location for CPSA flags
-cpsaFlags :: IORef String
-cpsaFlags = unsafePerformIO $ newIORef initialCpsaFlags
-
--- Get the CPSA flags
-get :: IO String
-get =
-    readIORef cpsaFlags
-
--- Set the CPSA flags
-set :: String -> IO ()
-set flags =
-    writeIORef cpsaFlags flags
-
--- Transformation rules
-
-data Rule = Rule
-    { prog :: String,           -- program to run
-      inputExt :: String,       -- input file name extension
-      outputExt :: String }     -- output file name extension
-
--- Graph Rule
-
-graph :: FilePath -> IO ()
-graph root =
-    make graphRule root         -- make graph using given rule
-
-graphRule :: Rule
-graphRule =
-    Rule { prog = "cpsa4graph" ++ graphFlags,
-           inputExt = cpsaExt,
-           outputExt = graphExt }
-
--- CPSA Rule
-
-cpsa :: FilePath -> IO ()
-cpsa root =
-    do
-      cpsaBasic root
-      shapes root
-      graph root
-
--- CPSA using Basic rule
-
-cpsaBasic :: FilePath -> IO ()
-cpsaBasic root =
-    do
-      flags <- get               -- get CPSA flags
-      make (cpsaBasicRule flags) root -- make CPSA output using given rule
-
-cpsaBasicRule :: String -> Rule
-cpsaBasicRule flags =
-    Rule { prog = "cpsa4 " ++ flags,
-           inputExt = sourceBasicExt,
-           outputExt = cpsaExt }
-
--- Shapes Rule
-
-shapes :: FilePath -> IO ()
-shapes root =
-    do
-      cpsaBasic root            -- Run CPSA if need be
-      make shapesRule root
-      graph $ root ++ shapesRoot
-
-shapesRule :: Rule
-shapesRule =
-    Rule { prog = "cpsa4shapes",
-           inputExt = cpsaExt,
-           outputExt = shapesRoot ++ cpsaExt }
-
--- SAS Rule
-
-sas :: FilePath -> IO ()
-sas root =
-    do
-      cpsaBasic root            -- Run CPSA if need be
-      make sasRule root
-
-sasRule :: Rule
-sasRule =
-    Rule { prog = "cpsa4sas",
-           inputExt = cpsaExt,
-           outputExt = sasExt }
-
--- Clean generated files
-
-cleanse :: FilePath -> IO ()
-cleanse root =
-    do
-      rm $ root ++ cpsaExt
-      rm $ root ++ graphExt
-      rm $ root ++ shapesRoot ++ cpsaExt
-      rm $ root ++ shapesRoot ++ graphExt
-      rm $ root ++ sasExt
-
--- File Extensions
-
-sourceBasicExt :: String
-sourceBasicExt = ".scm"
-
-cpsaExt :: String
-cpsaExt = ".txt"
-
-shapesRoot :: String
-shapesRoot = "_shapes"
-
-sasExt :: String
-sasExt = "_sas.text"
-
-graphExt :: String
-graphExt = ".xhtml"
-
--- Rule Interpreters
-
--- Make output for root using rule
-make :: Rule -> FilePath -> IO ()
-make rule root =
-    do
-      let input = root ++ inputExt rule
-      let output = root ++ outputExt rule
-      done <- made input output
-      case done of
-        True -> return ()       -- Nothing to do
-        False -> run (prog rule) input output
-
--- See if an output file is up-to-date
-made :: FilePath -> FilePath -> IO Bool
-made input output =
-    do
-      src <- doesFileExist input
-      dst <- doesFileExist output
-      case src && dst of
-        False -> return False
-        True ->
-            do
-              src <- getModificationTime input
-              dst <- getModificationTime output
-              return $ src < dst
-
--- Run a program with input and output from files
-
--- Print the command before running it.  Delete the output when the
--- command fails.
-run :: String -> FilePath -> FilePath -> IO ()
-run prog input output =
-    do
-      let cmd = prog ++ " -o " ++ output ++ " " ++ input
-      putStrLn cmd
-      code <- system cmd
-      case code of
-        ExitSuccess -> return ()
-        ExitFailure _ ->
-            do
-              --rm output
-              fail "Command failed"
-
--- Remove a file
-
--- Prints the command when there is a file to be deleted.
-rm :: FilePath -> IO ()
-rm output =
-    do
-      exists <- doesFileExist output
-      case exists of
-        False -> return ()      -- File doesn't exist
-        True ->
-            do                  -- Print command before removal
-              putStrLn $ "rm " ++ output
-              removeFile output
-
--- Return the roots of the CPSA source files in the current directory.
-
-roots :: [String] -> IO [FilePath]
-roots exts =
-    do
-      dir <- getCurrentDirectory
-      files <- getDirectoryContents dir
-      let roots = [ root |
-                    file <- files,
-                    let (root, ext) = splitExtension file,
-                    elem ext exts ] -- Filter for source files
-      return $ sort roots
-
--- Build the shapes for all the source files in the current directory.
-
-build :: IO ()
-build =
-    do
-      probs <- roots [sourceBasicExt]
-      mapM_ cpsa probs
-
--- Clean files generated for all the source files in the current directory.
-
-clean :: IO ()
-clean =
-    do
-      probs <- roots [sourceBasicExt]
-      mapM_ cleanse probs
diff --git a/tst/Makefile b/tst/Makefile
deleted file mode 100644
--- a/tst/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-CPSAFLAGS = +RTS -M512m -N12 -RTS
-CPSATIME = time 
-
-SRCS := $(wildcard *.scm) $(wildcard *.prot) $(wildcard *.lsp)
-
-include ../doc/cpsa4.mk
-
-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/README b/tst/README
deleted file mode 100644
--- a/tst/README
+++ /dev/null
@@ -1,20 +0,0 @@
-This directory contains the test suite for CPSA.  Files with a .scm
-extension are expected to succeed, ones with a .lsp extension expected
-are expected to fail, and ones with a .lisp are not run.  The .lisp
-files may run for a long time and succeed or maybe they fail.  The
-test suite is usually run by typing "./cpsatst" in the parent
-directory.
-
-After running the test suite, you will note files with the extension
-.xhtml.  These are XHTML/SVG compound documents that can be viewed by
-standards compliant browsers such as Firefox and Safari.
-
-New users should study CPSA's analysis of the following protocols in
-order, Needham-Schroeder (ns.xhtml), Woo-Lam (woolan.xhtml), Yahalom
-(yahalom.xhtml), ffgg (ffgg.xhtml), and finally Otway-Rees (or.xhtml).
-When studying the full output, simultaneously display the extracted
-shapes.  The shapes file has an extension of _shapes.xhtml.
-
-On the first pass, just look at the first two problems in the analysis
-of the Needham-Schroeder Protocol, and return to this test case when
-reading about role origination assumptions in the primer.
diff --git a/tst/ab.tst b/tst/ab.tst
--- a/tst/ab.tst
+++ b/tst/ab.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/ab.scm")
 
 (defprotocol ab basic
@@ -39,6 +39,7 @@
   (non-orig k)
   (uniq-orig x)
   (operation encryption-test (added-strand A 2) (enc x x k) (0 1))
+  (strand-map 0)
   (traces ((send (enc x k)) (recv (enc x x k)))
     ((recv (enc "A" x k)) (send (enc x x k))))
   (label 1)
@@ -55,6 +56,7 @@
   (non-orig k)
   (uniq-orig x)
   (operation encryption-test (added-strand B 2) (enc x x k) (0 1))
+  (strand-map 0)
   (traces ((send (enc x k)) (recv (enc x x k)))
     ((recv (enc "B" x k)) (send (enc x x k))))
   (label 2)
diff --git a/tst/ab_shapes.tst b/tst/ab_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/ab_shapes.tst
@@ -0,0 +1,38 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/ab.scm")
+
+(defprotocol ab basic
+  (defrole init
+    (vars (x text) (k skey))
+    (trace (send (enc x k)) (recv (enc x x k)))
+    (non-orig k)
+    (uniq-orig x))
+  (defrole A
+    (vars (x text) (k skey))
+    (trace (recv (enc "A" x k)) (send (enc x x k))))
+  (defrole B
+    (vars (x text) (k skey))
+    (trace (recv (enc "B" x k)) (send (enc x x k))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton ab
+  (vars (k skey) (x text))
+  (defstrand init 2 (k k) (x x))
+  (non-orig k)
+  (uniq-orig x)
+  (traces ((send (enc x k)) (recv (enc x x k))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (x (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(comment "Nothing left to do")
diff --git a/tst/abc.tst b/tst/abc.tst
--- a/tst/abc.tst
+++ b/tst/abc.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/abc.scm")
 
 (defprotocol abc basic
@@ -42,6 +42,7 @@
   (non-orig k)
   (uniq-orig x)
   (operation encryption-test (added-strand A 2) (enc x x k) (0 1))
+  (strand-map 0)
   (traces ((send (enc x k)) (recv (enc x x k)))
     ((recv (enc "A" x k)) (send (enc x x k))))
   (label 1)
@@ -58,6 +59,7 @@
   (non-orig k)
   (uniq-orig x)
   (operation encryption-test (added-strand B 2) (enc x x k) (0 1))
+  (strand-map 0)
   (traces ((send (enc x k)) (recv (enc x x k)))
     ((recv (enc "B" x k)) (send (enc x x k))))
   (label 2)
@@ -74,6 +76,7 @@
   (non-orig k)
   (uniq-orig x)
   (operation encryption-test (added-strand C 2) (enc x x k) (0 1))
+  (strand-map 0)
   (traces ((send (enc x k)) (recv (enc x x k)))
     ((recv (enc "C" x k)) (send (enc x x k))))
   (label 3)
diff --git a/tst/abc_shapes.tst b/tst/abc_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/abc_shapes.tst
@@ -0,0 +1,41 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/abc.scm")
+
+(defprotocol abc basic
+  (defrole init
+    (vars (x text) (k skey))
+    (trace (send (enc x k)) (recv (enc x x k)))
+    (non-orig k)
+    (uniq-orig x))
+  (defrole A
+    (vars (x text) (k skey))
+    (trace (recv (enc "A" x k)) (send (enc x x k))))
+  (defrole B
+    (vars (x text) (k skey))
+    (trace (recv (enc "B" x k)) (send (enc x x k))))
+  (defrole C
+    (vars (x text) (k skey))
+    (trace (recv (enc "C" x k)) (send (enc x x k))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton abc
+  (vars (k skey) (x text))
+  (defstrand init 2 (k k) (x x))
+  (non-orig k)
+  (uniq-orig x)
+  (traces ((send (enc x k)) (recv (enc x x k))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (x (0 0)))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(comment "Nothing left to do")
diff --git a/tst/aik.tst b/tst/aik.tst
--- a/tst/aik.tst
+++ b/tst/aik.tst
@@ -1,6 +1,6 @@
 (herald "Anonymous identity protocol from TCG")
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/aik.scm")
 
 (defprotocol aikprot basic
@@ -52,6 +52,7 @@
   (uniq-orig k (invk k))
   (operation encryption-test (added-strand pca 2)
     (enc "aic" i k x (privk pc)) (0 2))
+  (strand-map 0)
   (traces
     ((recv (cat x i (enc "ekc" mf ek (privk mf))))
       (send (cat i k x (enc "ekc" mf ek (privk mf))))
@@ -74,6 +75,7 @@
   (uniq-orig k (invk k))
   (operation encryption-test (added-strand ca 1)
     (enc "ekc" mf-0 ek-0 (privk mf-0)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat x i (enc "ekc" mf ek (privk mf))))
       (send (cat i k x (enc "ekc" mf ek (privk mf))))
@@ -98,6 +100,7 @@
   (operation encryption-test (contracted (ek-0 ek))
     (enc "aic" i k x (privk pc)) (0 2)
     (enc (enc "aic" i k x (privk pc)) ek))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat x i (enc "ekc" mf ek (privk mf))))
       (send (cat i k x (enc "ekc" mf ek (privk mf))))
@@ -127,6 +130,7 @@
   (operation encryption-test (added-strand pca 2)
     (enc "aic" i k x (privk pc)) (0 2)
     (enc (enc "aic" i k x (privk pc)) ek-0))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat x i (enc "ekc" mf ek (privk mf))))
       (send (cat i k x (enc "ekc" mf ek (privk mf))))
@@ -140,6 +144,10 @@
   (label 4)
   (parent 2)
   (seen 2)
+  (seen-ops
+    (2
+      (operation encryption-test (displaced 4 2 ca 1)
+        (enc "ekc" mf-1 ek-1 (privk mf-1)) (3 0)) (strand-map 0 1 2 1)))
   (unrealized (3 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -190,6 +198,7 @@
   (non-orig (privk pc) (privk mf))
   (operation encryption-test (added-strand pca 2)
     (enc "aic" i k x (privk pc)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (enc "aic" i k x (privk pc)))
       (send (enc "aic" i k x (privk pc))))
@@ -209,6 +218,7 @@
   (non-orig (invk ek) (privk pc) (privk mf))
   (operation encryption-test (added-strand ca 1)
     (enc "ekc" mf ek (privk mf)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (enc "aic" i k x (privk pc)))
       (send (enc "aic" i k x (privk pc))))
@@ -233,6 +243,7 @@
   (operation encryption-test (added-strand tpm 4)
     (enc "aic" i k x (privk pc)) (0 0)
     (enc (enc "aic" i k x (privk pc)) ek))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "aic" i k x (privk pc)))
       (send (enc "aic" i k x (privk pc))))
@@ -259,6 +270,7 @@
   (operation encryption-test (added-strand pca 2)
     (enc "aic" i k x (privk pc)) (0 0)
     (enc (enc "aic" i k x (privk pc)) ek))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "aic" i k x (privk pc)))
       (send (enc "aic" i k x (privk pc))))
@@ -270,6 +282,10 @@
   (label 9)
   (parent 7)
   (seen 7)
+  (seen-ops
+    (7
+      (operation encryption-test (displaced 4 2 ca 1)
+        (enc "ekc" mf-0 ek-0 (privk mf-0)) (3 0)) (strand-map 0 1 2 1)))
   (unrealized (3 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -285,6 +301,7 @@
   (uniq-orig k (invk k))
   (operation encryption-test (displaced 4 1 pca 2)
     (enc "aic" i k x (privk pc)) (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "aic" i k x (privk pc)))
       (send (enc "aic" i k x (privk pc))))
@@ -316,6 +333,7 @@
   (uniq-orig k (invk k))
   (operation encryption-test (added-strand pca 2)
     (enc "aic" i k x (privk pc)) (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "aic" i k x (privk pc)))
       (send (enc "aic" i k x (privk pc))))
@@ -347,6 +365,7 @@
   (uniq-orig k (invk k))
   (operation encryption-test (displaced 5 2 ca 1)
     (enc "ekc" mf-1 ek-0 (privk mf-1)) (4 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "aic" i k x (privk pc)))
       (send (enc "aic" i k x (privk pc))))
@@ -362,6 +381,8 @@
   (label 12)
   (parent 11)
   (seen 10)
+  (seen-ops
+    (10 (operation generalization deleted (1 0)) (strand-map 0 4 2 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -381,6 +402,7 @@
   (uniq-orig k (invk k))
   (operation encryption-test (added-strand ca 1)
     (enc "ekc" mf-1 ek-0 (privk mf-1)) (4 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "aic" i k x (privk pc)))
       (send (enc "aic" i k x (privk pc))))
@@ -415,6 +437,7 @@
   (operation encryption-test (contracted (ek-0 ek))
     (enc "aic" i k x (privk pc)) (3 2)
     (enc (enc "aic" i k x (privk pc)) ek))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "aic" i k x (privk pc)))
       (send (enc "aic" i k x (privk pc))))
@@ -450,6 +473,7 @@
   (operation encryption-test (displaced 6 1 pca 2)
     (enc "aic" i k x (privk pc)) (3 2)
     (enc (enc "aic" i k x (privk pc)) ek-0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "aic" i k x (privk pc)))
       (send (enc "aic" i k x (privk pc))))
@@ -488,6 +512,7 @@
   (operation encryption-test (added-strand pca 2)
     (enc "aic" i k x (privk pc)) (3 2)
     (enc (enc "aic" i k x (privk pc)) ek-0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "aic" i k x (privk pc)))
       (send (enc "aic" i k x (privk pc))))
@@ -506,6 +531,11 @@
   (label 16)
   (parent 13)
   (seen 13)
+  (seen-ops
+    (13
+      (operation encryption-test (displaced 7 5 ca 1)
+        (enc "ekc" mf-2 ek-1 (privk mf-2)) (6 0))
+      (strand-map 0 1 2 3 4 5 4)))
   (unrealized (6 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -522,6 +552,7 @@
   (non-orig srk (invk ek) (privk pc) (privk mf) (privk mf-1))
   (uniq-orig k (invk k))
   (operation generalization deleted (1 0))
+  (strand-map 0 2 3 4 5)
   (traces
     ((recv (enc "aic" i k x (privk pc)))
       (send (enc "aic" i k x (privk pc))))
@@ -536,6 +567,8 @@
   (label 17)
   (parent 14)
   (seen 10)
+  (seen-ops
+    (10 (operation generalization deleted (1 0)) (strand-map 0 3 4 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -553,6 +586,7 @@
     (privk mf-1))
   (uniq-orig k (invk k))
   (operation generalization deleted (4 0))
+  (strand-map 0 1 2 3 5)
   (traces
     ((recv (enc "aic" i k x (privk pc)))
       (send (enc "aic" i k x (privk pc))))
@@ -567,6 +601,8 @@
   (label 18)
   (parent 15)
   (seen 10)
+  (seen-ops
+    (10 (operation generalization deleted (4 0)) (strand-map 0 1 2 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/aik_shapes.tst b/tst/aik_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/aik_shapes.tst
@@ -0,0 +1,144 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Anonymous identity protocol from TCG")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/aik.scm")
+
+(defprotocol aikprot basic
+  (defrole ca
+    (vars (mf name) (ek akey))
+    (trace (send (enc "ekc" mf ek (privk mf))))
+    (non-orig (invk ek)))
+  (defrole tpm
+    (vars (i x mf pc name) (ek k akey) (srk skey))
+    (trace (recv (cat x i (enc "ekc" mf ek (privk mf))))
+      (send (cat i k x (enc "ekc" mf ek (privk mf))))
+      (recv (enc (enc "aic" i k x (privk pc)) ek))
+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))
+    (non-orig srk (invk ek))
+    (uniq-orig k (invk k)))
+  (defrole pca
+    (vars (i x mf pc name) (ek k akey))
+    (trace (recv (cat i k x (enc "ekc" mf ek (privk mf))))
+      (send (enc (enc "aic" i k x (privk pc)) ek)))
+    (non-orig (privk mf)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton aikprot
+  (vars (srk skey) (ek k akey) (mf pc i x name))
+  (defstrand tpm 4 (srk srk) (ek ek) (k k) (i i) (x x) (mf mf) (pc pc))
+  (non-orig srk (invk ek) (privk pc))
+  (uniq-orig k (invk k))
+  (traces
+    ((recv (cat x i (enc "ekc" mf ek (privk mf))))
+      (send (cat i k x (enc "ekc" mf ek (privk mf))))
+      (recv (enc (enc "aic" i k x (privk pc)) ek))
+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk)))))
+  (label 0)
+  (unrealized (0 2))
+  (origs ((invk k) (0 3)) (k (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton aikprot
+  (vars (srk skey) (k ek akey) (mf pc i x mf-0 name))
+  (defstrand tpm 4 (srk srk) (ek ek) (k k) (i i) (x x) (mf mf) (pc pc))
+  (defstrand pca 2 (ek ek) (k k) (i i) (x x) (mf mf-0) (pc pc))
+  (defstrand ca 1 (ek ek) (mf mf-0))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((2 0) (1 0)))
+  (non-orig srk (invk ek) (privk pc) (privk mf-0))
+  (uniq-orig k (invk k))
+  (operation encryption-test (contracted (ek-0 ek))
+    (enc "aic" i k x (privk pc)) (0 2)
+    (enc (enc "aic" i k x (privk pc)) ek))
+  (traces
+    ((recv (cat x i (enc "ekc" mf ek (privk mf))))
+      (send (cat i k x (enc "ekc" mf ek (privk mf))))
+      (recv (enc (enc "aic" i k x (privk pc)) ek))
+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))
+    ((recv (cat i k x (enc "ekc" mf-0 ek (privk mf-0))))
+      (send (enc (enc "aic" i k x (privk pc)) ek)))
+    ((send (enc "ekc" mf-0 ek (privk mf-0)))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((mf mf) (pc pc) (i i) (x x) (ek ek) (k k) (srk srk))))
+  (origs ((invk k) (0 3)) (k (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol aikprot basic
+  (defrole ca
+    (vars (mf name) (ek akey))
+    (trace (send (enc "ekc" mf ek (privk mf))))
+    (non-orig (invk ek)))
+  (defrole tpm
+    (vars (i x mf pc name) (ek k akey) (srk skey))
+    (trace (recv (cat x i (enc "ekc" mf ek (privk mf))))
+      (send (cat i k x (enc "ekc" mf ek (privk mf))))
+      (recv (enc (enc "aic" i k x (privk pc)) ek))
+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))
+    (non-orig srk (invk ek))
+    (uniq-orig k (invk k)))
+  (defrole pca
+    (vars (i x mf pc name) (ek k akey))
+    (trace (recv (cat i k x (enc "ekc" mf ek (privk mf))))
+      (send (enc (enc "aic" i k x (privk pc)) ek)))
+    (non-orig (privk mf)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton aikprot
+  (vars (k akey) (i x pc name))
+  (deflistener (enc "aic" i k x (privk pc)))
+  (non-orig (privk pc))
+  (traces
+    ((recv (enc "aic" i k x (privk pc)))
+      (send (enc "aic" i k x (privk pc)))))
+  (label 5)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton aikprot
+  (vars (srk skey) (k ek akey) (i x pc mf mf-0 name))
+  (deflistener (enc "aic" i k x (privk pc)))
+  (defstrand pca 2 (ek ek) (k k) (i i) (x x) (mf mf) (pc pc))
+  (defstrand ca 1 (ek ek) (mf mf))
+  (defstrand tpm 4 (srk srk) (ek ek) (k k) (i i) (x x) (mf mf-0)
+    (pc pc))
+  (precedes ((1 1) (3 2)) ((2 0) (1 0)) ((3 1) (1 0)) ((3 3) (0 0)))
+  (non-orig srk (invk ek) (privk pc) (privk mf))
+  (uniq-orig k (invk k))
+  (operation encryption-test (displaced 4 1 pca 2)
+    (enc "aic" i k x (privk pc)) (3 2))
+  (traces
+    ((recv (enc "aic" i k x (privk pc)))
+      (send (enc "aic" i k x (privk pc))))
+    ((recv (cat i k x (enc "ekc" mf ek (privk mf))))
+      (send (enc (enc "aic" i k x (privk pc)) ek)))
+    ((send (enc "ekc" mf ek (privk mf))))
+    ((recv (cat x i (enc "ekc" mf-0 ek (privk mf-0))))
+      (send (cat i k x (enc "ekc" mf-0 ek (privk mf-0))))
+      (recv (enc (enc "aic" i k x (privk pc)) ek))
+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk)))))
+  (label 10)
+  (parent 5)
+  (realized)
+  (shape)
+  (maps ((0) ((i i) (x x) (pc pc) (k k))))
+  (origs (k (3 1)) ((invk k) (3 3))))
+
+(comment "Nothing left to do")
diff --git a/tst/atomic-open-closed.tst b/tst/atomic-open-closed.tst
--- a/tst/atomic-open-closed.tst
+++ b/tst/atomic-open-closed.tst
@@ -1,6 +1,6 @@
 (herald atomic-open-closed (bound 44))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/atomic-open-closed.scm")
 (comment "Strand count bounded at 44")
 
@@ -327,6 +327,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation nonce-test (added-strand dev-up 3) k (1 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv k) (send k))
     ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt old))
@@ -334,9 +335,9 @@
       (stor ls (cat pt-2 "st" d o))))
   (label 2)
   (parent 1)
-  (seen 2)
   (unrealized (0 1) (1 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (comment "Nothing left to do")
 
@@ -663,6 +664,7 @@
     trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (added-strand dev-up 3)
     (ch-msg lk (cat pt-1 "st-k" d o k)) (0 1))
+  (strand-map 0)
   (traces
     ((recv (enc "may I pass" k)) (load lk (cat pt-1 "st-k" d o k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -692,6 +694,7 @@
     trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (added-strand owner-power-dev 1)
     (ch-msg start-ch (cat "power-up" d o k)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (enc "may I pass" k)) (load lk (cat pt-1 "st-k" d o k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -727,6 +730,7 @@
     trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (added-strand dev-open 4)
     (ch-msg ls (cat pt "st" d o o)) (0 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "may I pass" k)) (load lk (cat pt-1 "st-k" d o k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -739,6 +743,11 @@
   (label 7)
   (parent 6)
   (seen 8)
+  (seen-ops
+    (8
+      (operation channel-test (added-strand dev-up 3)
+        (ch-msg lk (cat pt-2 "st-k" d o k)) (3 1))
+      (strand-map 0 2 3 1)))
   (unrealized (3 1))
   (comment "2 in cohort - 1 not yet seen"))
 
@@ -762,6 +771,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (displaced 4 1 dev-up 3)
     (ch-msg lk (cat pt-5 "st-k" d o k-0)) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "may I pass" k)) (load lk (cat pt-1 "st-k" d o k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -1128,6 +1138,7 @@
   (rule intro-same-dev-pass)
   (operation encryption-test (added-strand user-pass 1)
     (enc "may I pass" k) (1 0))
+  (strand-map 0 1)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv (enc "may I pass" k)) (load lk (cat pt "st-k" d-0 o-0 k))
       (load ls (cat pt-0 "st" d-0 o-0 o-0))
@@ -1151,13 +1162,35 @@
   (rule intro-same-dev-pass)
   (operation encryption-test (added-listener k) (enc "may I pass" k)
     (1 0))
+  (strand-map 0 1)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv (enc "may I pass" k)) (load lk (cat pt "st-k" d-0 o-0 k))
       (load ls (cat pt-0 "st" d-0 o-0 o-0))
       (send (enc "you may pass" n k))) ((recv k) (send k)))
   (label 13)
   (parent 11)
-  (seen 15)
+  (seen 15 15 15 15 15)
+  (seen-ops
+    (15
+      (operation nonce-test (added-strand dev-up 3) k (2 0)
+        (ch-msg start-ch (cat "power-up" d-0 o-0 k)))
+      (strand-map 0 1 2))
+    (15
+      (operation nonce-test (added-strand dev-up 3) k (2 0)
+        (ch-msg start-ch (cat "power-up" d-0 o-0 k)))
+      (strand-map 0 1 2))
+    (15
+      (operation nonce-test (added-strand dev-up 3) k (2 0)
+        (ch-msg start-ch (cat "power-up" d-0 o-0 k)))
+      (strand-map 0 1 2))
+    (15
+      (operation nonce-test (added-strand dev-up 3) k (2 0)
+        (ch-msg start-ch (cat "power-up" d-0 o-0 k)))
+      (strand-map 0 1 2))
+    (15
+      (operation nonce-test (added-strand dev-up 3) k (2 0)
+        (ch-msg start-ch (cat "power-up" d-0 o-0 k)))
+      (strand-map 0 1 2)))
   (unrealized (0 1) (1 1) (1 2) (2 0))
   (comment "6 in cohort - 1 not yet seen"))
 
@@ -1182,6 +1215,7 @@
     trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (added-strand dev-up 3)
     (ch-msg lk (cat pt-1 "st-k" d-0 o-0 k)) (1 1))
+  (strand-map 0 1 2)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv (enc "may I pass" k)) (load lk (cat pt-1 "st-k" d-0 o-0 k))
       (load ls (cat pt "st" d-0 o-0 o-0))
@@ -1215,6 +1249,7 @@
     trRl_dev-up-at-4)
   (operation nonce-test (added-strand dev-up 3) k (2 0)
     (ch-msg start-ch (cat "power-up" d-0 o-0 k)))
+  (strand-map 0 1 2)
   (traces
     ((send start-ch (cat "power-up" d-0 o-0 k)) (recv (enc "up" k)))
     ((recv (enc "may I pass" k)) (load lk (cat pt "st-k" d o k))
@@ -1225,9 +1260,9 @@
       (load ls-0 (cat pt-3 old1)) (stor ls-0 (cat pt-4 "st" d-0 o-0))))
   (label 15)
   (parent 13)
-  (seen 15)
   (unrealized (0 1) (1 1) (1 2) (2 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (defskeleton atomic-open-closed
   (vars (old old1 mesg) (k skey) (n text) (d o name)
@@ -1248,6 +1283,7 @@
     trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (displaced 4 0 owner-power-dev 1)
     (ch-msg start-ch-0 (cat "power-up" d-0 o-0 k)) (3 0))
+  (strand-map 0 1 2 3)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv (enc "may I pass" k)) (load lk (cat pt-1 "st-k" d o k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -1284,6 +1320,7 @@
     trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (added-strand dev-open 4)
     (ch-msg ls (cat pt "st" d o o)) (1 2))
+  (strand-map 0 1 2 3)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv (enc "may I pass" k)) (load lk (cat pt-1 "st-k" d o k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -1296,6 +1333,11 @@
   (label 17)
   (parent 16)
   (seen 18)
+  (seen-ops
+    (18
+      (operation channel-test (added-strand dev-up 3)
+        (ch-msg lk (cat pt-2 "st-k" d o k)) (4 1))
+      (strand-map 0 1 2 4 3)))
   (unrealized (0 1) (4 1))
   (comment "2 in cohort - 1 not yet seen"))
 
@@ -1320,6 +1362,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (displaced 5 3 dev-up 3)
     (ch-msg lk (cat pt-5 "st-k" d o k-0)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv (enc "may I pass" k)) (load lk (cat pt-1 "st-k" d o k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -1357,6 +1400,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (added-strand owner-open 1)
     (enc "open" d o n-0 k) (4 0))
+  (strand-map 0 1 2 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv (enc "may I pass" k)) (load lk (cat pt-1 "st-k" d o k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -1370,6 +1414,10 @@
   (label 19)
   (parent 18)
   (seen 21)
+  (seen-ops
+    (21
+      (operation encryption-test (added-strand dev-up 6) (enc "up" k)
+        (0 1)) (strand-map 0 1 2 3 4 5)))
   (unrealized (0 1))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -1396,6 +1444,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (added-listener k) (enc "open" d o n-0 k)
     (4 0))
+  (strand-map 0 1 2 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv (enc "may I pass" k)) (load lk (cat pt-1 "st-k" d o k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -1408,7 +1457,20 @@
     ((recv k) (send k)))
   (label 20)
   (parent 18)
-  (seen 23)
+  (seen 23 23 23)
+  (seen-ops
+    (23
+      (operation nonce-test (displaced 6 3 dev-up 3) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5))
+    (23
+      (operation nonce-test (added-strand dev-up 3) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 4 5 3))
+    (23
+      (operation nonce-test (added-strand dev-up 3) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 4 5 3)))
   (unrealized (0 1) (5 0))
   (comment "4 in cohort - 1 not yet seen"))
 
@@ -1435,6 +1497,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (displaced 3 6 dev-up 6) (enc "up" k)
     (0 1))
+  (strand-map 0 1 2 5 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv (enc "may I pass" k)) (load lk (cat pt-2 "st-k" d o k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -1478,6 +1541,7 @@
   (rule intro-same-dev-pass trRl_dev-open-at-2 trRl_dev-open-at-3
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (added-listener k) (enc "up" k) (0 1))
+  (strand-map 0 1 2 3 4 5)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv (enc "may I pass" k)) (load lk (cat pt-1 "st-k" d o k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -1490,7 +1554,20 @@
     ((send (enc "open" d o n-0 k))) ((recv k) (send k)))
   (label 22)
   (parent 19)
-  (seen 24)
+  (seen 24 24 24)
+  (seen-ops
+    (24
+      (operation nonce-test (displaced 7 3 dev-up 3) k (6 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5 6))
+    (24
+      (operation nonce-test (added-strand dev-up 3) k (6 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 4 5 6 3))
+    (24
+      (operation nonce-test (added-strand dev-up 3) k (6 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 4 5 6 3)))
   (unrealized (6 0))
   (comment "4 in cohort - 1 not yet seen"))
 
@@ -1518,6 +1595,7 @@
     trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation nonce-test (displaced 6 3 dev-up 3) k (5 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4 5)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv (enc "may I pass" k)) (load lk (cat pt-1 "st-k" d o k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -1530,9 +1608,9 @@
     ((recv k) (send k)))
   (label 23)
   (parent 20)
-  (seen 23)
   (unrealized (0 1) (5 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (defskeleton atomic-open-closed
   (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
@@ -1559,6 +1637,7 @@
     trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation nonce-test (displaced 7 3 dev-up 3) k (6 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv (enc "may I pass" k)) (load lk (cat pt-1 "st-k" d o k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -1571,8 +1650,8 @@
     ((send (enc "open" d o n-0 k))) ((recv k) (send k)))
   (label 24)
   (parent 22)
-  (seen 24)
   (unrealized (6 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (comment "Nothing left to do")
diff --git a/tst/atomic-open-closed_shapes.tst b/tst/atomic-open-closed_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/atomic-open-closed_shapes.tst
@@ -0,0 +1,855 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald atomic-open-closed (bound 44))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/atomic-open-closed.scm")
+
+(comment "Strand count bounded at 44")
+
+(defprotocol atomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (stor lk (cat "st-k" d o k)) (load ls old1)
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "open" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o o)) (send n)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (recv (enc "may I pass" k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d o o)) (send (enc "you may pass" n k)))
+    (uniq-orig n))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule gen-state-close
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "d" z d)
+          (p "dev-close" "o" z o) (p "dev-close" "k" z k)
+          (p "dev-close" "any" z (cat o o)))
+        (gen-st (cat "st" d o o)))))
+  (defrule gen-state-pass
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "d" z d)
+          (p "dev-pass" "o" z o) (p "dev-pass" "k" z k))
+        (gen-st (cat "st" d o o)))))
+  (defrule gen-state-open
+    (forall ((z strd) (d o k mesg))
+      (implies
+        (and (p "dev-open" "d" z d) (p "dev-open" "o" z o)
+          (p "dev-open" "k" z k))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule gen-state-close
+    (forall ((z strd) (d o k mesg))
+      (implies
+        (and (p "dev-close" "d" z d) (p "dev-close" "o" z o)
+          (p "dev-close" "k" z k))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule gen-state-pass
+    (forall ((z strd) (d o k mesg))
+      (implies
+        (and (p "dev-pass" "d" z d) (p "dev-pass" "o" z o)
+          (p "dev-pass" "k" z k))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defrule intro-same-dev-up
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-up" "lk" z lk) (p "dev-up" "ls" z ls))
+        (fact same-dev ls lk))))
+  (defrule intro-same-dev-open
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-open" "lk" z lk) (p "dev-open" "ls" z ls))
+        (fact same-dev ls lk))))
+  (defrule intro-same-dev-close
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-close" "lk" z lk) (p "dev-close" "ls" z ls))
+        (fact same-dev ls lk))))
+  (defrule intro-same-dev-pass
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-pass" "lk" z lk) (p "dev-pass" "ls" z ls))
+        (fact same-dev ls lk))))
+  (defrule same-dev-ls-lk
+    (forall ((ls lk lk-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
+        (= lk lk-0))))
+  (defrule same-dev-lk-ls
+    (forall ((lk ls ls-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
+        (= ls ls-0))))
+  (defrule single-thread-up-up
+    (forall ((x y strd) (lk locn))
+      (implies
+        (and (p "dev-up" x 5) (p "dev-up" y 5) (p "dev-up" "lk" x lk)
+          (p "dev-up" "lk" y lk))
+        (or (= x y) (prec x 4 y 1) (prec y 4 x 1)))))
+  (defrule single-thread-up-open
+    (forall ((x y strd) (ls locn))
+      (implies
+        (and (p "dev-up" x 5) (p "dev-open" y 4) (p "dev-up" "ls" x ls)
+          (p "dev-open" "ls" y ls))
+        (or (prec x 4 y 1) (prec y 3 x 1)))))
+  (defrule single-thread-up-close
+    (forall ((x y strd) (ls locn))
+      (implies
+        (and (p "dev-up" x 5) (p "dev-close" y 4) (p "dev-up" "ls" x ls)
+          (p "dev-close" "ls" y ls))
+        (or (prec x 4 y 1) (prec y 3 x 1)))))
+  (defrule single-thread-open-open
+    (forall ((x y strd) (ls locn))
+      (implies
+        (and (p "dev-open" x 4) (p "dev-open" y 4)
+          (p "dev-open" "ls" x ls) (p "dev-open" "ls" y ls))
+        (or (= x y) (prec x 3 y 1) (prec y 3 x 1)))))
+  (defrule single-thread-ls-open-close
+    (forall ((x y strd) (ls locn))
+      (implies
+        (and (p "dev-open" x 4) (p "dev-close" y 4)
+          (p "dev-open" "ls" x ls) (p "dev-close" "ls" y ls))
+        (or (prec x 3 y 1) (prec y 3 x 1)))))
+  (defrule single-thread-close-close
+    (forall ((x y strd) (ls locn))
+      (implies
+        (and (p "dev-close" x 4) (p "dev-close" y 4)
+          (p "dev-close" "ls" x ls) (p "dev-close" "ls" y ls))
+        (or (= x y) (prec x 3 y 1) (prec y 3 x 1)))))
+  (defrule atomic-up-pass
+    (forall ((x y strd) (lk locn))
+      (implies
+        (and (p "dev-up" x 5) (p "dev-pass" y 3) (p "dev-up" "lk" x lk)
+          (p "dev-pass" "lk" y lk) (prec x 2 y 1))
+        (prec x 4 y 1))))
+  (defrule dev-up-completes
+    (forall ((x strd)) (implies (p "dev-up" x 2) (p "dev-up" x 5))))
+  (defrule dev-open-completes
+    (forall ((x strd)) (implies (p "dev-open" x 2) (p "dev-open" x 4))))
+  (defrule dev-close-completes
+    (forall ((x strd))
+      (implies (p "dev-close" x 2) (p "dev-close" x 4))))
+  (defrule dev-pass-completes
+    (forall ((x strd)) (implies (p "dev-pass" x 2) (p "dev-pass" x 3))))
+  (defrule dev-up-atomic1
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-up" z 5) (prec x i1 z 4))
+        (or (= x z) (prec x i1 z 1)))))
+  (defrule dev-up-atomic2
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-up" z 5) (prec z 1 x i1))
+        (or (= x z) (prec z 4 x i1)))))
+  (defrule dev-open-atomic1
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-open" z 4) (prec x i1 z 3))
+        (or (= x z) (prec x i1 z 1)))))
+  (defrule dev-open-atomic2
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-open" z 4) (prec z 1 x i1))
+        (or (= x z) (prec z 3 x i1)))))
+  (defrule dev-close-atomic1
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-close" z 4) (prec x i1 z 3))
+        (or (= x z) (prec x i1 z 1)))))
+  (defrule dev-close-atomic2
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-close" z 4) (prec z 1 x i1))
+        (or (= x z) (prec z 3 x i1)))))
+  (defrule dev-pass-atomic1
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-pass" z 3) (prec x i1 z 2))
+        (or (= x z) (prec x i1 z 1)))))
+  (defrule dev-pass-atomic2
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-pass" z 3) (prec z 1 x i1))
+        (or (= x z) (prec z 2 x i1)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-2
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 2))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2))))
+  (defgenrule cau-dev-open-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-open" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-close-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-close" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-pass-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-pass" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1))))))
+
+(defskeleton atomic-open-closed
+  (vars (k skey) (d o name) (start-ch chan))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (deflistener k)
+  (uniq-orig k)
+  (conf start-ch)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv k) (send k)))
+  (label 0)
+  (unrealized (0 1) (1 0))
+  (preskeleton)
+  (origs (k (0 0)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol atomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (stor lk (cat "st-k" d o k)) (load ls old1)
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "open" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o o)) (send n)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (recv (enc "may I pass" k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d o o)) (send (enc "you may pass" n k)))
+    (uniq-orig n))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule gen-state-close
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "d" z d)
+          (p "dev-close" "o" z o) (p "dev-close" "k" z k)
+          (p "dev-close" "any" z (cat o o)))
+        (gen-st (cat "st" d o o)))))
+  (defrule gen-state-pass
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "d" z d)
+          (p "dev-pass" "o" z o) (p "dev-pass" "k" z k))
+        (gen-st (cat "st" d o o)))))
+  (defrule gen-state-open
+    (forall ((z strd) (d o k mesg))
+      (implies
+        (and (p "dev-open" "d" z d) (p "dev-open" "o" z o)
+          (p "dev-open" "k" z k))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule gen-state-close
+    (forall ((z strd) (d o k mesg))
+      (implies
+        (and (p "dev-close" "d" z d) (p "dev-close" "o" z o)
+          (p "dev-close" "k" z k))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule gen-state-pass
+    (forall ((z strd) (d o k mesg))
+      (implies
+        (and (p "dev-pass" "d" z d) (p "dev-pass" "o" z o)
+          (p "dev-pass" "k" z k))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defrule intro-same-dev-up
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-up" "lk" z lk) (p "dev-up" "ls" z ls))
+        (fact same-dev ls lk))))
+  (defrule intro-same-dev-open
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-open" "lk" z lk) (p "dev-open" "ls" z ls))
+        (fact same-dev ls lk))))
+  (defrule intro-same-dev-close
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-close" "lk" z lk) (p "dev-close" "ls" z ls))
+        (fact same-dev ls lk))))
+  (defrule intro-same-dev-pass
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-pass" "lk" z lk) (p "dev-pass" "ls" z ls))
+        (fact same-dev ls lk))))
+  (defrule same-dev-ls-lk
+    (forall ((ls lk lk-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
+        (= lk lk-0))))
+  (defrule same-dev-lk-ls
+    (forall ((lk ls ls-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
+        (= ls ls-0))))
+  (defrule single-thread-up-up
+    (forall ((x y strd) (lk locn))
+      (implies
+        (and (p "dev-up" x 5) (p "dev-up" y 5) (p "dev-up" "lk" x lk)
+          (p "dev-up" "lk" y lk))
+        (or (= x y) (prec x 4 y 1) (prec y 4 x 1)))))
+  (defrule single-thread-up-open
+    (forall ((x y strd) (ls locn))
+      (implies
+        (and (p "dev-up" x 5) (p "dev-open" y 4) (p "dev-up" "ls" x ls)
+          (p "dev-open" "ls" y ls))
+        (or (prec x 4 y 1) (prec y 3 x 1)))))
+  (defrule single-thread-up-close
+    (forall ((x y strd) (ls locn))
+      (implies
+        (and (p "dev-up" x 5) (p "dev-close" y 4) (p "dev-up" "ls" x ls)
+          (p "dev-close" "ls" y ls))
+        (or (prec x 4 y 1) (prec y 3 x 1)))))
+  (defrule single-thread-open-open
+    (forall ((x y strd) (ls locn))
+      (implies
+        (and (p "dev-open" x 4) (p "dev-open" y 4)
+          (p "dev-open" "ls" x ls) (p "dev-open" "ls" y ls))
+        (or (= x y) (prec x 3 y 1) (prec y 3 x 1)))))
+  (defrule single-thread-ls-open-close
+    (forall ((x y strd) (ls locn))
+      (implies
+        (and (p "dev-open" x 4) (p "dev-close" y 4)
+          (p "dev-open" "ls" x ls) (p "dev-close" "ls" y ls))
+        (or (prec x 3 y 1) (prec y 3 x 1)))))
+  (defrule single-thread-close-close
+    (forall ((x y strd) (ls locn))
+      (implies
+        (and (p "dev-close" x 4) (p "dev-close" y 4)
+          (p "dev-close" "ls" x ls) (p "dev-close" "ls" y ls))
+        (or (= x y) (prec x 3 y 1) (prec y 3 x 1)))))
+  (defrule atomic-up-pass
+    (forall ((x y strd) (lk locn))
+      (implies
+        (and (p "dev-up" x 5) (p "dev-pass" y 3) (p "dev-up" "lk" x lk)
+          (p "dev-pass" "lk" y lk) (prec x 2 y 1))
+        (prec x 4 y 1))))
+  (defrule dev-up-completes
+    (forall ((x strd)) (implies (p "dev-up" x 2) (p "dev-up" x 5))))
+  (defrule dev-open-completes
+    (forall ((x strd)) (implies (p "dev-open" x 2) (p "dev-open" x 4))))
+  (defrule dev-close-completes
+    (forall ((x strd))
+      (implies (p "dev-close" x 2) (p "dev-close" x 4))))
+  (defrule dev-pass-completes
+    (forall ((x strd)) (implies (p "dev-pass" x 2) (p "dev-pass" x 3))))
+  (defrule dev-up-atomic1
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-up" z 5) (prec x i1 z 4))
+        (or (= x z) (prec x i1 z 1)))))
+  (defrule dev-up-atomic2
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-up" z 5) (prec z 1 x i1))
+        (or (= x z) (prec z 4 x i1)))))
+  (defrule dev-open-atomic1
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-open" z 4) (prec x i1 z 3))
+        (or (= x z) (prec x i1 z 1)))))
+  (defrule dev-open-atomic2
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-open" z 4) (prec z 1 x i1))
+        (or (= x z) (prec z 3 x i1)))))
+  (defrule dev-close-atomic1
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-close" z 4) (prec x i1 z 3))
+        (or (= x z) (prec x i1 z 1)))))
+  (defrule dev-close-atomic2
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-close" z 4) (prec z 1 x i1))
+        (or (= x z) (prec z 3 x i1)))))
+  (defrule dev-pass-atomic1
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-pass" z 3) (prec x i1 z 2))
+        (or (= x z) (prec x i1 z 1)))))
+  (defrule dev-pass-atomic2
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-pass" z 3) (prec z 1 x i1))
+        (or (= x z) (prec z 2 x i1)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-2
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 2))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2))))
+  (defgenrule cau-dev-open-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-open" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-close-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-close" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-pass-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-pass" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1))))))
+
+(defskeleton atomic-open-closed
+  (vars (k skey) (n text) (d o name) (pt pt-0 pval) (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (uniq-orig n)
+  (traces
+    ((recv (enc "may I pass" k)) (load lk (cat pt "st-k" d o k))
+      (load ls (cat pt-0 "st" d o o)) (send (enc "you may pass" n k))))
+  (label 3)
+  (realized)
+  (origs (n (0 3)))
+  (comment "Not closed under rules"))
+
+(defskeleton atomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan) (ls lk locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand owner-power-dev 1 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (precedes ((1 4) (3 1)) ((2 0) (1 0)) ((3 3) (0 1)))
+  (uniq-orig n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (trans 3 3) (trans 3 2) (trans 1 4)
+    (trans 1 3) (trans 1 2) (trans 1 1))
+  (operation channel-test (displaced 4 1 dev-up 3)
+    (ch-msg lk (cat pt-5 "st-k" d o k-0)) (3 1))
+  (traces
+    ((recv (enc "may I pass" k)) (load lk (cat pt-1 "st-k" d o k))
+      (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (stor lk (cat pt-1 "st-k" d o k)) (load ls (cat pt-2 old1))
+      (stor ls (cat pt-3 "st" d o)))
+    ((send start-ch (cat "power-up" d o k)))
+    ((recv (enc "open" d o n-0 k)) (load lk (cat pt-1 "st-k" d o k))
+      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o))))
+  (label 8)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps
+    ((0) ((k k) (n n) (d d) (o o) (lk lk) (ls ls) (pt pt-1) (pt-0 pt))))
+  (origs (pt-1 (1 2)) (pt (3 3)) (pt-3 (1 4)) (n (0 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol atomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (stor lk (cat "st-k" d o k)) (load ls old1)
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "open" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o o)) (send n)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (recv (enc "may I pass" k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d o o)) (send (enc "you may pass" n k)))
+    (uniq-orig n))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule gen-state-close
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "d" z d)
+          (p "dev-close" "o" z o) (p "dev-close" "k" z k)
+          (p "dev-close" "any" z (cat o o)))
+        (gen-st (cat "st" d o o)))))
+  (defrule gen-state-pass
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "d" z d)
+          (p "dev-pass" "o" z o) (p "dev-pass" "k" z k))
+        (gen-st (cat "st" d o o)))))
+  (defrule gen-state-open
+    (forall ((z strd) (d o k mesg))
+      (implies
+        (and (p "dev-open" "d" z d) (p "dev-open" "o" z o)
+          (p "dev-open" "k" z k))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule gen-state-close
+    (forall ((z strd) (d o k mesg))
+      (implies
+        (and (p "dev-close" "d" z d) (p "dev-close" "o" z o)
+          (p "dev-close" "k" z k))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule gen-state-pass
+    (forall ((z strd) (d o k mesg))
+      (implies
+        (and (p "dev-pass" "d" z d) (p "dev-pass" "o" z o)
+          (p "dev-pass" "k" z k))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defrule intro-same-dev-up
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-up" "lk" z lk) (p "dev-up" "ls" z ls))
+        (fact same-dev ls lk))))
+  (defrule intro-same-dev-open
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-open" "lk" z lk) (p "dev-open" "ls" z ls))
+        (fact same-dev ls lk))))
+  (defrule intro-same-dev-close
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-close" "lk" z lk) (p "dev-close" "ls" z ls))
+        (fact same-dev ls lk))))
+  (defrule intro-same-dev-pass
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-pass" "lk" z lk) (p "dev-pass" "ls" z ls))
+        (fact same-dev ls lk))))
+  (defrule same-dev-ls-lk
+    (forall ((ls lk lk-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
+        (= lk lk-0))))
+  (defrule same-dev-lk-ls
+    (forall ((lk ls ls-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
+        (= ls ls-0))))
+  (defrule single-thread-up-up
+    (forall ((x y strd) (lk locn))
+      (implies
+        (and (p "dev-up" x 5) (p "dev-up" y 5) (p "dev-up" "lk" x lk)
+          (p "dev-up" "lk" y lk))
+        (or (= x y) (prec x 4 y 1) (prec y 4 x 1)))))
+  (defrule single-thread-up-open
+    (forall ((x y strd) (ls locn))
+      (implies
+        (and (p "dev-up" x 5) (p "dev-open" y 4) (p "dev-up" "ls" x ls)
+          (p "dev-open" "ls" y ls))
+        (or (prec x 4 y 1) (prec y 3 x 1)))))
+  (defrule single-thread-up-close
+    (forall ((x y strd) (ls locn))
+      (implies
+        (and (p "dev-up" x 5) (p "dev-close" y 4) (p "dev-up" "ls" x ls)
+          (p "dev-close" "ls" y ls))
+        (or (prec x 4 y 1) (prec y 3 x 1)))))
+  (defrule single-thread-open-open
+    (forall ((x y strd) (ls locn))
+      (implies
+        (and (p "dev-open" x 4) (p "dev-open" y 4)
+          (p "dev-open" "ls" x ls) (p "dev-open" "ls" y ls))
+        (or (= x y) (prec x 3 y 1) (prec y 3 x 1)))))
+  (defrule single-thread-ls-open-close
+    (forall ((x y strd) (ls locn))
+      (implies
+        (and (p "dev-open" x 4) (p "dev-close" y 4)
+          (p "dev-open" "ls" x ls) (p "dev-close" "ls" y ls))
+        (or (prec x 3 y 1) (prec y 3 x 1)))))
+  (defrule single-thread-close-close
+    (forall ((x y strd) (ls locn))
+      (implies
+        (and (p "dev-close" x 4) (p "dev-close" y 4)
+          (p "dev-close" "ls" x ls) (p "dev-close" "ls" y ls))
+        (or (= x y) (prec x 3 y 1) (prec y 3 x 1)))))
+  (defrule atomic-up-pass
+    (forall ((x y strd) (lk locn))
+      (implies
+        (and (p "dev-up" x 5) (p "dev-pass" y 3) (p "dev-up" "lk" x lk)
+          (p "dev-pass" "lk" y lk) (prec x 2 y 1))
+        (prec x 4 y 1))))
+  (defrule dev-up-completes
+    (forall ((x strd)) (implies (p "dev-up" x 2) (p "dev-up" x 5))))
+  (defrule dev-open-completes
+    (forall ((x strd)) (implies (p "dev-open" x 2) (p "dev-open" x 4))))
+  (defrule dev-close-completes
+    (forall ((x strd))
+      (implies (p "dev-close" x 2) (p "dev-close" x 4))))
+  (defrule dev-pass-completes
+    (forall ((x strd)) (implies (p "dev-pass" x 2) (p "dev-pass" x 3))))
+  (defrule dev-up-atomic1
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-up" z 5) (prec x i1 z 4))
+        (or (= x z) (prec x i1 z 1)))))
+  (defrule dev-up-atomic2
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-up" z 5) (prec z 1 x i1))
+        (or (= x z) (prec z 4 x i1)))))
+  (defrule dev-open-atomic1
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-open" z 4) (prec x i1 z 3))
+        (or (= x z) (prec x i1 z 1)))))
+  (defrule dev-open-atomic2
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-open" z 4) (prec z 1 x i1))
+        (or (= x z) (prec z 3 x i1)))))
+  (defrule dev-close-atomic1
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-close" z 4) (prec x i1 z 3))
+        (or (= x z) (prec x i1 z 1)))))
+  (defrule dev-close-atomic2
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-close" z 4) (prec z 1 x i1))
+        (or (= x z) (prec z 3 x i1)))))
+  (defrule dev-pass-atomic1
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-pass" z 3) (prec x i1 z 2))
+        (or (= x z) (prec x i1 z 1)))))
+  (defrule dev-pass-atomic2
+    (forall ((x z strd) (i1 indx))
+      (implies
+        (and (p "dev-pass" z 3) (prec z 1 x i1))
+        (or (= x z) (prec z 2 x i1)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-2
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 2))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2))))
+  (defgenrule cau-dev-open-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-open" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-close-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-close" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-pass-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-pass" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1))))))
+
+(defskeleton atomic-open-closed
+  (vars (k skey) (n text) (d o d-0 o-0 name) (pt pt-0 pval)
+    (start-ch chan) (lk ls locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d-0) (o o-0) (lk lk) (ls ls))
+  (uniq-orig k n)
+  (conf start-ch)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv (enc "may I pass" k)) (load lk (cat pt "st-k" d-0 o-0 k))
+      (load ls (cat pt-0 "st" d-0 o-0 o-0))
+      (send (enc "you may pass" n k))))
+  (label 9)
+  (unrealized (0 1) (1 0) (1 1))
+  (preskeleton)
+  (origs (n (1 3)) (k (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton atomic-open-closed
+  (vars (any old old1 mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan) (lk ls locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand user-pass 1 (k k))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 1 (k k) (n n-0) (d d) (o o))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (precedes ((0 0) (5 0)) ((2 0) (1 0)) ((3 3) (1 1)) ((4 0) (3 0))
+    ((5 4) (3 1)) ((5 5) (0 1)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (trans 3 3) (trans 3 2) (trans 5 4)
+    (trans 5 3) (trans 5 2) (trans 5 1))
+  (operation encryption-test (displaced 3 6 dev-up 6) (enc "up" k)
+    (0 1))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv (enc "may I pass" k)) (load lk (cat pt-2 "st-k" d o k))
+      (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
+    ((send (enc "may I pass" k)))
+    ((recv (enc "open" d o n-0 k)) (load lk (cat pt-2 "st-k" d o k))
+      (load ls (cat pt-0 "st" d any)) (stor ls (cat pt "st" d o o)))
+    ((send (enc "open" d o n-0 k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (stor lk (cat pt-2 "st-k" d o k)) (load ls (cat pt-3 old1))
+      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k))))
+  (label 21)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((k k) (d d) (o o) (start-ch start-ch) (n n) (d-0 d) (o-0 o)
+        (lk lk) (ls ls) (pt pt-2) (pt-0 pt))))
+  (origs (pt-2 (5 2)) (pt-4 (5 4)) (pt (3 3)) (n (1 3)) (k (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/attest.tst b/tst/attest.tst
--- a/tst/attest.tst
+++ b/tst/attest.tst
@@ -1,6 +1,6 @@
 (herald attest-door)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/attest.scm")
 
 (defprotocol attest-door basic
@@ -62,6 +62,7 @@
   (rule yes)
   (operation nonce-test (added-strand appraise 2) n (0 1)
     (enc (enc d n (invk p)) a))
+  (strand-map 0)
   (traces
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
@@ -80,6 +81,7 @@
   (non-orig (invk p) (invk a) (invk d))
   (uniq-orig k n t)
   (operation encryption-test (added-strand door 2) (enc t k) (0 3))
+  (strand-map 0 1)
   (traces
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
@@ -99,6 +101,7 @@
   (non-orig (invk p) (invk a) (invk d))
   (uniq-orig k n)
   (operation encryption-test (added-listener k) (enc t k) (0 3))
+  (strand-map 0 1)
   (traces
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
@@ -119,6 +122,7 @@
   (uniq-orig k n t)
   (operation nonce-test (contracted (d-0 d) (p-0 p)) k (2 0)
     (enc (enc k (invk p)) d))
+  (strand-map 0 1 2)
   (traces
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
@@ -143,6 +147,7 @@
   (uniq-orig k n t)
   (operation nonce-test (added-strand squealer 2) k (2 0)
     (enc (enc k (invk p)) d))
+  (strand-map 0 1 2)
   (traces
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
@@ -166,6 +171,7 @@
   (uniq-orig k n)
   (operation nonce-test (added-strand squealer 2) k (2 0)
     (enc (enc k (invk p)) d))
+  (strand-map 0 1 2)
   (traces
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
@@ -185,6 +191,7 @@
   (non-orig (invk p) (invk a) (invk d))
   (uniq-orig k n t)
   (operation generalization deleted (2 0))
+  (strand-map 0 1 3)
   (traces
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
@@ -193,6 +200,7 @@
   (label 7)
   (parent 5)
   (seen 8)
+  (seen-ops (8 (operation generalization forgot t) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -205,6 +213,7 @@
   (non-orig (invk p) (invk a) (invk d))
   (uniq-orig k n)
   (operation generalization deleted (2 0))
+  (strand-map 0 1 3)
   (traces
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
@@ -275,6 +284,7 @@
   (uniq-orig k t n)
   (operation encryption-test (added-strand person 3) (enc k (invk p))
     (0 0))
+  (strand-map 0)
   (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
     ((send (enc (enc d-0 n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d-0))))
@@ -353,6 +363,7 @@
   (rule yes)
   (operation nonce-test (added-strand appraise 2) n (0 1)
     (enc (enc d n (invk p)) a))
+  (strand-map 0)
   (traces
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
@@ -371,6 +382,7 @@
   (non-orig (invk p) (invk a) (invk d))
   (uniq-orig k n t)
   (operation encryption-test (added-strand door 2) (enc t k) (0 3))
+  (strand-map 0 1)
   (traces
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
@@ -390,6 +402,7 @@
   (non-orig (invk p) (invk a) (invk d))
   (uniq-orig k n)
   (operation encryption-test (added-listener k) (enc t k) (0 3))
+  (strand-map 0 1)
   (traces
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
@@ -411,6 +424,7 @@
   (uniq-orig k n t)
   (operation nonce-test (contracted (d-0 d) (p-0 p)) k (2 0)
     (enc (enc k (invk p)) d))
+  (strand-map 0 1 2)
   (traces
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
@@ -488,6 +502,7 @@
   (uniq-orig k t n)
   (operation encryption-test (added-strand person 3) (enc k (invk p))
     (0 0))
+  (strand-map 0)
   (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
     ((send (enc (enc d-0 n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d-0))))
@@ -573,6 +588,7 @@
   (rule yes)
   (operation nonce-test (added-strand appraise 2) n (0 1)
     (enc (enc d n (invk p)) a))
+  (strand-map 0)
   (traces
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
@@ -591,6 +607,7 @@
   (non-orig (invk p) (invk a) (invk d))
   (uniq-orig k n t)
   (operation encryption-test (added-strand door 2) (enc t k) (0 3))
+  (strand-map 0 1)
   (traces
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
@@ -610,6 +627,7 @@
   (non-orig (invk p) (invk a) (invk d))
   (uniq-orig k n)
   (operation encryption-test (added-listener k) (enc t k) (0 3))
+  (strand-map 0 1)
   (traces
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
@@ -631,6 +649,7 @@
   (uniq-orig k n t)
   (operation nonce-test (contracted (d-0 d) (p-0 p)) k (2 0)
     (enc (enc k (invk p)) d))
+  (strand-map 0 1 2)
   (traces
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
@@ -716,6 +735,7 @@
   (rule uncompromised-people-choose-uncompromised-appraisers)
   (operation encryption-test (added-strand person 3) (enc k (invk p))
     (0 0))
+  (strand-map 0)
   (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
     ((send (enc (enc d-0 n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d-0))))
@@ -735,6 +755,7 @@
   (rule yes)
   (operation nonce-test (added-strand appraise 2) n (1 1)
     (enc (enc d-0 n (invk p)) a))
+  (strand-map 0 1)
   (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
     ((send (enc (enc d-0 n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d-0)))
@@ -754,6 +775,7 @@
   (uniq-orig k t n)
   (operation encryption-test (contracted (d-0 d)) (enc k (invk p)) (0 0)
     (enc (enc k (invk p)) d))
+  (strand-map 0 1 2)
   (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)))
@@ -773,6 +795,7 @@
   (non-orig (invk d) (invk p) (invk a))
   (uniq-orig k t n)
   (operation nonce-test (displaced 1 3 person 5) t (0 2) (enc t k))
+  (strand-map 0 2 1)
   (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
     ((recv (enc (enc d n (invk p)) a)) (send (enc n a p)))
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
@@ -795,6 +818,7 @@
   (non-orig (invk p) (invk d) (invk a))
   (uniq-orig k t n)
   (operation nonce-test (added-listener k) t (0 2) (enc t k))
+  (strand-map 0 1 2)
   (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
     ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
       (send (enc (enc k (invk p)) d)))
diff --git a/tst/attest_shapes.tst b/tst/attest_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/attest_shapes.tst
@@ -0,0 +1,490 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald attest-door)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/attest.scm")
+
+(defprotocol attest-door basic
+  (defrole appraise
+    (vars (d p a akey) (n text))
+    (trace (recv (enc (enc d n (invk p)) a)) (send (enc n a p)))
+    (comment "The appraiser for the door"))
+  (defrole person
+    (vars (d p a akey) (k skey) (n t text))
+    (trace (send (enc (enc d n (invk p)) a)) (recv (enc n a p))
+      (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
+    (uniq-orig k n)
+    (comment "Person requesting door entry"))
+  (defrole door
+    (vars (d p akey) (k skey) (t text))
+    (trace (recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
+    (uniq-orig t))
+  (defrole squealer
+    (vars (d p akey) (k skey))
+    (trace (recv (enc (enc k (invk p)) d)) (send k))
+    (comment "Fake door"))
+  (defrule yes
+    (forall ((z strd) (a akey))
+      (implies
+        (and (p "appraise" z 2) (p "appraise" "a" z a) (non (invk a)))
+        (exists ((d akey))
+          (and (p "appraise" "d" z d) (non (invk d))))))
+    (comment "Appraisal succeeded"))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Door attestations protocol"))
+
+(defskeleton attest-door
+  (vars (k skey) (n t text) (p a d akey))
+  (defstrand person 5 (k k) (n n) (t t) (d d) (p p) (a a))
+  (non-orig (invk p) (invk a))
+  (uniq-orig k n)
+  (comment "Analyze from the person's perspective")
+  (traces
+    ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
+      (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t)))
+  (label 0)
+  (unrealized (0 1))
+  (origs (k (0 2)) (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton attest-door
+  (vars (k skey) (n t text) (p a d akey))
+  (defstrand person 5 (k k) (n n) (t t) (d d) (p p) (a a))
+  (defstrand appraise 2 (n n) (d d) (p p) (a a))
+  (defstrand door 2 (k k) (t t) (d d) (p p))
+  (precedes ((0 0) (1 0)) ((0 2) (2 0)) ((1 1) (0 1)) ((2 1) (0 3)))
+  (non-orig (invk p) (invk a) (invk d))
+  (uniq-orig k n t)
+  (operation nonce-test (contracted (d-0 d) (p-0 p)) k (2 0)
+    (enc (enc k (invk p)) d))
+  (traces
+    ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
+      (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
+    ((recv (enc (enc d n (invk p)) a)) (send (enc n a p)))
+    ((recv (enc (enc k (invk p)) d)) (send (enc t k))))
+  (label 4)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((p p) (a a) (d d) (k k) (n n) (t t))))
+  (origs (t (2 1)) (k (0 2)) (n (0 0))))
+
+(defskeleton attest-door
+  (vars (k skey) (n t text) (p a d akey))
+  (defstrand person 5 (k k) (n n) (t t) (d d) (p p) (a a))
+  (defstrand appraise 2 (n n) (d d) (p p) (a a))
+  (defstrand squealer 2 (k k) (d d) (p p))
+  (precedes ((0 0) (1 0)) ((0 2) (2 0)) ((1 1) (0 1)) ((2 1) (0 3)))
+  (non-orig (invk p) (invk a) (invk d))
+  (uniq-orig k n)
+  (operation generalization deleted (2 0))
+  (traces
+    ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
+      (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
+    ((recv (enc (enc d n (invk p)) a)) (send (enc n a p)))
+    ((recv (enc (enc k (invk p)) d)) (send k)))
+  (label 8)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((p p) (a a) (d d) (k k) (n n) (t t))))
+  (origs (k (0 2)) (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol attest-door basic
+  (defrole appraise
+    (vars (d p a akey) (n text))
+    (trace (recv (enc (enc d n (invk p)) a)) (send (enc n a p)))
+    (comment "The appraiser for the door"))
+  (defrole person
+    (vars (d p a akey) (k skey) (n t text))
+    (trace (send (enc (enc d n (invk p)) a)) (recv (enc n a p))
+      (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
+    (uniq-orig k n)
+    (comment "Person requesting door entry"))
+  (defrole door
+    (vars (d p akey) (k skey) (t text))
+    (trace (recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
+    (uniq-orig t))
+  (defrole squealer
+    (vars (d p akey) (k skey))
+    (trace (recv (enc (enc k (invk p)) d)) (send k))
+    (comment "Fake door"))
+  (defrule yes
+    (forall ((z strd) (a akey))
+      (implies
+        (and (p "appraise" z 2) (p "appraise" "a" z a) (non (invk a)))
+        (exists ((d akey))
+          (and (p "appraise" "d" z d) (non (invk d))))))
+    (comment "Appraisal succeeded"))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Door attestations protocol"))
+
+(defskeleton attest-door
+  (vars (k skey) (t text) (p d akey))
+  (defstrand door 3 (k k) (t t) (d d) (p p))
+  (non-orig (invk p) (invk d))
+  (uniq-orig t)
+  (comment "Analyze from the door's perspective")
+  (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 attest-door
+  (vars (k skey) (t n text) (p d d-0 a akey))
+  (defstrand door 3 (k k) (t t) (d d) (p p))
+  (defstrand person 3 (k k) (n n) (d d-0) (p p) (a a))
+  (precedes ((1 2) (0 0)))
+  (non-orig (invk p) (invk d))
+  (uniq-orig k t n)
+  (operation encryption-test (added-strand person 3) (enc k (invk p))
+    (0 0))
+  (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
+    ((send (enc (enc d-0 n (invk p)) a)) (recv (enc n a p))
+      (send (enc (enc k (invk p)) d-0))))
+  (label 10)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps ((0) ((p p) (d d) (k k) (t t))))
+  (origs (n (1 0)) (k (1 2)) (t (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol attest-door-trust basic
+  (defrole appraise
+    (vars (d p a akey) (n text))
+    (trace (recv (enc (enc d n (invk p)) a)) (send (enc n a p)))
+    (comment "The appraiser for the door"))
+  (defrole person
+    (vars (d p a akey) (k skey) (n t text))
+    (trace (send (enc (enc d n (invk p)) a)) (recv (enc n a p))
+      (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
+    (uniq-orig k n)
+    (comment "Person requesting door entry"))
+  (defrole door
+    (vars (d p akey) (k skey) (t text))
+    (trace (recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
+    (uniq-orig t))
+  (defrole squealer
+    (vars (d p akey) (k skey))
+    (trace (recv (enc (enc k (invk p)) d)) (send k))
+    (comment "Fake door"))
+  (defrule yes
+    (forall ((z strd) (a akey))
+      (implies
+        (and (p "appraise" z 2) (p "appraise" "a" z a) (non (invk a)))
+        (exists ((d akey))
+          (and (p "appraise" "d" z d) (non (invk d))))))
+    (comment "Appraisal succeeded"))
+  (defrule trust
+    (forall ((z w strd) (d akey))
+      (implies
+        (and (p "appraise" z 2) (p "appraise" "d" z d)
+          (p "squealer" w 2) (p "squealer" "d" w d))
+        (false)))
+    (comment "Passing attestation means not a squealer"))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Door attestations protocol with attestation"))
+
+(defskeleton attest-door-trust
+  (vars (k skey) (n t text) (p a d akey))
+  (defstrand person 5 (k k) (n n) (t t) (d d) (p p) (a a))
+  (non-orig (invk p) (invk a))
+  (uniq-orig k n)
+  (comment "Analyze from the person's perspective")
+  (traces
+    ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
+      (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t)))
+  (label 11)
+  (unrealized (0 1))
+  (origs (k (0 2)) (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton attest-door-trust
+  (vars (k skey) (n t text) (p a d akey))
+  (defstrand person 5 (k k) (n n) (t t) (d d) (p p) (a a))
+  (defstrand appraise 2 (n n) (d d) (p p) (a a))
+  (defstrand door 2 (k k) (t t) (d d) (p p))
+  (precedes ((0 0) (1 0)) ((0 2) (2 0)) ((1 1) (0 1)) ((2 1) (0 3)))
+  (non-orig (invk p) (invk a) (invk d))
+  (uniq-orig k n t)
+  (operation nonce-test (contracted (d-0 d) (p-0 p)) k (2 0)
+    (enc (enc k (invk p)) d))
+  (traces
+    ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
+      (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
+    ((recv (enc (enc d n (invk p)) a)) (send (enc n a p)))
+    ((recv (enc (enc k (invk p)) d)) (send (enc t k))))
+  (label 15)
+  (parent 11)
+  (realized)
+  (shape)
+  (maps ((0) ((p p) (a a) (d d) (k k) (n n) (t t))))
+  (origs (t (2 1)) (k (0 2)) (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol attest-door-trust basic
+  (defrole appraise
+    (vars (d p a akey) (n text))
+    (trace (recv (enc (enc d n (invk p)) a)) (send (enc n a p)))
+    (comment "The appraiser for the door"))
+  (defrole person
+    (vars (d p a akey) (k skey) (n t text))
+    (trace (send (enc (enc d n (invk p)) a)) (recv (enc n a p))
+      (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
+    (uniq-orig k n)
+    (comment "Person requesting door entry"))
+  (defrole door
+    (vars (d p akey) (k skey) (t text))
+    (trace (recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
+    (uniq-orig t))
+  (defrole squealer
+    (vars (d p akey) (k skey))
+    (trace (recv (enc (enc k (invk p)) d)) (send k))
+    (comment "Fake door"))
+  (defrule yes
+    (forall ((z strd) (a akey))
+      (implies
+        (and (p "appraise" z 2) (p "appraise" "a" z a) (non (invk a)))
+        (exists ((d akey))
+          (and (p "appraise" "d" z d) (non (invk d))))))
+    (comment "Appraisal succeeded"))
+  (defrule trust
+    (forall ((z w strd) (d akey))
+      (implies
+        (and (p "appraise" z 2) (p "appraise" "d" z d)
+          (p "squealer" w 2) (p "squealer" "d" w d))
+        (false)))
+    (comment "Passing attestation means not a squealer"))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Door attestations protocol with attestation"))
+
+(defskeleton attest-door-trust
+  (vars (k skey) (t text) (p d akey))
+  (defstrand door 3 (k k) (t t) (d d) (p p))
+  (non-orig (invk p) (invk d))
+  (uniq-orig t)
+  (comment "Analyze from the door's perspective")
+  (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t)))
+  (label 16)
+  (unrealized (0 0))
+  (origs (t (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton attest-door-trust
+  (vars (k skey) (t n text) (p d d-0 a akey))
+  (defstrand door 3 (k k) (t t) (d d) (p p))
+  (defstrand person 3 (k k) (n n) (d d-0) (p p) (a a))
+  (precedes ((1 2) (0 0)))
+  (non-orig (invk p) (invk d))
+  (uniq-orig k t n)
+  (operation encryption-test (added-strand person 3) (enc k (invk p))
+    (0 0))
+  (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
+    ((send (enc (enc d-0 n (invk p)) a)) (recv (enc n a p))
+      (send (enc (enc k (invk p)) d-0))))
+  (label 17)
+  (parent 16)
+  (realized)
+  (shape)
+  (maps ((0) ((p p) (d d) (k k) (t t))))
+  (origs (n (1 0)) (k (1 2)) (t (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol attest-door-trust-attest basic
+  (defrole appraise
+    (vars (d p a akey) (n text))
+    (trace (recv (enc (enc d n (invk p)) a)) (send (enc n a p)))
+    (comment "The appraiser for the door"))
+  (defrole person
+    (vars (d p a akey) (k skey) (n t text))
+    (trace (send (enc (enc d n (invk p)) a)) (recv (enc n a p))
+      (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
+    (uniq-orig k n)
+    (comment "Person requesting door entry"))
+  (defrole door
+    (vars (d p akey) (k skey) (t text))
+    (trace (recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
+    (uniq-orig t))
+  (defrole squealer
+    (vars (d p akey) (k skey))
+    (trace (recv (enc (enc k (invk p)) d)) (send k))
+    (comment "Fake door"))
+  (defrule yes
+    (forall ((z strd) (a akey))
+      (implies
+        (and (p "appraise" z 2) (p "appraise" "a" z a) (non (invk a)))
+        (exists ((d akey))
+          (and (p "appraise" "d" z d) (non (invk d))))))
+    (comment "Appraisal succeeded"))
+  (defrule trust
+    (forall ((z w strd) (d akey))
+      (implies
+        (and (p "appraise" z 2) (p "appraise" "d" z d)
+          (p "squealer" w 2) (p "squealer" "d" w d))
+        (false)))
+    (comment "Passing attestation means not a squealer"))
+  (defrule uncompromised-people-choose-uncompromised-appraisers
+    (forall ((z strd) (a p akey))
+      (implies
+        (and (p "person" z 3) (p "person" "p" z p) (p "person" "a" z a)
+          (non (invk p)))
+        (non (invk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Door attestations protocol with attestation and reliable persons"))
+
+(defskeleton attest-door-trust-attest
+  (vars (k skey) (n t text) (p a d akey))
+  (defstrand person 5 (k k) (n n) (t t) (d d) (p p) (a a))
+  (non-orig (invk p) (invk a))
+  (uniq-orig k n)
+  (comment "Analyze from the person's perspective")
+  (traces
+    ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
+      (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t)))
+  (label 18)
+  (unrealized (0 1))
+  (origs (k (0 2)) (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton attest-door-trust-attest
+  (vars (k skey) (n t text) (p a d akey))
+  (defstrand person 5 (k k) (n n) (t t) (d d) (p p) (a a))
+  (defstrand appraise 2 (n n) (d d) (p p) (a a))
+  (defstrand door 2 (k k) (t t) (d d) (p p))
+  (precedes ((0 0) (1 0)) ((0 2) (2 0)) ((1 1) (0 1)) ((2 1) (0 3)))
+  (non-orig (invk p) (invk a) (invk d))
+  (uniq-orig k n t)
+  (operation nonce-test (contracted (d-0 d) (p-0 p)) k (2 0)
+    (enc (enc k (invk p)) d))
+  (traces
+    ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
+      (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
+    ((recv (enc (enc d n (invk p)) a)) (send (enc n a p)))
+    ((recv (enc (enc k (invk p)) d)) (send (enc t k))))
+  (label 22)
+  (parent 18)
+  (realized)
+  (shape)
+  (maps ((0) ((p p) (a a) (d d) (k k) (n n) (t t))))
+  (origs (t (2 1)) (k (0 2)) (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol attest-door-trust-attest basic
+  (defrole appraise
+    (vars (d p a akey) (n text))
+    (trace (recv (enc (enc d n (invk p)) a)) (send (enc n a p)))
+    (comment "The appraiser for the door"))
+  (defrole person
+    (vars (d p a akey) (k skey) (n t text))
+    (trace (send (enc (enc d n (invk p)) a)) (recv (enc n a p))
+      (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
+    (uniq-orig k n)
+    (comment "Person requesting door entry"))
+  (defrole door
+    (vars (d p akey) (k skey) (t text))
+    (trace (recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
+    (uniq-orig t))
+  (defrole squealer
+    (vars (d p akey) (k skey))
+    (trace (recv (enc (enc k (invk p)) d)) (send k))
+    (comment "Fake door"))
+  (defrule yes
+    (forall ((z strd) (a akey))
+      (implies
+        (and (p "appraise" z 2) (p "appraise" "a" z a) (non (invk a)))
+        (exists ((d akey))
+          (and (p "appraise" "d" z d) (non (invk d))))))
+    (comment "Appraisal succeeded"))
+  (defrule trust
+    (forall ((z w strd) (d akey))
+      (implies
+        (and (p "appraise" z 2) (p "appraise" "d" z d)
+          (p "squealer" w 2) (p "squealer" "d" w d))
+        (false)))
+    (comment "Passing attestation means not a squealer"))
+  (defrule uncompromised-people-choose-uncompromised-appraisers
+    (forall ((z strd) (a p akey))
+      (implies
+        (and (p "person" z 3) (p "person" "p" z p) (p "person" "a" z a)
+          (non (invk p)))
+        (non (invk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Door attestations protocol with attestation and reliable persons"))
+
+(defskeleton attest-door-trust-attest
+  (vars (k skey) (t text) (p d akey))
+  (defstrand door 3 (k k) (t t) (d d) (p p))
+  (non-orig (invk p) (invk d))
+  (uniq-orig t)
+  (comment "Analyze from the door's perspective")
+  (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t)))
+  (label 23)
+  (unrealized (0 0))
+  (origs (t (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton attest-door-trust-attest
+  (vars (k skey) (t n text) (d p a akey))
+  (defstrand door 3 (k k) (t t) (d d) (p p))
+  (defstrand appraise 2 (n n) (d d) (p p) (a a))
+  (defstrand person 5 (k k) (n n) (t t) (d d) (p p) (a a))
+  (precedes ((0 1) (2 3)) ((1 1) (2 1)) ((2 0) (1 0)) ((2 2) (0 0))
+    ((2 4) (0 2)))
+  (non-orig (invk d) (invk p) (invk a))
+  (uniq-orig k t n)
+  (operation nonce-test (displaced 1 3 person 5) t (0 2) (enc t k))
+  (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
+    ((recv (enc (enc d n (invk p)) a)) (send (enc n a p)))
+    ((send (enc (enc d n (invk p)) a)) (recv (enc n a p))
+      (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t)))
+  (label 27)
+  (parent 23)
+  (realized)
+  (shape)
+  (maps ((0) ((p p) (d d) (k k) (t t))))
+  (origs (n (2 0)) (k (2 2)) (t (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/auth-enc.tst b/tst/auth-enc.tst
--- a/tst/auth-enc.tst
+++ b/tst/auth-enc.tst
@@ -1,6 +1,6 @@
 (herald auth-enc)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/auth-enc.scm")
 
 (defprotocol auth-enc basic
@@ -40,6 +40,7 @@
   (auth ch)
   (operation channel-test (added-strand init 1) (ch-msg ch (enc n k))
     (0 0))
+  (strand-map 0)
   (traces ((recv ch (enc n k)) (recv ch (cat n k)))
     ((send ch (enc n k))))
   (label 1)
@@ -56,6 +57,7 @@
   (auth ch)
   (operation channel-test (displaced 1 2 init 2) (ch-msg ch (cat n k))
     (0 1))
+  (strand-map 0 1)
   (traces ((recv ch (enc n k)) (recv ch (cat n k)))
     ((send ch (enc n k)) (send ch (cat n k))))
   (label 2)
diff --git a/tst/auth-enc_shapes.tst b/tst/auth-enc_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/auth-enc_shapes.tst
@@ -0,0 +1,56 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald auth-enc)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/auth-enc.scm")
+
+(defprotocol auth-enc basic
+  (defrole init
+    (vars (n text) (k skey) (ch chan))
+    (trace (send ch (enc n k)) (send ch (cat n k)))
+    (uniq-orig k n)
+    (inputs ch))
+  (defrole resp
+    (vars (n text) (k skey) (ch chan))
+    (trace (recv ch (enc n k)) (recv ch (cat n k)))
+    (inputs ch)
+    (outputs n))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton auth-enc
+  (vars (k skey) (n text) (ch chan))
+  (defstrand resp 2 (k k) (n n) (ch ch))
+  (auth ch)
+  (traces ((recv ch (enc n k)) (recv ch (cat n k))))
+  (label 0)
+  (unrealized (0 0) (0 1))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton auth-enc
+  (vars (k skey) (n text) (ch chan))
+  (defstrand resp 2 (k k) (n n) (ch ch))
+  (defstrand init 2 (k k) (n n) (ch ch))
+  (precedes ((1 0) (0 0)) ((1 1) (0 1)))
+  (uniq-orig k n)
+  (auth ch)
+  (operation channel-test (displaced 1 2 init 2) (ch-msg ch (cat n k))
+    (0 1))
+  (traces ((recv ch (enc n k)) (recv ch (cat n k)))
+    ((send ch (enc n k)) (send ch (cat n k))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((ch ch) (n n) (k k))))
+  (origs (n (1 0)) (k (1 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/auth-hash.tst b/tst/auth-hash.tst
--- a/tst/auth-hash.tst
+++ b/tst/auth-hash.tst
@@ -1,6 +1,6 @@
 (herald auth-hash)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/auth-hash.scm")
 
 (defprotocol auth-hash basic
@@ -39,6 +39,7 @@
   (auth ch)
   (operation channel-test (added-strand init 1) (ch-msg ch (hash n))
     (0 0))
+  (strand-map 0)
   (traces ((recv ch (hash n)) (recv ch n)) ((send ch (hash n))))
   (label 1)
   (parent 0)
@@ -53,6 +54,7 @@
   (uniq-orig n)
   (auth ch)
   (operation channel-test (displaced 1 2 init 2) (ch-msg ch n) (0 1))
+  (strand-map 0 1)
   (traces ((recv ch (hash n)) (recv ch n))
     ((send ch (hash n)) (send ch n)))
   (label 2)
@@ -71,6 +73,7 @@
   (uniq-orig n)
   (auth ch)
   (operation channel-test (added-strand init 2) (ch-msg ch n) (0 1))
+  (strand-map 0 1)
   (traces ((recv ch (hash n)) (recv ch n)) ((send ch (hash n)))
     ((send ch (hash n)) (send ch n)))
   (label 3)
diff --git a/tst/auth-hash_shapes.tst b/tst/auth-hash_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/auth-hash_shapes.tst
@@ -0,0 +1,73 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald auth-hash)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/auth-hash.scm")
+
+(defprotocol auth-hash basic
+  (defrole init
+    (vars (n text) (ch chan))
+    (trace (send ch (hash n)) (send ch n))
+    (uniq-orig n)
+    (inputs ch))
+  (defrole resp
+    (vars (n text) (ch chan))
+    (trace (recv ch (hash n)) (recv ch n))
+    (inputs ch)
+    (outputs n))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton auth-hash
+  (vars (n text) (ch chan))
+  (defstrand resp 2 (n n) (ch ch))
+  (auth ch)
+  (traces ((recv ch (hash n)) (recv ch n)))
+  (label 0)
+  (unrealized (0 0) (0 1))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton auth-hash
+  (vars (n text) (ch chan))
+  (defstrand resp 2 (n n) (ch ch))
+  (defstrand init 2 (n n) (ch ch))
+  (precedes ((1 0) (0 0)) ((1 1) (0 1)))
+  (uniq-orig n)
+  (auth ch)
+  (operation channel-test (displaced 1 2 init 2) (ch-msg ch n) (0 1))
+  (traces ((recv ch (hash n)) (recv ch n))
+    ((send ch (hash n)) (send ch n)))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((ch ch) (n n))))
+  (origs (n (1 1))))
+
+(defskeleton auth-hash
+  (vars (n text) (ch chan))
+  (defstrand resp 2 (n n) (ch ch))
+  (defstrand init 1 (n n) (ch ch))
+  (defstrand init 2 (n n) (ch ch))
+  (precedes ((1 0) (0 0)) ((2 1) (0 1)))
+  (uniq-orig n)
+  (auth ch)
+  (operation channel-test (added-strand init 2) (ch-msg ch n) (0 1))
+  (traces ((recv ch (hash n)) (recv ch n)) ((send ch (hash n)))
+    ((send ch (hash n)) (send ch n)))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((ch ch) (n n))))
+  (origs (n (2 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/blanchet-strandmax.tst b/tst/blanchet-strandmax.tst
--- a/tst/blanchet-strandmax.tst
+++ b/tst/blanchet-strandmax.tst
@@ -1,7 +1,7 @@
 (herald "Blanchet's Simple Example Protocol (strand max)"
   (comment "There is a flaw in this protocol by design"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/blanchet-strandmax.scm")
 
 (defprotocol blanchet-max basic
@@ -39,6 +39,7 @@
   (non-orig (privk b))
   (uniq-orig s)
   (operation encryption-test (added-strand resp 2) (enc d s) (0 1))
+  (strand-map 0)
   (traces ((send (enc (enc s (privk a)) (pubk b))) (recv (enc d s)))
     ((recv (enc (enc s (privk a-0)) (pubk b-0))) (send (enc d s))))
   (label 1)
@@ -54,6 +55,7 @@
   (non-orig (privk b))
   (uniq-orig s)
   (operation encryption-test (added-listener s) (enc d s) (0 1))
+  (strand-map 0)
   (traces ((send (enc (enc s (privk a)) (pubk b))) (recv (enc d s)))
     ((recv s) (send s)))
   (label 2)
@@ -71,6 +73,7 @@
   (uniq-orig s)
   (operation nonce-test (contracted (a-0 a) (b-0 b)) s (1 0)
     (enc (enc s (privk a)) (pubk b)))
+  (strand-map 0 1)
   (traces ((send (enc (enc s (privk a)) (pubk b))) (recv (enc d s)))
     ((recv (enc (enc s (privk a)) (pubk b))) (send (enc d s))))
   (label 3)
@@ -120,6 +123,7 @@
   (non-orig (privk b))
   (uniq-orig d s)
   (operation encryption-test (added-strand resp 2) (enc d s) (0 1))
+  (strand-map 0 1)
   (traces ((send (enc (enc s (privk a)) (pubk b))) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s (privk a-0)) (pubk b-0))) (send (enc d s))))
@@ -137,6 +141,7 @@
   (non-orig (privk b))
   (uniq-orig d s)
   (operation encryption-test (added-listener s) (enc d s) (0 1))
+  (strand-map 0 1)
   (traces ((send (enc (enc s (privk a)) (pubk b))) (recv (enc d s)))
     ((recv d) (send d)) ((recv s) (send s)))
   (label 6)
@@ -155,6 +160,7 @@
   (uniq-orig d s)
   (operation nonce-test (contracted (a-0 a) (b-0 b)) s (2 0)
     (enc (enc s (privk a)) (pubk b)))
+  (strand-map 0 1 2)
   (traces ((send (enc (enc s (privk a)) (pubk b))) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s (privk a)) (pubk b))) (send (enc d s))))
@@ -174,6 +180,7 @@
   (non-orig (privk b))
   (uniq-orig d s)
   (operation nonce-test (added-listener s) d (1 0) (enc d s))
+  (strand-map 0 1 2)
   (traces ((send (enc (enc s (privk a)) (pubk b))) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s (privk a)) (pubk b))) (send (enc d s)))
@@ -222,6 +229,7 @@
   (uniq-orig s)
   (operation encryption-test (added-strand init 1) (enc s (privk a))
     (0 0))
+  (strand-map 0)
   (traces ((recv (enc (enc s (privk a)) (pubk b))) (send (enc d s)))
     ((send (enc (enc s (privk a)) (pubk b-0)))))
   (label 10)
@@ -288,6 +296,7 @@
   (uniq-orig d s)
   (operation encryption-test (added-strand init 1) (enc s (privk a))
     (0 0))
+  (strand-map 0 1)
   (traces ((recv (enc (enc s (privk a)) (pubk b))) (send (enc d s)))
     ((recv d) (send d)) ((send (enc (enc s (privk a)) (pubk b-0)))))
   (label 13)
@@ -334,6 +343,7 @@
   (non-orig (invk b))
   (uniq-orig s)
   (operation encryption-test (added-strand resp 2) (enc d s) (0 1))
+  (strand-map 0)
   (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 15)
@@ -349,6 +359,7 @@
   (non-orig (invk b))
   (uniq-orig s)
   (operation encryption-test (added-listener s) (enc d s) (0 1))
+  (strand-map 0)
   (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
     ((recv s) (send s)))
   (label 16)
@@ -366,6 +377,7 @@
   (uniq-orig s)
   (operation nonce-test (contracted (a-0 a) (b-0 b)) s (1 0)
     (enc (enc s (invk a)) b))
+  (strand-map 0 1)
   (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
     ((recv (enc (enc s (invk a)) b)) (send (enc d s))))
   (label 17)
@@ -415,6 +427,7 @@
   (non-orig (invk b))
   (uniq-orig d s)
   (operation encryption-test (added-strand resp 2) (enc d s) (0 1))
+  (strand-map 0 1)
   (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s (invk a-0)) b-0)) (send (enc d s))))
@@ -432,6 +445,7 @@
   (non-orig (invk b))
   (uniq-orig d s)
   (operation encryption-test (added-listener s) (enc d s) (0 1))
+  (strand-map 0 1)
   (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
     ((recv d) (send d)) ((recv s) (send s)))
   (label 20)
@@ -450,6 +464,7 @@
   (uniq-orig d s)
   (operation nonce-test (contracted (a-0 a) (b-0 b)) s (2 0)
     (enc (enc s (invk a)) b))
+  (strand-map 0 1 2)
   (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s (invk a)) b)) (send (enc d s))))
@@ -469,6 +484,7 @@
   (non-orig (invk b))
   (uniq-orig d s)
   (operation nonce-test (added-listener s) d (1 0) (enc d s))
+  (strand-map 0 1 2)
   (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s (invk a)) b)) (send (enc d s)))
@@ -517,6 +533,7 @@
   (uniq-orig s)
   (operation encryption-test (added-strand init 1) (enc s (invk a))
     (0 0))
+  (strand-map 0)
   (traces ((recv (enc (enc s (invk a)) b)) (send (enc d s)))
     ((send (enc (enc s (invk a)) b-0))))
   (label 24)
@@ -583,6 +600,7 @@
   (uniq-orig d s)
   (operation encryption-test (added-strand init 1) (enc s (invk a))
     (0 0))
+  (strand-map 0 1)
   (traces ((recv (enc (enc s (invk a)) b)) (send (enc d s)))
     ((recv d) (send d)) ((send (enc (enc s (invk a)) b-0))))
   (label 27)
@@ -629,6 +647,7 @@
   (non-orig (privk b))
   (uniq-orig s)
   (operation encryption-test (added-strand resp 2) (enc d s) (0 1))
+  (strand-map 0)
   (traces ((send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s)))
     ((recv (enc (enc s b-0 (privk a-0)) (pubk b-0))) (send (enc d s))))
   (label 29)
@@ -644,6 +663,7 @@
   (non-orig (privk b))
   (uniq-orig s)
   (operation encryption-test (added-listener s) (enc d s) (0 1))
+  (strand-map 0)
   (traces ((send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s)))
     ((recv s) (send s)))
   (label 30)
@@ -661,6 +681,7 @@
   (uniq-orig s)
   (operation nonce-test (contracted (a-0 a) (b-0 b)) s (1 0)
     (enc (enc s b (privk a)) (pubk b)))
+  (strand-map 0 1)
   (traces ((send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s)))
     ((recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s))))
   (label 31)
@@ -710,6 +731,7 @@
   (non-orig (privk b))
   (uniq-orig d s)
   (operation encryption-test (added-strand resp 2) (enc d s) (0 1))
+  (strand-map 0 1)
   (traces ((send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s b-0 (privk a-0)) (pubk b-0))) (send (enc d s))))
@@ -727,6 +749,7 @@
   (non-orig (privk b))
   (uniq-orig d s)
   (operation encryption-test (added-listener s) (enc d s) (0 1))
+  (strand-map 0 1)
   (traces ((send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s)))
     ((recv d) (send d)) ((recv s) (send s)))
   (label 34)
@@ -745,6 +768,7 @@
   (uniq-orig d s)
   (operation nonce-test (contracted (a-0 a) (b-0 b)) s (2 0)
     (enc (enc s b (privk a)) (pubk b)))
+  (strand-map 0 1 2)
   (traces ((send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s))))
@@ -764,6 +788,7 @@
   (non-orig (privk b))
   (uniq-orig d s)
   (operation nonce-test (added-listener s) d (1 0) (enc d s))
+  (strand-map 0 1 2)
   (traces ((send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s)))
@@ -812,6 +837,7 @@
   (uniq-orig s)
   (operation encryption-test (added-strand init 1) (enc s b (privk a))
     (0 0))
+  (strand-map 0)
   (traces ((recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s)))
     ((send (enc (enc s b (privk a)) (pubk b)))))
   (label 38)
@@ -878,6 +904,7 @@
   (uniq-orig d s)
   (operation encryption-test (added-strand init 1) (enc s b (privk a))
     (0 0))
+  (strand-map 0 1)
   (traces ((recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s)))
     ((recv d) (send d)) ((send (enc (enc s b (privk a)) (pubk b)))))
   (label 41)
@@ -895,6 +922,7 @@
   (non-orig (privk a) (privk b))
   (uniq-orig d s)
   (operation nonce-test (added-listener s) d (1 0) (enc d s))
+  (strand-map 0 1 2)
   (traces ((recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s)))
     ((recv d) (send d)) ((send (enc (enc s b (privk a)) (pubk b))))
     ((recv s) (send s)))
diff --git a/tst/blanchet.tst b/tst/blanchet.tst
--- a/tst/blanchet.tst
+++ b/tst/blanchet.tst
@@ -1,7 +1,7 @@
 (herald "Blanchet's Simple Example Protocol"
   (comment "There is a flaw in this protocol by design"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/blanchet.scm")
 
 (defprotocol blanchet basic
@@ -39,6 +39,7 @@
   (non-orig (privk b))
   (uniq-orig s)
   (operation encryption-test (added-strand resp 2) (enc d s) (0 1))
+  (strand-map 0)
   (traces ((send (enc (enc s (privk a)) (pubk b))) (recv (enc d s)))
     ((recv (enc (enc s (privk a-0)) (pubk b-0))) (send (enc d s))))
   (label 1)
@@ -54,6 +55,7 @@
   (non-orig (privk b))
   (uniq-orig s)
   (operation encryption-test (added-listener s) (enc d s) (0 1))
+  (strand-map 0)
   (traces ((send (enc (enc s (privk a)) (pubk b))) (recv (enc d s)))
     ((recv s) (send s)))
   (label 2)
@@ -71,6 +73,7 @@
   (uniq-orig s)
   (operation nonce-test (contracted (a-0 a) (b-0 b)) s (1 0)
     (enc (enc s (privk a)) (pubk b)))
+  (strand-map 0 1)
   (traces ((send (enc (enc s (privk a)) (pubk b))) (recv (enc d s)))
     ((recv (enc (enc s (privk a)) (pubk b))) (send (enc d s))))
   (label 3)
@@ -120,6 +123,7 @@
   (non-orig (privk b))
   (uniq-orig d s)
   (operation encryption-test (added-strand resp 2) (enc d s) (0 1))
+  (strand-map 0 1)
   (traces ((send (enc (enc s (privk a)) (pubk b))) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s (privk a-0)) (pubk b-0))) (send (enc d s))))
@@ -137,6 +141,7 @@
   (non-orig (privk b))
   (uniq-orig d s)
   (operation encryption-test (added-listener s) (enc d s) (0 1))
+  (strand-map 0 1)
   (traces ((send (enc (enc s (privk a)) (pubk b))) (recv (enc d s)))
     ((recv d) (send d)) ((recv s) (send s)))
   (label 6)
@@ -155,6 +160,7 @@
   (uniq-orig d s)
   (operation nonce-test (contracted (a-0 a) (b-0 b)) s (2 0)
     (enc (enc s (privk a)) (pubk b)))
+  (strand-map 0 1 2)
   (traces ((send (enc (enc s (privk a)) (pubk b))) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s (privk a)) (pubk b))) (send (enc d s))))
@@ -174,6 +180,7 @@
   (non-orig (privk b))
   (uniq-orig d s)
   (operation nonce-test (added-listener s) d (1 0) (enc d s))
+  (strand-map 0 1 2)
   (traces ((send (enc (enc s (privk a)) (pubk b))) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s (privk a)) (pubk b))) (send (enc d s)))
@@ -222,6 +229,7 @@
   (uniq-orig s)
   (operation encryption-test (added-strand init 1) (enc s (privk a))
     (0 0))
+  (strand-map 0)
   (traces ((recv (enc (enc s (privk a)) (pubk b))) (send (enc d s)))
     ((send (enc (enc s (privk a)) (pubk b-0)))))
   (label 10)
@@ -288,6 +296,7 @@
   (uniq-orig d s)
   (operation encryption-test (added-strand init 1) (enc s (privk a))
     (0 0))
+  (strand-map 0 1)
   (traces ((recv (enc (enc s (privk a)) (pubk b))) (send (enc d s)))
     ((recv d) (send d)) ((send (enc (enc s (privk a)) (pubk b-0)))))
   (label 13)
@@ -334,6 +343,7 @@
   (non-orig (invk b))
   (uniq-orig s)
   (operation encryption-test (added-strand resp 2) (enc d s) (0 1))
+  (strand-map 0)
   (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 15)
@@ -349,6 +359,7 @@
   (non-orig (invk b))
   (uniq-orig s)
   (operation encryption-test (added-listener s) (enc d s) (0 1))
+  (strand-map 0)
   (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
     ((recv s) (send s)))
   (label 16)
@@ -366,6 +377,7 @@
   (uniq-orig s)
   (operation nonce-test (contracted (a-0 a) (b-0 b)) s (1 0)
     (enc (enc s (invk a)) b))
+  (strand-map 0 1)
   (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
     ((recv (enc (enc s (invk a)) b)) (send (enc d s))))
   (label 17)
@@ -415,6 +427,7 @@
   (non-orig (invk b))
   (uniq-orig d s)
   (operation encryption-test (added-strand resp 2) (enc d s) (0 1))
+  (strand-map 0 1)
   (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s (invk a-0)) b-0)) (send (enc d s))))
@@ -432,6 +445,7 @@
   (non-orig (invk b))
   (uniq-orig d s)
   (operation encryption-test (added-listener s) (enc d s) (0 1))
+  (strand-map 0 1)
   (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
     ((recv d) (send d)) ((recv s) (send s)))
   (label 20)
@@ -450,6 +464,7 @@
   (uniq-orig d s)
   (operation nonce-test (contracted (a-0 a) (b-0 b)) s (2 0)
     (enc (enc s (invk a)) b))
+  (strand-map 0 1 2)
   (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s (invk a)) b)) (send (enc d s))))
@@ -469,6 +484,7 @@
   (non-orig (invk b))
   (uniq-orig d s)
   (operation nonce-test (added-listener s) d (1 0) (enc d s))
+  (strand-map 0 1 2)
   (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s (invk a)) b)) (send (enc d s)))
@@ -517,6 +533,7 @@
   (uniq-orig s)
   (operation encryption-test (added-strand init 1) (enc s (invk a))
     (0 0))
+  (strand-map 0)
   (traces ((recv (enc (enc s (invk a)) b)) (send (enc d s)))
     ((send (enc (enc s (invk a)) b-0))))
   (label 24)
@@ -583,6 +600,7 @@
   (uniq-orig d s)
   (operation encryption-test (added-strand init 1) (enc s (invk a))
     (0 0))
+  (strand-map 0 1)
   (traces ((recv (enc (enc s (invk a)) b)) (send (enc d s)))
     ((recv d) (send d)) ((send (enc (enc s (invk a)) b-0))))
   (label 27)
@@ -629,6 +647,7 @@
   (non-orig (privk b))
   (uniq-orig s)
   (operation encryption-test (added-strand resp 2) (enc d s) (0 1))
+  (strand-map 0)
   (traces ((send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s)))
     ((recv (enc (enc s b-0 (privk a-0)) (pubk b-0))) (send (enc d s))))
   (label 29)
@@ -644,6 +663,7 @@
   (non-orig (privk b))
   (uniq-orig s)
   (operation encryption-test (added-listener s) (enc d s) (0 1))
+  (strand-map 0)
   (traces ((send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s)))
     ((recv s) (send s)))
   (label 30)
@@ -661,6 +681,7 @@
   (uniq-orig s)
   (operation nonce-test (contracted (a-0 a) (b-0 b)) s (1 0)
     (enc (enc s b (privk a)) (pubk b)))
+  (strand-map 0 1)
   (traces ((send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s)))
     ((recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s))))
   (label 31)
@@ -710,6 +731,7 @@
   (non-orig (privk b))
   (uniq-orig d s)
   (operation encryption-test (added-strand resp 2) (enc d s) (0 1))
+  (strand-map 0 1)
   (traces ((send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s b-0 (privk a-0)) (pubk b-0))) (send (enc d s))))
@@ -727,6 +749,7 @@
   (non-orig (privk b))
   (uniq-orig d s)
   (operation encryption-test (added-listener s) (enc d s) (0 1))
+  (strand-map 0 1)
   (traces ((send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s)))
     ((recv d) (send d)) ((recv s) (send s)))
   (label 34)
@@ -745,6 +768,7 @@
   (uniq-orig d s)
   (operation nonce-test (contracted (a-0 a) (b-0 b)) s (2 0)
     (enc (enc s b (privk a)) (pubk b)))
+  (strand-map 0 1 2)
   (traces ((send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s))))
@@ -764,6 +788,7 @@
   (non-orig (privk b))
   (uniq-orig d s)
   (operation nonce-test (added-listener s) d (1 0) (enc d s))
+  (strand-map 0 1 2)
   (traces ((send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s)))
     ((recv d) (send d))
     ((recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s)))
@@ -812,6 +837,7 @@
   (uniq-orig s)
   (operation encryption-test (added-strand init 1) (enc s b (privk a))
     (0 0))
+  (strand-map 0)
   (traces ((recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s)))
     ((send (enc (enc s b (privk a)) (pubk b)))))
   (label 38)
@@ -878,6 +904,7 @@
   (uniq-orig d s)
   (operation encryption-test (added-strand init 1) (enc s b (privk a))
     (0 0))
+  (strand-map 0 1)
   (traces ((recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s)))
     ((recv d) (send d)) ((send (enc (enc s b (privk a)) (pubk b)))))
   (label 41)
@@ -895,6 +922,7 @@
   (non-orig (privk a) (privk b))
   (uniq-orig d s)
   (operation nonce-test (added-listener s) d (1 0) (enc d s))
+  (strand-map 0 1 2)
   (traces ((recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s)))
     ((recv d) (send d)) ((send (enc (enc s b (privk a)) (pubk b))))
     ((recv s) (send s)))
diff --git a/tst/blanchet_doorsep.tst b/tst/blanchet_doorsep.tst
--- a/tst/blanchet_doorsep.tst
+++ b/tst/blanchet_doorsep.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.3.0")
+(comment "CPSA 4.4.4")
 (comment "All input read")
 
 (defprotocol blanchet basic
@@ -16,36 +16,6 @@
     (forall ((x strd)) (implies (fact neq x x) (false))))
   (defgenrule neqRl_mesg
     (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defgenrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defgenrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
-  (defgenrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defgenrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
-  (defgenrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
   (comment "Blanchet's protocol"))
 
 (defskeleton blanchet
@@ -68,6 +38,7 @@
   (non-orig (invk b))
   (uniq-orig s)
   (operation encryption-test (added-strand resp 2) (enc d s) (0 1))
+  (strand-map 0)
   (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)
@@ -83,6 +54,7 @@
   (non-orig (invk b))
   (uniq-orig s)
   (operation encryption-test (added-listener s) (enc d s) (0 1))
+  (strand-map 0)
   (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
     ((recv s) (send s)))
   (label 2)
@@ -100,6 +72,7 @@
   (uniq-orig s)
   (operation nonce-test (contracted (a-0 a) (b-0 b)) s (1 0)
     (enc (enc s (invk a)) b))
+  (strand-map 0 1)
   (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)
@@ -122,45 +95,15 @@
   (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 (p "person" z (idx 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)))))
   (defgenrule neqRl_indx
     (forall ((x indx)) (implies (fact neq x x) (false))))
   (defgenrule neqRl_strd
     (forall ((x strd)) (implies (fact neq x x) (false))))
   (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defgenrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defgenrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
-  (defgenrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defgenrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
-  (defgenrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2))))))
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
 
 (defskeleton doorsep
   (vars (k skey) (t text) (p d akey))
@@ -186,6 +129,7 @@
   (rule trust)
   (operation encryption-test (added-strand person 1) (enc k (invk p))
     (0 0))
+  (strand-map 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)
@@ -203,6 +147,7 @@
   (facts (trust p))
   (operation encryption-test (contracted (d-0 d)) (enc k (invk p)) (0 0)
     (enc (enc k (invk p)) d))
+  (strand-map 0 1)
   (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
     ((send (enc (enc k (invk p)) d))))
   (label 6)
@@ -219,6 +164,7 @@
   (uniq-orig k t)
   (facts (trust p))
   (operation nonce-test (displaced 1 2 person 3) t (0 2) (enc t k))
+  (strand-map 0 1)
   (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)
@@ -238,6 +184,7 @@
   (uniq-orig k t)
   (facts (trust p))
   (operation nonce-test (added-listener k) t (0 2) (enc t k))
+  (strand-map 0 1)
   (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)
@@ -259,45 +206,15 @@
   (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 (p "person" z (idx 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)))))
   (defgenrule neqRl_indx
     (forall ((x indx)) (implies (fact neq x x) (false))))
   (defgenrule neqRl_strd
     (forall ((x strd)) (implies (fact neq x x) (false))))
   (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defgenrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defgenrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
-  (defgenrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defgenrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
-  (defgenrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2))))))
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
 
 (defskeleton doorsep
   (vars (k skey) (t text) (p d akey))
@@ -320,6 +237,7 @@
   (uniq-orig k t)
   (operation encryption-test (added-strand person 1) (enc k (invk p))
     (0 0))
+  (strand-map 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)
diff --git a/tst/blanchet_doorsep_shapes.tst b/tst/blanchet_doorsep_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/blanchet_doorsep_shapes.tst
@@ -0,0 +1,252 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.0")
+
+(comment "All input read")
+
+(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))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (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 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 0)
+  (realized)
+  (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)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2))))))
+
+(defskeleton doorsep
+  (vars (k skey) (t text) (p d akey))
+  (defstrand door 3 (k k) (t t) (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 (k skey) (t text) (p d akey))
+  (defstrand door 3 (k k) (t t) (p p) (d d))
+  (defstrand person 3 (k k) (t t) (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 k t)
+  (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 4)
+  (realized)
+  (shape)
+  (maps ((0) ((p p) (t t) (d d) (k k))))
+  (origs (k (1 0)) (t (0 1))))
+
+(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)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2))))))
+
+(defskeleton doorsep
+  (vars (k skey) (t text) (p d akey))
+  (defstrand door 3 (k k) (t t) (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 (k skey) (t text) (p d d-0 akey))
+  (defstrand door 3 (k k) (t t) (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 k t)
+  (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)
+  (realized)
+  (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/blanchet_shapes.tst b/tst/blanchet_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/blanchet_shapes.tst
@@ -0,0 +1,518 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Blanchet's Simple Example Protocol"
+  (comment "There is a flaw in this protocol by design"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/blanchet.scm")
+
+(defprotocol blanchet basic
+  (defrole init
+    (vars (a b name) (s skey) (d data))
+    (trace (send (enc (enc s (privk a)) (pubk b))) (recv (enc d s))))
+  (defrole resp
+    (vars (a b name) (s skey) (d data))
+    (trace (recv (enc (enc s (privk a)) (pubk b))) (send (enc d s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Blanchet's protocol using named asymmetric keys"))
+
+(defskeleton blanchet
+  (vars (d data) (s skey) (a b name))
+  (defstrand init 2 (d d) (s s) (a a) (b b))
+  (non-orig (privk b))
+  (uniq-orig s)
+  (comment "Analyze from the initiator's perspective")
+  (traces ((send (enc (enc s (privk a)) (pubk 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 name))
+  (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 (privk b))
+  (uniq-orig s)
+  (operation nonce-test (contracted (a-0 a) (b-0 b)) s (1 0)
+    (enc (enc s (privk a)) (pubk b)))
+  (traces ((send (enc (enc s (privk a)) (pubk b))) (recv (enc d s)))
+    ((recv (enc (enc s (privk a)) (pubk b))) (send (enc d s))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (d d))))
+  (origs (s (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol blanchet basic
+  (defrole init
+    (vars (a b name) (s skey) (d data))
+    (trace (send (enc (enc s (privk a)) (pubk b))) (recv (enc d s))))
+  (defrole resp
+    (vars (a b name) (s skey) (d data))
+    (trace (recv (enc (enc s (privk a)) (pubk b))) (send (enc d s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Blanchet's protocol using named asymmetric keys"))
+
+(defskeleton blanchet
+  (vars (d data) (s skey) (a b name))
+  (defstrand init 2 (d d) (s s) (a a) (b b))
+  (deflistener d)
+  (non-orig (privk b))
+  (uniq-orig d s)
+  (comment "From the initiator's perspective, is the secret leaked?")
+  (traces ((send (enc (enc s (privk a)) (pubk b))) (recv (enc d s)))
+    ((recv d) (send d)))
+  (label 4)
+  (unrealized (0 1))
+  (origs (s (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(comment "Nothing left to do")
+
+(defprotocol blanchet basic
+  (defrole init
+    (vars (a b name) (s skey) (d data))
+    (trace (send (enc (enc s (privk a)) (pubk b))) (recv (enc d s))))
+  (defrole resp
+    (vars (a b name) (s skey) (d data))
+    (trace (recv (enc (enc s (privk a)) (pubk b))) (send (enc d s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Blanchet's protocol using named asymmetric keys"))
+
+(defskeleton blanchet
+  (vars (d data) (s skey) (a b name))
+  (defstrand resp 2 (d d) (s s) (a a) (b b))
+  (non-orig (privk a) (privk b))
+  (uniq-orig s)
+  (comment "Analyze from the responder's perspective")
+  (traces ((recv (enc (enc s (privk a)) (pubk b))) (send (enc d s))))
+  (label 9)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton blanchet
+  (vars (d data) (s skey) (a b b-0 name))
+  (defstrand resp 2 (d d) (s s) (a a) (b b))
+  (defstrand init 1 (s s) (a a) (b b-0))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig s)
+  (operation encryption-test (added-strand init 1) (enc s (privk a))
+    (0 0))
+  (traces ((recv (enc (enc s (privk a)) (pubk b))) (send (enc d s)))
+    ((send (enc (enc s (privk a)) (pubk b-0)))))
+  (label 10)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (d d))))
+  (origs (s (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol blanchet basic
+  (defrole init
+    (vars (a b name) (s skey) (d data))
+    (trace (send (enc (enc s (privk a)) (pubk b))) (recv (enc d s))))
+  (defrole resp
+    (vars (a b name) (s skey) (d data))
+    (trace (recv (enc (enc s (privk a)) (pubk b))) (send (enc d s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Blanchet's protocol using named asymmetric keys"))
+
+(defskeleton blanchet
+  (vars (d data) (s skey) (a b name))
+  (defstrand resp 2 (d d) (s s) (a a) (b b))
+  (deflistener d)
+  (non-orig (privk a) (privk b))
+  (uniq-orig d s)
+  (comment "From the responders's perspective, is the secret leaked?")
+  (traces ((recv (enc (enc s (privk a)) (pubk b))) (send (enc d s)))
+    ((recv d) (send d)))
+  (label 11)
+  (unrealized (0 0) (1 0))
+  (preskeleton)
+  (origs (d (0 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton blanchet
+  (vars (d data) (s skey) (a b b-0 name))
+  (defstrand resp 2 (d d) (s s) (a a) (b b))
+  (deflistener d)
+  (defstrand init 1 (s s) (a a) (b b-0))
+  (precedes ((0 1) (1 0)) ((2 0) (0 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig d s)
+  (operation encryption-test (added-strand init 1) (enc s (privk a))
+    (0 0))
+  (traces ((recv (enc (enc s (privk a)) (pubk b))) (send (enc d s)))
+    ((recv d) (send d)) ((send (enc (enc s (privk a)) (pubk b-0)))))
+  (label 13)
+  (parent 11)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (s s) (d d))))
+  (origs (s (2 0)) (d (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol blanchet-akey basic
+  (defrole init
+    (vars (a b akey) (s skey) (d data))
+    (trace (send (enc (enc s (invk a)) b)) (recv (enc d s))))
+  (defrole resp
+    (vars (a b akey) (s skey) (d data))
+    (trace (recv (enc (enc s (invk a)) b)) (send (enc d s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Blanchet's protocol using unnamed asymmetric keys"))
+
+(defskeleton blanchet-akey
+  (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 14)
+  (unrealized (0 1))
+  (origs (s (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton blanchet-akey
+  (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 17)
+  (parent 14)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (d d))))
+  (origs (s (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol blanchet-akey basic
+  (defrole init
+    (vars (a b akey) (s skey) (d data))
+    (trace (send (enc (enc s (invk a)) b)) (recv (enc d s))))
+  (defrole resp
+    (vars (a b akey) (s skey) (d data))
+    (trace (recv (enc (enc s (invk a)) b)) (send (enc d s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Blanchet's protocol using unnamed asymmetric keys"))
+
+(defskeleton blanchet-akey
+  (vars (d data) (s skey) (a b akey))
+  (defstrand init 2 (d d) (s s) (a a) (b b))
+  (deflistener d)
+  (non-orig (invk b))
+  (uniq-orig d s)
+  (comment "From the initiator's perspective, is the secret leaked?")
+  (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
+    ((recv d) (send d)))
+  (label 18)
+  (unrealized (0 1))
+  (origs (s (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(comment "Nothing left to do")
+
+(defprotocol blanchet-akey basic
+  (defrole init
+    (vars (a b akey) (s skey) (d data))
+    (trace (send (enc (enc s (invk a)) b)) (recv (enc d s))))
+  (defrole resp
+    (vars (a b akey) (s skey) (d data))
+    (trace (recv (enc (enc s (invk a)) b)) (send (enc d s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Blanchet's protocol using unnamed asymmetric keys"))
+
+(defskeleton blanchet-akey
+  (vars (d data) (s skey) (a b akey))
+  (defstrand resp 2 (d d) (s s) (a a) (b b))
+  (non-orig (invk a) (invk b))
+  (uniq-orig s)
+  (comment "Analyze from the responder's perspective")
+  (traces ((recv (enc (enc s (invk a)) b)) (send (enc d s))))
+  (label 23)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton blanchet-akey
+  (vars (d data) (s skey) (a b b-0 akey))
+  (defstrand resp 2 (d d) (s s) (a a) (b b))
+  (defstrand init 1 (s s) (a a) (b b-0))
+  (precedes ((1 0) (0 0)))
+  (non-orig (invk a) (invk b))
+  (uniq-orig s)
+  (operation encryption-test (added-strand init 1) (enc s (invk a))
+    (0 0))
+  (traces ((recv (enc (enc s (invk a)) b)) (send (enc d s)))
+    ((send (enc (enc s (invk a)) b-0))))
+  (label 24)
+  (parent 23)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (d d))))
+  (origs (s (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol blanchet-akey basic
+  (defrole init
+    (vars (a b akey) (s skey) (d data))
+    (trace (send (enc (enc s (invk a)) b)) (recv (enc d s))))
+  (defrole resp
+    (vars (a b akey) (s skey) (d data))
+    (trace (recv (enc (enc s (invk a)) b)) (send (enc d s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Blanchet's protocol using unnamed asymmetric keys"))
+
+(defskeleton blanchet-akey
+  (vars (d data) (s skey) (a b akey))
+  (defstrand resp 2 (d d) (s s) (a a) (b b))
+  (deflistener d)
+  (non-orig (invk a) (invk b))
+  (uniq-orig d s)
+  (comment "From the responders's perspective, is the secret leaked?")
+  (traces ((recv (enc (enc s (invk a)) b)) (send (enc d s)))
+    ((recv d) (send d)))
+  (label 25)
+  (unrealized (0 0) (1 0))
+  (preskeleton)
+  (origs (d (0 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton blanchet-akey
+  (vars (d data) (s skey) (a b b-0 akey))
+  (defstrand resp 2 (d d) (s s) (a a) (b b))
+  (deflistener d)
+  (defstrand init 1 (s s) (a a) (b b-0))
+  (precedes ((0 1) (1 0)) ((2 0) (0 0)))
+  (non-orig (invk a) (invk b))
+  (uniq-orig d s)
+  (operation encryption-test (added-strand init 1) (enc s (invk a))
+    (0 0))
+  (traces ((recv (enc (enc s (invk a)) b)) (send (enc d s)))
+    ((recv d) (send d)) ((send (enc (enc s (invk a)) b-0))))
+  (label 27)
+  (parent 25)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (s s) (d d))))
+  (origs (s (2 0)) (d (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol blanchet-fixed basic
+  (defrole init
+    (vars (a b name) (s skey) (d data))
+    (trace (send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s))))
+  (defrole resp
+    (vars (a b name) (s skey) (d data))
+    (trace (recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Fixed Blanchet's protocol using named asymmetric keys"))
+
+(defskeleton blanchet-fixed
+  (vars (d data) (s skey) (a b name))
+  (defstrand init 2 (d d) (s s) (a a) (b b))
+  (non-orig (privk b))
+  (uniq-orig s)
+  (comment "Analyze from the initiator's perspective")
+  (traces ((send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s))))
+  (label 28)
+  (unrealized (0 1))
+  (origs (s (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton blanchet-fixed
+  (vars (d data) (s skey) (a b name))
+  (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 (privk b))
+  (uniq-orig s)
+  (operation nonce-test (contracted (a-0 a) (b-0 b)) s (1 0)
+    (enc (enc s b (privk a)) (pubk b)))
+  (traces ((send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s)))
+    ((recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s))))
+  (label 31)
+  (parent 28)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (d d))))
+  (origs (s (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol blanchet-fixed basic
+  (defrole init
+    (vars (a b name) (s skey) (d data))
+    (trace (send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s))))
+  (defrole resp
+    (vars (a b name) (s skey) (d data))
+    (trace (recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Fixed Blanchet's protocol using named asymmetric keys"))
+
+(defskeleton blanchet-fixed
+  (vars (d data) (s skey) (a b name))
+  (defstrand init 2 (d d) (s s) (a a) (b b))
+  (deflistener d)
+  (non-orig (privk b))
+  (uniq-orig d s)
+  (comment "From the initiator's perspective, is the secret leaked?")
+  (traces ((send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s)))
+    ((recv d) (send d)))
+  (label 32)
+  (unrealized (0 1))
+  (origs (s (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(comment "Nothing left to do")
+
+(defprotocol blanchet-fixed basic
+  (defrole init
+    (vars (a b name) (s skey) (d data))
+    (trace (send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s))))
+  (defrole resp
+    (vars (a b name) (s skey) (d data))
+    (trace (recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Fixed Blanchet's protocol using named asymmetric keys"))
+
+(defskeleton blanchet-fixed
+  (vars (d data) (s skey) (a b name))
+  (defstrand resp 2 (d d) (s s) (a a) (b b))
+  (non-orig (privk a) (privk b))
+  (uniq-orig s)
+  (comment "Analyze from the responder's perspective")
+  (traces ((recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s))))
+  (label 37)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton blanchet-fixed
+  (vars (d data) (s skey) (a b name))
+  (defstrand resp 2 (d d) (s s) (a a) (b b))
+  (defstrand init 1 (s s) (a a) (b b))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig s)
+  (operation encryption-test (added-strand init 1) (enc s b (privk a))
+    (0 0))
+  (traces ((recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s)))
+    ((send (enc (enc s b (privk a)) (pubk b)))))
+  (label 38)
+  (parent 37)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (d d))))
+  (origs (s (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol blanchet-fixed basic
+  (defrole init
+    (vars (a b name) (s skey) (d data))
+    (trace (send (enc (enc s b (privk a)) (pubk b))) (recv (enc d s))))
+  (defrole resp
+    (vars (a b name) (s skey) (d data))
+    (trace (recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Fixed Blanchet's protocol using named asymmetric keys"))
+
+(defskeleton blanchet-fixed
+  (vars (d data) (s skey) (a b name))
+  (defstrand resp 2 (d d) (s s) (a a) (b b))
+  (deflistener d)
+  (non-orig (privk a) (privk b))
+  (uniq-orig d s)
+  (comment "From the responders's perspective, is the secret leaked?")
+  (traces ((recv (enc (enc s b (privk a)) (pubk b))) (send (enc d s)))
+    ((recv d) (send d)))
+  (label 39)
+  (unrealized (0 0) (1 0))
+  (preskeleton)
+  (origs (d (0 1)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
diff --git a/tst/bug_example.tst b/tst/bug_example.tst
--- a/tst/bug_example.tst
+++ b/tst/bug_example.tst
@@ -1,6 +1,6 @@
 (herald bug_example (bound 20))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/bug_example.scm")
 (comment "Strand count bounded at 20")
 
@@ -42,6 +42,7 @@
   (non-orig k2 (invk x))
   (operation encryption-test (added-strand flip 2)
     (enc (invk k2) (hash (invk x) (invk k2))) (0 0))
+  (strand-map 0)
   (traces ((recv (enc (invk k2) (hash (invk x) (invk k2)))))
     ((recv (enc (invk k2) (hash x k2)))
       (send (enc (invk k2) (hash (invk x) (invk k2))))))
@@ -58,6 +59,7 @@
   (non-orig (invk x) (invk y))
   (operation encryption-test (added-listener (hash (invk x) y))
     (enc y (hash (invk x) y)) (0 0))
+  (strand-map 0)
   (traces ((recv (enc y (hash (invk x) y))))
     ((recv (hash (invk x) y)) (send (hash (invk x) y))))
   (label 2)
@@ -75,6 +77,7 @@
   (non-orig k2 (invk x))
   (operation encryption-test (added-strand init 1)
     (enc (invk k2) (hash x k2)) (1 0))
+  (strand-map 0 1)
   (traces ((recv (enc (invk k2) (hash (invk x) (invk k2)))))
     ((recv (enc (invk k2) (hash x k2)))
       (send (enc (invk k2) (hash (invk x) (invk k2)))))
@@ -95,6 +98,7 @@
   (non-orig k1 (invk k2))
   (operation encryption-test (added-strand flip 2)
     (enc k2 (hash (invk k1) (invk k2))) (1 0))
+  (strand-map 0 1)
   (traces ((recv (enc k2 (hash k1 k2))))
     ((recv (enc k2 (hash (invk k1) (invk k2))))
       (send (enc k2 (hash k1 k2))))
@@ -114,6 +118,7 @@
   (non-orig k2 (invk x))
   (operation encryption-test (added-listener (hash x k2))
     (enc (invk k2) (hash x k2)) (1 0))
+  (strand-map 0 1)
   (traces ((recv (enc (invk k2) (hash (invk x) (invk k2)))))
     ((recv (enc (invk k2) (hash x k2)))
       (send (enc (invk k2) (hash (invk x) (invk k2)))))
@@ -134,6 +139,7 @@
   (non-orig k2 (invk k1))
   (operation encryption-test (added-strand flip 2)
     (enc (invk k2) (hash (invk k1) (invk k2))) (2 0))
+  (strand-map 0 1 2)
   (traces ((recv (enc (invk k2) (hash (invk k1) (invk k2)))))
     ((recv (enc (invk k2) (hash k1 k2)))
       (send (enc (invk k2) (hash (invk k1) (invk k2)))))
@@ -144,6 +150,11 @@
   (label 6)
   (parent 4)
   (seen 4)
+  (seen-ops
+    (4
+      (operation encryption-test (added-strand flip 2)
+        (enc k2 (hash (invk k1) (invk k2))) (3 0))
+      (strand-map 0 1 2 1)))
   (unrealized (3 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -157,6 +168,7 @@
   (non-orig k1 (invk k2))
   (operation encryption-test (added-listener (hash k1 k2))
     (enc k2 (hash k1 k2)) (2 0))
+  (strand-map 0 1 2)
   (traces ((recv (enc k2 (hash k1 k2))))
     ((recv (enc k2 (hash (invk k1) (invk k2))))
       (send (enc k2 (hash k1 k2))))
@@ -213,6 +225,7 @@
   (non-orig (invk x) (invk y))
   (operation encryption-test (added-strand flip2 2)
     (enc y (hash (invk x) y)) (0 0))
+  (strand-map 0)
   (traces ((recv (enc y (hash (invk x) y))))
     ((recv (enc y (hash x (invk y)))) (send (enc y (hash (invk x) y)))))
   (label 9)
@@ -228,6 +241,7 @@
   (non-orig (invk x) (invk y))
   (operation encryption-test (added-listener (hash (invk x) y))
     (enc y (hash (invk x) y)) (0 0))
+  (strand-map 0)
   (traces ((recv (enc y (hash (invk x) y))))
     ((recv (hash (invk x) y)) (send (hash (invk x) y))))
   (label 10)
@@ -245,6 +259,7 @@
   (non-orig (invk x) (invk y))
   (operation encryption-test (added-strand init 1)
     (enc y (hash x (invk y))) (1 0))
+  (strand-map 0 1)
   (traces ((recv (enc y (hash (invk x) y))))
     ((recv (enc y (hash x (invk y)))) (send (enc y (hash (invk x) y))))
     ((send (enc y (hash x (invk y))))))
@@ -264,6 +279,7 @@
   (non-orig k1 (invk y))
   (operation encryption-test (added-strand flip2 2)
     (enc y (hash (invk k1) (invk y))) (1 0))
+  (strand-map 0 1)
   (traces ((recv (enc y (hash k1 y))))
     ((recv (enc y (hash (invk k1) (invk y))))
       (send (enc y (hash k1 y))))
@@ -283,6 +299,7 @@
   (non-orig (invk x) (invk y))
   (operation encryption-test (added-listener (hash x (invk y)))
     (enc y (hash x (invk y))) (1 0))
+  (strand-map 0 1)
   (traces ((recv (enc y (hash (invk x) y))))
     ((recv (enc y (hash x (invk y)))) (send (enc y (hash (invk x) y))))
     ((recv (hash x (invk y))) (send (hash x (invk y)))))
@@ -302,6 +319,7 @@
   (non-orig (invk y) (invk k1))
   (operation encryption-test (added-strand flip2 2)
     (enc y (hash (invk k1) y)) (2 0))
+  (strand-map 0 1 2)
   (traces ((recv (enc y (hash (invk k1) y))))
     ((recv (enc y (hash k1 (invk y))))
       (send (enc y (hash (invk k1) y))))
@@ -312,6 +330,10 @@
   (label 14)
   (parent 12)
   (seen 12)
+  (seen-ops
+    (12
+      (operation encryption-test (added-strand flip2 2)
+        (enc y (hash (invk k1) (invk y))) (3 0)) (strand-map 0 1 2 1)))
   (unrealized (3 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -325,6 +347,7 @@
   (non-orig k1 (invk y))
   (operation encryption-test (added-listener (hash k1 y))
     (enc y (hash k1 y)) (2 0))
+  (strand-map 0 1 2)
   (traces ((recv (enc y (hash k1 y))))
     ((recv (enc y (hash (invk k1) (invk y))))
       (send (enc y (hash k1 y))))
diff --git a/tst/bug_example_shapes.tst b/tst/bug_example_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/bug_example_shapes.tst
@@ -0,0 +1,117 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald bug_example (bound 20))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/bug_example.scm")
+
+(comment "Strand count bounded at 20")
+
+(defprotocol bug_example basic
+  (defrole init
+    (vars (x y akey))
+    (trace (send (enc y (hash x (invk y)))))
+    (non-orig (invk x) (invk y)))
+  (defrole resp
+    (vars (x y akey))
+    (trace (recv (enc y (hash (invk x) y))))
+    (non-orig (invk x) (invk y)))
+  (defrole flip
+    (vars (k k1 k2 akey))
+    (trace (recv (enc k (hash k1 k2)))
+      (send (enc k (hash (invk k1) (invk k2))))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton bug_example
+  (vars (x y akey))
+  (defstrand resp 1 (x x) (y y))
+  (non-orig (invk x) (invk y))
+  (traces ((recv (enc y (hash (invk x) y)))))
+  (label 0)
+  (unrealized (0 0))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton bug_example
+  (vars (x k2 akey))
+  (defstrand resp 1 (x x) (y (invk k2)))
+  (defstrand flip 2 (k (invk k2)) (k1 x) (k2 k2))
+  (defstrand init 1 (x x) (y (invk k2)))
+  (precedes ((1 1) (0 0)) ((2 0) (1 0)))
+  (non-orig k2 (invk x))
+  (operation encryption-test (added-strand init 1)
+    (enc (invk k2) (hash x k2)) (1 0))
+  (traces ((recv (enc (invk k2) (hash (invk x) (invk k2)))))
+    ((recv (enc (invk k2) (hash x k2)))
+      (send (enc (invk k2) (hash (invk x) (invk k2)))))
+    ((send (enc (invk k2) (hash x k2)))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((x x) (y (invk k2)))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol bug_example basic
+  (defrole init
+    (vars (x y akey))
+    (trace (send (enc y (hash x (invk y)))))
+    (non-orig (invk x) (invk y)))
+  (defrole resp
+    (vars (x y akey))
+    (trace (recv (enc y (hash (invk x) y))))
+    (non-orig (invk x) (invk y)))
+  (defrole flip1
+    (vars (k k1 k2 akey))
+    (trace (recv (enc k (hash (invk k1) k2)))
+      (send (enc k (hash k1 (invk k2))))))
+  (defrole flip2
+    (vars (k k1 k2 akey))
+    (trace (recv (enc k (hash k1 (invk k2))))
+      (send (enc k (hash (invk k1) k2)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton bug_example
+  (vars (x y akey))
+  (defstrand resp 1 (x x) (y y))
+  (non-orig (invk x) (invk y))
+  (traces ((recv (enc y (hash (invk x) y)))))
+  (label 8)
+  (unrealized (0 0))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton bug_example
+  (vars (x y akey))
+  (defstrand resp 1 (x x) (y y))
+  (defstrand flip2 2 (k y) (k1 x) (k2 y))
+  (defstrand init 1 (x x) (y y))
+  (precedes ((1 1) (0 0)) ((2 0) (1 0)))
+  (non-orig (invk x) (invk y))
+  (operation encryption-test (added-strand init 1)
+    (enc y (hash x (invk y))) (1 0))
+  (traces ((recv (enc y (hash (invk x) y))))
+    ((recv (enc y (hash x (invk y)))) (send (enc y (hash (invk x) y))))
+    ((send (enc y (hash x (invk y))))))
+  (label 11)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps ((0) ((x x) (y y))))
+  (origs))
+
+(comment "Nothing left to do")
diff --git a/tst/cert_lang.tst b/tst/cert_lang.tst
--- a/tst/cert_lang.tst
+++ b/tst/cert_lang.tst
@@ -1,6 +1,6 @@
 (herald cert-lang)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/cert_lang.scm")
 
 (defprotocol cert-uni basic
@@ -69,6 +69,7 @@
   (rule certified-keys-uncompromised)
   (operation encryption-test (added-strand certify 1)
     (cert (cert-body subj serial pk) (privk "cert" ca)) (0 0))
+  (strand-map 0)
   (traces
     ((recv ch-ca (cert (cert-body subj serial pk) (privk "cert" ca)))
       (send ch-r (enc "challenge" chal pk)) (recv ch-r chal))
@@ -92,6 +93,7 @@
   (uniq-orig chal)
   (operation nonce-test (added-strand resp 3) chal (0 2)
     (enc "challenge" chal pk))
+  (strand-map 0 1)
   (traces
     ((recv ch-ca (cert (cert-body subj serial pk) (privk "cert" ca)))
       (send ch-r (enc "challenge" chal pk)) (recv ch-r chal))
diff --git a/tst/cert_lang_shapes.tst b/tst/cert_lang_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/cert_lang_shapes.tst
@@ -0,0 +1,94 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald cert-lang)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/cert_lang.scm")
+
+(defprotocol cert-uni basic
+  (defrole certify
+    (vars (ch chan) (subj ca name) (pk akey) (serial data))
+    (trace
+      (send ch (cert (cert-body subj serial pk) (privk "cert" ca))))
+    (inputs ch subj pk serial (privk "cert" ca)))
+  (defrole init
+    (vars (ch-ca ch-r chan) (subj ca name) (pk akey) (serial data)
+      (chal text))
+    (trace
+      (recv ch-ca (cert (cert-body subj serial pk) (privk "cert" ca)))
+      (send ch-r (enc "challenge" chal pk)) (recv ch-r chal))
+    (uniq-orig chal)
+    (inputs ch-ca ch-r subj (pubk "cert" ca))
+    (outputs chal))
+  (defrole resp
+    (vars (ch-ca ch-i chan) (subj ca name) (pk akey) (serial data)
+      (chal text))
+    (trace
+      (recv ch-ca (cert (cert-body subj serial pk) (privk "cert" ca)))
+      (recv ch-i (enc "challenge" chal pk)) (send ch-i chal))
+    (inputs ch-ca ch-i subj (pubk "cert" ca) (invk pk))
+    (outputs chal))
+  (defrule certified-keys-uncompromised
+    (forall ((zca strd) (subj ca name) (pk akey))
+      (implies
+        (and (p "certify" zca 1) (p "certify" "subj" zca subj)
+          (p "certify" "ca" zca ca) (p "certify" "pk" zca pk)
+          (non (privk "cert" ca)))
+        (non (invk pk)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (lang (cert sign) (cert-body (tupl 3))))
+
+(defskeleton cert-uni
+  (vars (serial data) (chal text) (pk akey) (ca subj name)
+    (ch-ca ch-r chan))
+  (defstrand init 3 (serial serial) (chal chal) (pk pk) (subj subj)
+    (ca ca) (ch-ca ch-ca) (ch-r ch-r))
+  (non-orig (privk "cert" ca))
+  (uniq-orig chal)
+  (traces
+    ((recv ch-ca (cert (cert-body subj serial pk) (privk "cert" ca)))
+      (send ch-r (enc "challenge" chal pk)) (recv ch-r chal)))
+  (label 0)
+  (unrealized (0 0))
+  (origs (chal (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton cert-uni
+  (vars (serial serial-0 data) (chal text) (pk akey)
+    (ca subj subj-0 ca-0 name) (ch-ca ch-r ch ch-ca-0 ch-i chan))
+  (defstrand init 3 (serial serial) (chal chal) (pk pk) (subj subj)
+    (ca ca) (ch-ca ch-ca) (ch-r ch-r))
+  (defstrand certify 1 (serial serial) (pk pk) (subj subj) (ca ca)
+    (ch ch))
+  (defstrand resp 3 (serial serial-0) (chal chal) (pk pk) (subj subj-0)
+    (ca ca-0) (ch-ca ch-ca-0) (ch-i ch-i))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((2 2) (0 2)))
+  (non-orig (invk pk) (privk "cert" ca))
+  (uniq-orig chal)
+  (operation nonce-test (added-strand resp 3) chal (0 2)
+    (enc "challenge" chal pk))
+  (traces
+    ((recv ch-ca (cert (cert-body subj serial pk) (privk "cert" ca)))
+      (send ch-r (enc "challenge" chal pk)) (recv ch-r chal))
+    ((send ch (cert (cert-body subj serial pk) (privk "cert" ca))))
+    ((recv ch-ca-0
+       (cert (cert-body subj-0 serial-0 pk) (privk "cert" ca-0)))
+      (recv ch-i (enc "challenge" chal pk)) (send ch-i chal)))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((ca ca) (chal chal) (ch-ca ch-ca) (ch-r ch-r) (subj subj) (pk pk)
+        (serial serial))))
+  (origs (chal (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/chan-envelope.tst b/tst/chan-envelope.tst
--- a/tst/chan-envelope.tst
+++ b/tst/chan-envelope.tst
@@ -1,6 +1,6 @@
 (herald "Envelope Protocol With Channels" (bound 15))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/chan-envelope.scm")
 (comment "Strand count bounded at 15")
 
@@ -104,6 +104,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -127,6 +128,7 @@
   (uniq-orig v n k)
   (operation encryption-test (displaced 3 1 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (2 0))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -154,6 +156,7 @@
   (conf c)
   (auth c)
   (operation nonce-test (added-strand tpm-decrypt 4) v (0 0) (enc v k))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -183,6 +186,7 @@
   (auth c)
   (operation encryption-test (displaced 4 2 tpm-create-key 2)
     (enc "created" k pcrvals aik-0) (3 1))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -216,6 +220,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend 3)
     (ch-msg c (hash (hash "0" n) "obtain")) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -251,6 +256,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash (hash "0" n) "obtain")) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -288,6 +294,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend 3)
     (ch-msg c (hash "0" n)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -327,6 +334,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash "0" n)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -365,6 +373,7 @@
   (auth c)
   (operation encryption-test (displaced 6 1 alice 1)
     (enc "extend" n esk-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -404,6 +413,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-power-on 2) (ch-msg c "0")
     (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -531,6 +541,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -556,6 +567,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 3 1 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -585,6 +597,7 @@
   (auth c)
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik) (0 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -620,6 +633,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend 3)
     (ch-msg c (hash (hash "0" n) "refuse")) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -657,6 +671,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash (hash "0" n) "refuse")) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -696,6 +711,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend 3)
     (ch-msg c (hash "0" n)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -737,6 +753,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash "0" n)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -777,6 +794,7 @@
   (auth c)
   (operation encryption-test (displaced 6 1 alice 1)
     (enc "extend" n esk-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -818,6 +836,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-power-on 2) (ch-msg c "0")
     (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -952,6 +971,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (2 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -979,6 +999,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 4 2 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1011,6 +1032,7 @@
   (conf c)
   (auth c)
   (operation nonce-test (added-strand tpm-decrypt 4) v (1 0) (enc v k))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1045,6 +1067,7 @@
   (auth c)
   (operation encryption-test (displaced 5 3 tpm-create-key 2)
     (enc "created" k pcrvals aik-0) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1082,6 +1105,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend 3)
     (ch-msg c (hash (hash "0" n) "obtain")) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1121,6 +1145,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash (hash "0" n) "obtain")) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1162,6 +1187,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend 3)
     (ch-msg c (hash "0" n)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1205,6 +1231,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash "0" n)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1247,6 +1274,7 @@
   (auth c)
   (operation encryption-test (displaced 7 2 alice 1)
     (enc "extend" n esk-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1291,6 +1319,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-power-on 2) (ch-msg c "0")
     (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1338,6 +1367,7 @@
   (auth c c-0)
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik) (0 0))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1390,6 +1420,7 @@
   (auth c c-0)
   (operation channel-test (added-strand tpm-extend 3)
     (ch-msg c-0 (hash (hash "0" n) "refuse")) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1444,6 +1475,7 @@
   (auth c c-0)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c-0 (hash (hash "0" n) "refuse")) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1501,6 +1533,7 @@
   (auth c c-0)
   (operation channel-test (added-strand tpm-extend 3)
     (ch-msg c-0 (hash "0" n)) (9 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1557,6 +1590,7 @@
   (auth c)
   (operation channel-test (displaced 10 6 tpm-extend-enc 3)
     (ch-msg c-0 (hash "0" n)) (9 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1616,6 +1650,7 @@
   (auth c c-0)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c-0 (hash "0" n)) (9 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1675,6 +1710,7 @@
   (auth c c-0)
   (operation encryption-test (displaced 11 2 alice 1)
     (enc "extend" n esk-0) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1734,6 +1770,7 @@
   (auth c)
   (operation channel-test (displaced 11 7 tpm-power-on 2)
     (ch-msg c-0 "0") (10 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1795,6 +1832,7 @@
   (auth c c-0)
   (operation channel-test (added-strand tpm-power-on 2) (ch-msg c-0 "0")
     (10 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1937,6 +1975,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -1960,6 +1999,7 @@
   (uniq-orig v n k)
   (operation encryption-test (displaced 3 1 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (2 0))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -1987,6 +2027,7 @@
   (conf c)
   (auth c)
   (operation nonce-test (added-strand tpm-decrypt 4) v (0 0) (enc v k))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2016,6 +2057,7 @@
   (auth c)
   (operation encryption-test (displaced 4 2 tpm-create-key 2)
     (enc "created" k pcrvals aik-0) (3 1))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2049,6 +2091,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend 3)
     (ch-msg c (hash (hash "0" n) "obtain")) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2084,6 +2127,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash (hash "0" n) "obtain")) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2122,6 +2166,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash "0" n)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2160,6 +2205,7 @@
   (auth c)
   (operation encryption-test (displaced 6 1 alice 1)
     (enc "extend" n esk-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2199,6 +2245,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-power-on 2) (ch-msg c "0")
     (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2335,6 +2382,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2360,6 +2408,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 3 1 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2389,6 +2438,7 @@
   (auth c)
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik) (0 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2424,6 +2474,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend 3)
     (ch-msg c (hash (hash "0" n) "refuse")) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2461,6 +2512,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash (hash "0" n) "refuse")) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2501,6 +2553,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash "0" n)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2541,6 +2594,7 @@
   (auth c)
   (operation encryption-test (displaced 6 1 alice 1)
     (enc "extend" n esk-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2582,6 +2636,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-power-on 2) (ch-msg c "0")
     (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2725,6 +2780,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (2 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2752,6 +2808,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 4 2 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2784,6 +2841,7 @@
   (conf c)
   (auth c)
   (operation nonce-test (added-strand tpm-decrypt 4) v (1 0) (enc v k))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2818,6 +2876,7 @@
   (auth c)
   (operation encryption-test (displaced 5 3 tpm-create-key 2)
     (enc "created" k pcrvals aik-0) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2855,6 +2914,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend 3)
     (ch-msg c (hash (hash "0" n) "obtain")) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2894,6 +2954,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash (hash "0" n) "obtain")) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2936,6 +2997,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash "0" n)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2978,6 +3040,7 @@
   (auth c)
   (operation encryption-test (displaced 7 2 alice 1)
     (enc "extend" n esk-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3022,6 +3085,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-power-on 2) (ch-msg c "0")
     (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3069,6 +3133,7 @@
   (auth c c-0)
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik) (0 0))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3121,6 +3186,7 @@
   (auth c c-0)
   (operation channel-test (added-strand tpm-extend 3)
     (ch-msg c-0 (hash (hash "0" n) "refuse")) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3175,6 +3241,7 @@
   (auth c c-0)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c-0 (hash (hash "0" n) "refuse")) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3233,6 +3300,7 @@
   (auth c c-0)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c-0 (hash "0" n)) (9 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3292,6 +3360,7 @@
   (auth c c-0)
   (operation encryption-test (displaced 11 2 alice 1)
     (enc "extend" n esk-0) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3352,6 +3421,7 @@
   (auth c c-0)
   (operation channel-test (added-strand tpm-power-on 2) (ch-msg c-0 "0")
     (10 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3503,6 +3573,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -3526,6 +3597,7 @@
   (uniq-orig v n k)
   (operation encryption-test (displaced 3 1 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (2 0))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -3553,6 +3625,7 @@
   (conf c)
   (auth c)
   (operation nonce-test (added-strand tpm-decrypt 4) v (0 0) (enc v k))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -3582,6 +3655,7 @@
   (auth c)
   (operation encryption-test (displaced 4 2 tpm-create-key 2)
     (enc "created" k pcrvals aik-0) (3 1))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -3615,6 +3689,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend 3)
     (ch-msg c (hash (hash "0" n) "obtain")) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -3650,6 +3725,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash (hash "0" n) "obtain")) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -3688,6 +3764,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash "0" n)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -3726,6 +3803,7 @@
   (auth c)
   (operation encryption-test (displaced 6 1 alice 1)
     (enc "extend" n esk-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -3765,6 +3843,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-power-on 2) (ch-msg c "0")
     (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -3910,6 +3989,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3935,6 +4015,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 3 1 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3964,6 +4045,7 @@
   (auth c)
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik) (0 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3999,6 +4081,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend 3)
     (ch-msg c (hash (hash "0" n) "refuse")) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4036,6 +4119,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash (hash "0" n) "refuse")) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4076,6 +4160,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash "0" n)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4116,6 +4201,7 @@
   (auth c)
   (operation encryption-test (displaced 6 1 alice 1)
     (enc "extend" n esk-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4157,6 +4243,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-power-on 2) (ch-msg c "0")
     (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4309,6 +4396,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (2 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4336,6 +4424,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 4 2 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4368,6 +4457,7 @@
   (conf c)
   (auth c)
   (operation nonce-test (added-strand tpm-decrypt 4) v (1 0) (enc v k))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4402,6 +4492,7 @@
   (auth c)
   (operation encryption-test (displaced 5 3 tpm-create-key 2)
     (enc "created" k pcrvals aik-0) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4439,6 +4530,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend 3)
     (ch-msg c (hash (hash "0" n) "obtain")) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4478,6 +4570,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash (hash "0" n) "obtain")) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4520,6 +4613,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c (hash "0" n)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4562,6 +4656,7 @@
   (auth c)
   (operation encryption-test (displaced 7 2 alice 1)
     (enc "extend" n esk-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4606,6 +4701,7 @@
   (auth c)
   (operation channel-test (added-strand tpm-power-on 2) (ch-msg c "0")
     (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4653,6 +4749,7 @@
   (auth c c-0)
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik) (0 0))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4705,6 +4802,7 @@
   (auth c c-0)
   (operation channel-test (added-strand tpm-extend 3)
     (ch-msg c-0 (hash (hash "0" n) "refuse")) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4759,6 +4857,7 @@
   (auth c c-0)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c-0 (hash (hash "0" n) "refuse")) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4817,6 +4916,7 @@
   (auth c c-0)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg c-0 (hash "0" n)) (9 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
diff --git a/tst/chan-envelope_shapes.tst b/tst/chan-envelope_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/chan-envelope_shapes.tst
@@ -0,0 +1,1243 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Envelope Protocol With Channels" (bound 15))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/chan-envelope.scm")
+
+(comment "Strand count bounded at 15")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (c chan))
+    (trace (recv "power on") (send c "0"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (c chan))
+    (trace (recv (cat "extend" value)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (esk skey) (c chan))
+    (trace (recv (enc "extend" value esk)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (non-orig esk)
+    (conf c)
+    (auth c))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (c chan) (aik akey))
+    (trace (recv (cat "quote" nonce)) (recv c current-value)
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (c chan))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik)) (recv c pcrvals) (send m))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (v n data) (esk skey) (k aik akey))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig v n)
+  (traces ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 0)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (v n data) (esk skey) (k aik akey) (c chan))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcrvals (hash (hash "0" n) "obtain"))
+    (k k) (aik aik) (c c))
+  (defstrand tpm-extend 3 (value "obtain") (current-value (hash "0" n))
+    (c c))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0") (esk esk)
+    (c c))
+  (defstrand tpm-power-on 2 (c c))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 3) (0 0)) ((4 2) (3 2)) ((5 2) (4 1)) ((6 1) (5 1)))
+  (non-orig esk aik (invk k))
+  (uniq-orig v n k)
+  (conf c)
+  (auth c)
+  (operation channel-test (added-strand tpm-power-on 2) (ch-msg c "0")
+    (5 1))
+  (traces ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (recv c (hash (hash "0" n) "obtain")) (send v))
+    ((recv (cat "extend" "obtain")) (recv c (hash "0" n))
+      (send c (hash (hash "0" n) "obtain")))
+    ((recv (enc "extend" n esk)) (recv c "0") (send c (hash "0" n)))
+    ((recv "power on") (send c "0")))
+  (label 11)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((v v) (n n) (esk esk) (k k) (aik aik))))
+  (origs (n (1 0)) (k (2 1)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (c chan))
+    (trace (recv "power on") (send c "0"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (c chan))
+    (trace (recv (cat "extend" value)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (esk skey) (c chan))
+    (trace (recv (enc "extend" value esk)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (non-orig esk)
+    (conf c)
+    (auth c))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (c chan) (aik akey))
+    (trace (recv (cat "quote" nonce)) (recv c current-value)
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (c chan))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik)) (recv c pcrvals) (send m))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig n v)
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 12)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey) (c chan))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (aik aik) (c c))
+  (defstrand tpm-extend 3 (value "refuse") (current-value (hash "0" n))
+    (c c))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0") (esk esk)
+    (c c))
+  (defstrand tpm-power-on 2 (c c))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 2) (0 0)) ((4 2) (3 1)) ((5 2) (4 1)) ((6 1) (5 1)))
+  (non-orig esk aik (invk k))
+  (uniq-orig n v k)
+  (conf c)
+  (auth c)
+  (operation channel-test (added-strand tpm-power-on 2) (ch-msg c "0")
+    (5 1))
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "quote" (enc v k)))
+      (recv c (hash (hash "0" n) "refuse"))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv (cat "extend" "refuse")) (recv c (hash "0" n))
+      (send c (hash (hash "0" n) "refuse")))
+    ((recv (enc "extend" n esk)) (recv c "0") (send c (hash "0" n)))
+    ((recv "power on") (send c "0")))
+  (label 22)
+  (parent 12)
+  (realized)
+  (shape)
+  (maps ((0 1) ((n n) (v v) (k k) (aik aik) (esk esk))))
+  (origs (n (1 0)) (k (2 1)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (c chan))
+    (trace (recv "power on") (send c "0"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (c chan))
+    (trace (recv (cat "extend" value)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (esk skey) (c chan))
+    (trace (recv (enc "extend" value esk)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (non-orig esk)
+    (conf c)
+    (auth c))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (c chan) (aik akey))
+    (trace (recv (cat "quote" nonce)) (recv c current-value)
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (c chan))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik)) (recv c pcrvals) (send m))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig n v)
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 23)
+  (unrealized (0 0) (1 0) (2 2))
+  (preskeleton)
+  (origs (v (2 3)) (n (2 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey) (c chan))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcrvals (hash (hash "0" n) "obtain"))
+    (k k) (aik aik) (c c))
+  (defstrand tpm-extend 3 (value "obtain") (current-value (hash "0" n))
+    (c c))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0") (esk esk)
+    (c c))
+  (defstrand tpm-power-on 2 (c c))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (aik aik) (c c))
+  (defstrand tpm-extend 3 (value "refuse") (current-value (hash "0" n))
+    (c c))
+  (precedes ((2 0) (6 0)) ((2 1) (3 0)) ((2 3) (4 0)) ((2 3) (8 0))
+    ((3 1) (2 2)) ((4 3) (1 0)) ((5 2) (4 2)) ((6 2) (5 1))
+    ((6 2) (9 1)) ((7 1) (6 1)) ((8 2) (0 0)) ((9 2) (8 1)))
+  (non-orig esk aik (invk k))
+  (uniq-orig n v k)
+  (conf c)
+  (auth c)
+  (operation channel-test (displaced 10 6 tpm-extend-enc 3)
+    (ch-msg c-0 (hash "0" n)) (9 1))
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (recv c (hash (hash "0" n) "obtain")) (send v))
+    ((recv (cat "extend" "obtain")) (recv c (hash "0" n))
+      (send c (hash (hash "0" n) "obtain")))
+    ((recv (enc "extend" n esk)) (recv c "0") (send c (hash "0" n)))
+    ((recv "power on") (send c "0"))
+    ((recv (cat "quote" (enc v k)))
+      (recv c (hash (hash "0" n) "refuse"))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv (cat "extend" "refuse")) (recv c (hash "0" n))
+      (send c (hash (hash "0" n) "refuse"))))
+  (label 39)
+  (parent 23)
+  (realized)
+  (shape)
+  (maps ((0 1 2) ((n n) (v v) (k k) (aik aik) (esk esk))))
+  (origs (n (2 0)) (k (3 1)) (v (2 3))))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey) (c chan))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcrvals (hash (hash "0" n) "obtain"))
+    (k k) (aik aik) (c c))
+  (defstrand tpm-extend 3 (value "obtain") (current-value (hash "0" n))
+    (c c))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0") (esk esk)
+    (c c))
+  (defstrand tpm-power-on 2 (c c))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (aik aik) (c c))
+  (defstrand tpm-extend 3 (value "refuse") (current-value (hash "0" n))
+    (c c))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0") (esk esk)
+    (c c))
+  (precedes ((2 0) (6 0)) ((2 0) (10 0)) ((2 1) (3 0)) ((2 3) (4 0))
+    ((2 3) (8 0)) ((3 1) (2 2)) ((4 3) (1 0)) ((5 2) (4 2))
+    ((6 2) (5 1)) ((7 1) (6 1)) ((7 1) (10 1)) ((8 2) (0 0))
+    ((9 2) (8 1)) ((10 2) (9 1)))
+  (non-orig esk aik (invk k))
+  (uniq-orig n v k)
+  (conf c)
+  (auth c)
+  (operation channel-test (displaced 11 7 tpm-power-on 2)
+    (ch-msg c-0 "0") (10 1))
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (recv c (hash (hash "0" n) "obtain")) (send v))
+    ((recv (cat "extend" "obtain")) (recv c (hash "0" n))
+      (send c (hash (hash "0" n) "obtain")))
+    ((recv (enc "extend" n esk)) (recv c "0") (send c (hash "0" n)))
+    ((recv "power on") (send c "0"))
+    ((recv (cat "quote" (enc v k)))
+      (recv c (hash (hash "0" n) "refuse"))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv (cat "extend" "refuse")) (recv c (hash "0" n))
+      (send c (hash (hash "0" n) "refuse")))
+    ((recv (enc "extend" n esk)) (recv c "0") (send c (hash "0" n))))
+  (label 42)
+  (parent 23)
+  (realized)
+  (shape)
+  (maps ((0 1 2) ((n n) (v v) (k k) (aik aik) (esk esk))))
+  (origs (n (2 0)) (k (3 1)) (v (2 3))))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey) (c c-0 chan))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcrvals (hash (hash "0" n) "obtain"))
+    (k k) (aik aik) (c c))
+  (defstrand tpm-extend 3 (value "obtain") (current-value (hash "0" n))
+    (c c))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0") (esk esk)
+    (c c))
+  (defstrand tpm-power-on 2 (c c))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (aik aik) (c c-0))
+  (defstrand tpm-extend 3 (value "refuse") (current-value (hash "0" n))
+    (c c-0))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0") (esk esk)
+    (c c-0))
+  (defstrand tpm-power-on 2 (c c-0))
+  (precedes ((2 0) (6 0)) ((2 0) (10 0)) ((2 1) (3 0)) ((2 3) (4 0))
+    ((2 3) (8 0)) ((3 1) (2 2)) ((4 3) (1 0)) ((5 2) (4 2))
+    ((6 2) (5 1)) ((7 1) (6 1)) ((8 2) (0 0)) ((9 2) (8 1))
+    ((10 2) (9 1)) ((11 1) (10 1)))
+  (non-orig esk aik (invk k))
+  (uniq-orig n v k)
+  (conf c c-0)
+  (auth c c-0)
+  (operation channel-test (added-strand tpm-power-on 2) (ch-msg c-0 "0")
+    (10 1))
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (recv c (hash (hash "0" n) "obtain")) (send v))
+    ((recv (cat "extend" "obtain")) (recv c (hash "0" n))
+      (send c (hash (hash "0" n) "obtain")))
+    ((recv (enc "extend" n esk)) (recv c "0") (send c (hash "0" n)))
+    ((recv "power on") (send c "0"))
+    ((recv (cat "quote" (enc v k)))
+      (recv c-0 (hash (hash "0" n) "refuse"))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv (cat "extend" "refuse")) (recv c-0 (hash "0" n))
+      (send c-0 (hash (hash "0" n) "refuse")))
+    ((recv (enc "extend" n esk)) (recv c-0 "0") (send c-0 (hash "0" n)))
+    ((recv "power on") (send c-0 "0")))
+  (label 43)
+  (parent 23)
+  (realized)
+  (shape)
+  (maps ((0 1 2) ((n n) (v v) (k k) (aik aik) (esk esk))))
+  (origs (n (2 0)) (k (3 1)) (v (2 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (c chan))
+    (trace (recv "power on") (send c "0"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (c chan))
+    (trace (recv (cat "extend" value)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (esk skey) (c chan))
+    (trace (recv (enc "extend" value esk)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (non-orig esk)
+    (conf c)
+    (auth c))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (c chan) (aik akey))
+    (trace (recv (cat "quote" nonce)) (recv c current-value)
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (c chan))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik)) (recv c pcrvals) (send m))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defrule ordered-extends
+    (forall ((y z strd) (c chan))
+      (implies
+        (and (p "tpm-extend" y 3) (p "tpm-extend" z 3)
+          (p "tpm-extend" "c" y c) (p "tpm-extend" "c" z c))
+        (or (= y z) (prec y 2 z 3) (prec z 2 y 3)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (v n data) (esk skey) (k aik akey))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig v n)
+  (traces ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 44)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (v n data) (esk skey) (k aik akey) (c chan))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcrvals (hash (hash "0" n) "obtain"))
+    (k k) (aik aik) (c c))
+  (defstrand tpm-extend 3 (value "obtain") (current-value (hash "0" n))
+    (c c))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0") (esk esk)
+    (c c))
+  (defstrand tpm-power-on 2 (c c))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 3) (0 0)) ((4 2) (3 2)) ((5 2) (4 1)) ((6 1) (5 1)))
+  (non-orig esk aik (invk k))
+  (uniq-orig v n k)
+  (conf c)
+  (auth c)
+  (operation channel-test (added-strand tpm-power-on 2) (ch-msg c "0")
+    (5 1))
+  (traces ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (recv c (hash (hash "0" n) "obtain")) (send v))
+    ((recv (cat "extend" "obtain")) (recv c (hash "0" n))
+      (send c (hash (hash "0" n) "obtain")))
+    ((recv (enc "extend" n esk)) (recv c "0") (send c (hash "0" n)))
+    ((recv "power on") (send c "0")))
+  (label 54)
+  (parent 44)
+  (realized)
+  (shape)
+  (maps ((0 1) ((v v) (n n) (esk esk) (k k) (aik aik))))
+  (origs (n (1 0)) (k (2 1)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (c chan))
+    (trace (recv "power on") (send c "0"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (c chan))
+    (trace (recv (cat "extend" value)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (esk skey) (c chan))
+    (trace (recv (enc "extend" value esk)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (non-orig esk)
+    (conf c)
+    (auth c))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (c chan) (aik akey))
+    (trace (recv (cat "quote" nonce)) (recv c current-value)
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (c chan))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik)) (recv c pcrvals) (send m))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defrule ordered-extends
+    (forall ((y z strd) (c chan))
+      (implies
+        (and (p "tpm-extend" y 3) (p "tpm-extend" z 3)
+          (p "tpm-extend" "c" y c) (p "tpm-extend" "c" z c))
+        (or (= y z) (prec y 2 z 3) (prec z 2 y 3)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig n v)
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 55)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey) (c chan))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (aik aik) (c c))
+  (defstrand tpm-extend 3 (value "refuse") (current-value (hash "0" n))
+    (c c))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0") (esk esk)
+    (c c))
+  (defstrand tpm-power-on 2 (c c))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 2) (0 0)) ((4 2) (3 1)) ((5 2) (4 1)) ((6 1) (5 1)))
+  (non-orig esk aik (invk k))
+  (uniq-orig n v k)
+  (conf c)
+  (auth c)
+  (operation channel-test (added-strand tpm-power-on 2) (ch-msg c "0")
+    (5 1))
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "quote" (enc v k)))
+      (recv c (hash (hash "0" n) "refuse"))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv (cat "extend" "refuse")) (recv c (hash "0" n))
+      (send c (hash (hash "0" n) "refuse")))
+    ((recv (enc "extend" n esk)) (recv c "0") (send c (hash "0" n)))
+    ((recv "power on") (send c "0")))
+  (label 64)
+  (parent 55)
+  (realized)
+  (shape)
+  (maps ((0 1) ((n n) (v v) (k k) (aik aik) (esk esk))))
+  (origs (n (1 0)) (k (2 1)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (c chan))
+    (trace (recv "power on") (send c "0"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (c chan))
+    (trace (recv (cat "extend" value)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (esk skey) (c chan))
+    (trace (recv (enc "extend" value esk)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (non-orig esk)
+    (conf c)
+    (auth c))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (c chan) (aik akey))
+    (trace (recv (cat "quote" nonce)) (recv c current-value)
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (c chan))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik)) (recv c pcrvals) (send m))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defrule ordered-extends
+    (forall ((y z strd) (c chan))
+      (implies
+        (and (p "tpm-extend" y 3) (p "tpm-extend" z 3)
+          (p "tpm-extend" "c" y c) (p "tpm-extend" "c" z c))
+        (or (= y z) (prec y 2 z 3) (prec z 2 y 3)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig n v)
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 65)
+  (unrealized (0 0) (1 0) (2 2))
+  (preskeleton)
+  (origs (v (2 3)) (n (2 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey) (c c-0 chan))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcrvals (hash (hash "0" n) "obtain"))
+    (k k) (aik aik) (c c))
+  (defstrand tpm-extend 3 (value "obtain") (current-value (hash "0" n))
+    (c c))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0") (esk esk)
+    (c c))
+  (defstrand tpm-power-on 2 (c c))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (aik aik) (c c-0))
+  (defstrand tpm-extend 3 (value "refuse") (current-value (hash "0" n))
+    (c c-0))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0") (esk esk)
+    (c c-0))
+  (defstrand tpm-power-on 2 (c c-0))
+  (precedes ((2 0) (6 0)) ((2 0) (10 0)) ((2 1) (3 0)) ((2 3) (4 0))
+    ((2 3) (8 0)) ((3 1) (2 2)) ((4 3) (1 0)) ((5 2) (4 2))
+    ((6 2) (5 1)) ((7 1) (6 1)) ((8 2) (0 0)) ((9 2) (8 1))
+    ((10 2) (9 1)) ((11 1) (10 1)))
+  (non-orig esk aik (invk k))
+  (uniq-orig n v k)
+  (conf c c-0)
+  (auth c c-0)
+  (operation channel-test (added-strand tpm-power-on 2) (ch-msg c-0 "0")
+    (10 1))
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (recv c (hash (hash "0" n) "obtain")) (send v))
+    ((recv (cat "extend" "obtain")) (recv c (hash "0" n))
+      (send c (hash (hash "0" n) "obtain")))
+    ((recv (enc "extend" n esk)) (recv c "0") (send c (hash "0" n)))
+    ((recv "power on") (send c "0"))
+    ((recv (cat "quote" (enc v k)))
+      (recv c-0 (hash (hash "0" n) "refuse"))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv (cat "extend" "refuse")) (recv c-0 (hash "0" n))
+      (send c-0 (hash (hash "0" n) "refuse")))
+    ((recv (enc "extend" n esk)) (recv c-0 "0") (send c-0 (hash "0" n)))
+    ((recv "power on") (send c-0 "0")))
+  (label 81)
+  (parent 65)
+  (realized)
+  (shape)
+  (maps ((0 1 2) ((n n) (v v) (k k) (aik aik) (esk esk))))
+  (origs (n (2 0)) (k (3 1)) (v (2 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (c chan))
+    (trace (recv "power on") (send c "0"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (c chan))
+    (trace (recv (cat "extend" value)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (esk skey) (c chan))
+    (trace (recv (enc "extend" value esk)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (non-orig esk)
+    (conf c)
+    (auth c))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (c chan) (aik akey))
+    (trace (recv (cat "quote" nonce)) (recv c current-value)
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (c chan))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik)) (recv c pcrvals) (send m))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defrule ordered-extends
+    (forall ((y z strd) (c chan))
+      (implies
+        (and (p "tpm-extend" y 3) (p "tpm-extend" z 3)
+          (p "tpm-extend" "c" y c) (p "tpm-extend" "c" z c))
+        (or (= y z) (prec y 2 z 3) (prec z 2 y 3)))))
+  (defrule esk-same-as-chan
+    (forall ((y z strd) (esk skey) (c c-0 chan))
+      (implies
+        (and (p "tpm-extend-enc" y 3) (p "tpm-extend-enc" z 3)
+          (p "tpm-extend-enc" "esk" y esk)
+          (p "tpm-extend-enc" "esk" z esk) (p "tpm-extend-enc" "c" y c)
+          (p "tpm-extend-enc" "c" z c-0))
+        (= c c-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (v n data) (esk skey) (k aik akey))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig v n)
+  (traces ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 82)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (v n data) (esk skey) (k aik akey) (c chan))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcrvals (hash (hash "0" n) "obtain"))
+    (k k) (aik aik) (c c))
+  (defstrand tpm-extend 3 (value "obtain") (current-value (hash "0" n))
+    (c c))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0") (esk esk)
+    (c c))
+  (defstrand tpm-power-on 2 (c c))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 3) (0 0)) ((4 2) (3 2)) ((5 2) (4 1)) ((6 1) (5 1)))
+  (non-orig esk aik (invk k))
+  (uniq-orig v n k)
+  (conf c)
+  (auth c)
+  (operation channel-test (added-strand tpm-power-on 2) (ch-msg c "0")
+    (5 1))
+  (traces ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (recv c (hash (hash "0" n) "obtain")) (send v))
+    ((recv (cat "extend" "obtain")) (recv c (hash "0" n))
+      (send c (hash (hash "0" n) "obtain")))
+    ((recv (enc "extend" n esk)) (recv c "0") (send c (hash "0" n)))
+    ((recv "power on") (send c "0")))
+  (label 92)
+  (parent 82)
+  (realized)
+  (shape)
+  (maps ((0 1) ((v v) (n n) (esk esk) (k k) (aik aik))))
+  (origs (n (1 0)) (k (2 1)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (c chan))
+    (trace (recv "power on") (send c "0"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (c chan))
+    (trace (recv (cat "extend" value)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (esk skey) (c chan))
+    (trace (recv (enc "extend" value esk)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (non-orig esk)
+    (conf c)
+    (auth c))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (c chan) (aik akey))
+    (trace (recv (cat "quote" nonce)) (recv c current-value)
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (c chan))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik)) (recv c pcrvals) (send m))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defrule ordered-extends
+    (forall ((y z strd) (c chan))
+      (implies
+        (and (p "tpm-extend" y 3) (p "tpm-extend" z 3)
+          (p "tpm-extend" "c" y c) (p "tpm-extend" "c" z c))
+        (or (= y z) (prec y 2 z 3) (prec z 2 y 3)))))
+  (defrule esk-same-as-chan
+    (forall ((y z strd) (esk skey) (c c-0 chan))
+      (implies
+        (and (p "tpm-extend-enc" y 3) (p "tpm-extend-enc" z 3)
+          (p "tpm-extend-enc" "esk" y esk)
+          (p "tpm-extend-enc" "esk" z esk) (p "tpm-extend-enc" "c" y c)
+          (p "tpm-extend-enc" "c" z c-0))
+        (= c c-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig n v)
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 93)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey) (c chan))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (aik aik) (c c))
+  (defstrand tpm-extend 3 (value "refuse") (current-value (hash "0" n))
+    (c c))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0") (esk esk)
+    (c c))
+  (defstrand tpm-power-on 2 (c c))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 2) (0 0)) ((4 2) (3 1)) ((5 2) (4 1)) ((6 1) (5 1)))
+  (non-orig esk aik (invk k))
+  (uniq-orig n v k)
+  (conf c)
+  (auth c)
+  (operation channel-test (added-strand tpm-power-on 2) (ch-msg c "0")
+    (5 1))
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "quote" (enc v k)))
+      (recv c (hash (hash "0" n) "refuse"))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv (cat "extend" "refuse")) (recv c (hash "0" n))
+      (send c (hash (hash "0" n) "refuse")))
+    ((recv (enc "extend" n esk)) (recv c "0") (send c (hash "0" n)))
+    ((recv "power on") (send c "0")))
+  (label 102)
+  (parent 93)
+  (realized)
+  (shape)
+  (maps ((0 1) ((n n) (v v) (k k) (aik aik) (esk esk))))
+  (origs (n (1 0)) (k (2 1)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (c chan))
+    (trace (recv "power on") (send c "0"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (c chan))
+    (trace (recv (cat "extend" value)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (conf c)
+    (auth c))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (esk skey) (c chan))
+    (trace (recv (enc "extend" value esk)) (recv c current-value)
+      (send c (hash current-value value)) (send "ext ok"))
+    (non-orig esk)
+    (conf c)
+    (auth c))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (c chan) (aik akey))
+    (trace (recv (cat "quote" nonce)) (recv c current-value)
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (c chan))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik)) (recv c pcrvals) (send m))
+    (non-orig aik)
+    (conf c)
+    (auth c))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defrule ordered-extends
+    (forall ((y z strd) (c chan))
+      (implies
+        (and (p "tpm-extend" y 3) (p "tpm-extend" z 3)
+          (p "tpm-extend" "c" y c) (p "tpm-extend" "c" z c))
+        (or (= y z) (prec y 2 z 3) (prec z 2 y 3)))))
+  (defrule esk-same-as-chan
+    (forall ((y z strd) (esk skey) (c c-0 chan))
+      (implies
+        (and (p "tpm-extend-enc" y 3) (p "tpm-extend-enc" z 3)
+          (p "tpm-extend-enc" "esk" y esk)
+          (p "tpm-extend-enc" "esk" z esk) (p "tpm-extend-enc" "c" y c)
+          (p "tpm-extend-enc" "c" z c-0))
+        (= c c-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig n v)
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 103)
+  (unrealized (0 0) (1 0) (2 2))
+  (preskeleton)
+  (origs (v (2 3)) (n (2 0)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
diff --git a/tst/chan-perrig-song.tst b/tst/chan-perrig-song.tst
--- a/tst/chan-perrig-song.tst
+++ b/tst/chan-perrig-song.tst
@@ -1,6 +1,6 @@
 (herald perrig-song)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/chan-perrig-song.scm")
 
 (defprotocol perrig-song basic
@@ -37,6 +37,7 @@
   (auth c)
   (operation channel-test (added-strand resp 2)
     (ch-msg c (cat na nb a b)) (0 1))
+  (strand-map 0)
   (traces ((send na) (recv c (cat na nb a b)))
     ((recv na) (send c (cat na nb a b))))
   (label 1)
@@ -82,6 +83,7 @@
   (conf c)
   (operation nonce-test (added-strand init 3) nb (0 2)
     (ch-msg c (cat na nb a b)))
+  (strand-map 0)
   (traces ((recv na) (send c (cat na nb a b)) (recv nb))
     ((send na) (recv c (cat na nb a b)) (send nb)))
   (label 3)
diff --git a/tst/chan-perrig-song_shapes.tst b/tst/chan-perrig-song_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/chan-perrig-song_shapes.tst
@@ -0,0 +1,154 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald perrig-song)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/chan-perrig-song.scm")
+
+(defprotocol perrig-song basic
+  (defrole init
+    (vars (na nb text) (a b name) (c chan))
+    (trace (send na) (recv c (cat na nb a b)) (send nb)))
+  (defrole resp
+    (vars (na nb text) (a b name) (c chan))
+    (trace (recv na) (send c (cat na nb a b)) (recv nb)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton perrig-song
+  (vars (na nb text) (a b name) (c chan))
+  (defstrand init 2 (na na) (nb nb) (a a) (b b) (c c))
+  (uniq-orig na)
+  (auth c)
+  (traces ((send na) (recv c (cat na nb a b))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (na (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton perrig-song
+  (vars (na nb text) (a b name) (c chan))
+  (defstrand init 2 (na na) (nb nb) (a a) (b b) (c c))
+  (defstrand resp 2 (na na) (nb nb) (a a) (b b) (c c))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-orig na)
+  (auth c)
+  (operation channel-test (added-strand resp 2)
+    (ch-msg c (cat na nb a b)) (0 1))
+  (traces ((send na) (recv c (cat na nb a b)))
+    ((recv na) (send c (cat na nb a b))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((na na) (c c) (nb nb) (a a) (b b))))
+  (origs (na (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol perrig-song basic
+  (defrole init
+    (vars (na nb text) (a b name) (c chan))
+    (trace (send na) (recv c (cat na nb a b)) (send nb)))
+  (defrole resp
+    (vars (na nb text) (a b name) (c chan))
+    (trace (recv na) (send c (cat na nb a b)) (recv nb)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton perrig-song
+  (vars (nb na text) (a b name) (c chan))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (c c))
+  (uniq-orig nb)
+  (conf c)
+  (traces ((recv na) (send c (cat na nb a b)) (recv nb)))
+  (label 2)
+  (unrealized (0 2))
+  (origs (nb (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton perrig-song
+  (vars (nb na text) (a b name) (c chan))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (c c))
+  (defstrand init 3 (na na) (nb nb) (a a) (b b) (c c))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (uniq-orig nb)
+  (conf c)
+  (operation nonce-test (added-strand init 3) nb (0 2)
+    (ch-msg c (cat na nb a b)))
+  (traces ((recv na) (send c (cat na nb a b)) (recv nb))
+    ((send na) (recv c (cat na nb a b)) (send nb)))
+  (label 3)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((nb nb) (c c) (na na) (a a) (b b))))
+  (origs (nb (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol perrig-song basic
+  (defrole init
+    (vars (na nb text) (a b name) (c chan))
+    (trace (send na) (recv c (cat na nb a b)) (send nb)))
+  (defrole resp
+    (vars (na nb text) (a b name) (c chan))
+    (trace (recv na) (send c (cat na nb a b)) (recv nb)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton perrig-song
+  (vars (na nb text) (a b name) (c chan))
+  (defstrand init 2 (na na) (nb nb) (a a) (b b) (c c))
+  (uniq-orig na)
+  (conf c)
+  (traces ((send na) (recv c (cat na nb a b))))
+  (label 4)
+  (realized)
+  (shape)
+  (maps ((0) ((na na) (c c) (nb nb) (a a) (b b))))
+  (origs (na (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol perrig-song basic
+  (defrole init
+    (vars (na nb text) (a b name) (c chan))
+    (trace (send na) (recv c (cat na nb a b)) (send nb)))
+  (defrole resp
+    (vars (na nb text) (a b name) (c chan))
+    (trace (recv na) (send c (cat na nb a b)) (recv nb)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton perrig-song
+  (vars (nb na text) (a b name) (c chan))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (c c))
+  (uniq-orig nb)
+  (auth c)
+  (traces ((recv na) (send c (cat na nb a b)) (recv nb)))
+  (label 5)
+  (realized)
+  (shape)
+  (maps ((0) ((nb nb) (c c) (na na) (a a) (b b))))
+  (origs (nb (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/chan-unilateral.tst b/tst/chan-unilateral.tst
--- a/tst/chan-unilateral.tst
+++ b/tst/chan-unilateral.tst
@@ -1,6 +1,6 @@
 (herald chan-unilateral)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/chan-unilateral.scm")
 
 (defprotocol unilateral basic
@@ -94,6 +94,7 @@
   (uniq-orig n)
   (conf ch)
   (operation nonce-test (added-strand resp 2) n (0 1) (ch-msg ch n))
+  (strand-map 0)
   (traces ((send ch n) (recv n)) ((recv ch n) (send n)))
   (label 3)
   (parent 2)
@@ -140,6 +141,7 @@
   (conf ch)
   (auth ch)
   (operation nonce-test (added-strand resp 2) n (0 1) (ch-msg ch n))
+  (strand-map 0)
   (traces ((send ch n) (recv n)) ((recv ch n) (send n)))
   (label 5)
   (parent 4)
@@ -183,6 +185,7 @@
   (pen-non-orig n)
   (uniq-orig n)
   (operation nonce-test (added-strand init 1) n (0 0))
+  (strand-map 0)
   (traces ((recv ch n) (send n)) ((send ch-0 n)))
   (label 7)
   (parent 6)
@@ -228,6 +231,7 @@
   (uniq-orig n)
   (auth ch)
   (operation channel-test (added-strand init 1) (ch-msg ch n) (0 0))
+  (strand-map 0)
   (traces ((recv ch n) (send n)) ((send ch n)))
   (label 9)
   (parent 8)
@@ -273,6 +277,7 @@
   (uniq-orig n)
   (conf ch)
   (operation nonce-test (added-strand init 1) n (0 0))
+  (strand-map 0)
   (traces ((recv ch n) (send n)) ((send ch-0 n)))
   (label 11)
   (parent 10)
@@ -320,6 +325,7 @@
   (conf ch)
   (auth ch)
   (operation channel-test (added-strand init 1) (ch-msg ch n) (0 0))
+  (strand-map 0)
   (traces ((recv ch n) (send n)) ((send ch n)))
   (label 13)
   (parent 12)
diff --git a/tst/chan-unilateral_shapes.tst b/tst/chan-unilateral_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/chan-unilateral_shapes.tst
@@ -0,0 +1,335 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald chan-unilateral)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/chan-unilateral.scm")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (n text) (ch chan))
+    (trace (send ch n) (recv n))
+    (uniq-orig n))
+  (defrole resp (vars (n text) (ch chan)) (trace (recv ch n) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Unilateral protocol using channels with differing assumptions"))
+
+(defskeleton unilateral
+  (vars (n text) (ch chan))
+  (defstrand init 2 (n n) (ch ch))
+  (uniq-orig n)
+  (traces ((send ch n) (recv n)))
+  (label 0)
+  (realized)
+  (shape)
+  (maps ((0) ((ch ch) (n n))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (n text) (ch chan))
+    (trace (send ch n) (recv n))
+    (uniq-orig n))
+  (defrole resp (vars (n text) (ch chan)) (trace (recv ch n) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Unilateral protocol using channels with differing assumptions"))
+
+(defskeleton unilateral
+  (vars (n text) (ch chan))
+  (defstrand init 2 (n n) (ch ch))
+  (uniq-orig n)
+  (auth ch)
+  (traces ((send ch n) (recv n)))
+  (label 1)
+  (realized)
+  (shape)
+  (maps ((0) ((ch ch) (n n))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (n text) (ch chan))
+    (trace (send ch n) (recv n))
+    (uniq-orig n))
+  (defrole resp (vars (n text) (ch chan)) (trace (recv ch n) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Unilateral protocol using channels with differing assumptions"))
+
+(defskeleton unilateral
+  (vars (n text) (ch chan))
+  (defstrand init 2 (n n) (ch ch))
+  (uniq-orig n)
+  (conf ch)
+  (traces ((send ch n) (recv n)))
+  (label 2)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton unilateral
+  (vars (n text) (ch chan))
+  (defstrand init 2 (n n) (ch ch))
+  (defstrand resp 2 (n n) (ch ch))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-orig n)
+  (conf ch)
+  (operation nonce-test (added-strand resp 2) n (0 1) (ch-msg ch n))
+  (traces ((send ch n) (recv n)) ((recv ch n) (send n)))
+  (label 3)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((ch ch) (n n))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (n text) (ch chan))
+    (trace (send ch n) (recv n))
+    (uniq-orig n))
+  (defrole resp (vars (n text) (ch chan)) (trace (recv ch n) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Unilateral protocol using channels with differing assumptions"))
+
+(defskeleton unilateral
+  (vars (n text) (ch chan))
+  (defstrand init 2 (n n) (ch ch))
+  (uniq-orig n)
+  (conf ch)
+  (auth ch)
+  (traces ((send ch n) (recv n)))
+  (label 4)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton unilateral
+  (vars (n text) (ch chan))
+  (defstrand init 2 (n n) (ch ch))
+  (defstrand resp 2 (n n) (ch ch))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-orig n)
+  (conf ch)
+  (auth ch)
+  (operation nonce-test (added-strand resp 2) n (0 1) (ch-msg ch n))
+  (traces ((send ch n) (recv n)) ((recv ch n) (send n)))
+  (label 5)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((ch ch) (n n))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (n text) (ch chan))
+    (trace (send ch n) (recv n))
+    (uniq-orig n))
+  (defrole resp (vars (n text) (ch chan)) (trace (recv ch n) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Unilateral protocol using channels with differing assumptions"))
+
+(defskeleton unilateral
+  (vars (n text) (ch chan))
+  (defstrand resp 2 (n n) (ch ch))
+  (pen-non-orig n)
+  (traces ((recv ch n) (send n)))
+  (label 6)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton unilateral
+  (vars (n text) (ch ch-0 chan))
+  (defstrand resp 2 (n n) (ch ch))
+  (defstrand init 1 (n n) (ch ch-0))
+  (precedes ((1 0) (0 0)))
+  (pen-non-orig n)
+  (uniq-orig n)
+  (operation nonce-test (added-strand init 1) n (0 0))
+  (traces ((recv ch n) (send n)) ((send ch-0 n)))
+  (label 7)
+  (parent 6)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (ch ch))))
+  (origs (n (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (n text) (ch chan))
+    (trace (send ch n) (recv n))
+    (uniq-orig n))
+  (defrole resp (vars (n text) (ch chan)) (trace (recv ch n) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Unilateral protocol using channels with differing assumptions"))
+
+(defskeleton unilateral
+  (vars (n text) (ch chan))
+  (defstrand resp 2 (n n) (ch ch))
+  (pen-non-orig n)
+  (auth ch)
+  (traces ((recv ch n) (send n)))
+  (label 8)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton unilateral
+  (vars (n text) (ch chan))
+  (defstrand resp 2 (n n) (ch ch))
+  (defstrand init 1 (n n) (ch ch))
+  (precedes ((1 0) (0 0)))
+  (pen-non-orig n)
+  (uniq-orig n)
+  (auth ch)
+  (operation channel-test (added-strand init 1) (ch-msg ch n) (0 0))
+  (traces ((recv ch n) (send n)) ((send ch n)))
+  (label 9)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (ch ch))))
+  (origs (n (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (n text) (ch chan))
+    (trace (send ch n) (recv n))
+    (uniq-orig n))
+  (defrole resp (vars (n text) (ch chan)) (trace (recv ch n) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Unilateral protocol using channels with differing assumptions"))
+
+(defskeleton unilateral
+  (vars (n text) (ch chan))
+  (defstrand resp 2 (n n) (ch ch))
+  (pen-non-orig n)
+  (conf ch)
+  (traces ((recv ch n) (send n)))
+  (label 10)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton unilateral
+  (vars (n text) (ch ch-0 chan))
+  (defstrand resp 2 (n n) (ch ch))
+  (defstrand init 1 (n n) (ch ch-0))
+  (precedes ((1 0) (0 0)))
+  (pen-non-orig n)
+  (uniq-orig n)
+  (conf ch)
+  (operation nonce-test (added-strand init 1) n (0 0))
+  (traces ((recv ch n) (send n)) ((send ch-0 n)))
+  (label 11)
+  (parent 10)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (ch ch))))
+  (origs (n (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (n text) (ch chan))
+    (trace (send ch n) (recv n))
+    (uniq-orig n))
+  (defrole resp (vars (n text) (ch chan)) (trace (recv ch n) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Unilateral protocol using channels with differing assumptions"))
+
+(defskeleton unilateral
+  (vars (n text) (ch chan))
+  (defstrand resp 2 (n n) (ch ch))
+  (pen-non-orig n)
+  (conf ch)
+  (auth ch)
+  (traces ((recv ch n) (send n)))
+  (label 12)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton unilateral
+  (vars (n text) (ch chan))
+  (defstrand resp 2 (n n) (ch ch))
+  (defstrand init 1 (n n) (ch ch))
+  (precedes ((1 0) (0 0)))
+  (pen-non-orig n)
+  (uniq-orig n)
+  (conf ch)
+  (auth ch)
+  (operation channel-test (added-strand init 1) (ch-msg ch n) (0 0))
+  (traces ((recv ch n) (send n)) ((send ch n)))
+  (label 13)
+  (parent 12)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (ch ch))))
+  (origs (n (1 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/chan-yahalom-role-decl.tst b/tst/chan-yahalom-role-decl.tst
--- a/tst/chan-yahalom-role-decl.tst
+++ b/tst/chan-yahalom-role-decl.tst
@@ -1,6 +1,6 @@
 (herald "Yahalom Protocol Without Forwarding" (bound 15))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/chan-yahalom-role-decl.scm")
 (comment "Strand count bounded at 15")
 
@@ -55,6 +55,7 @@
   (auth ch2)
   (operation channel-test (added-strand serv 3) (ch-msg ch2 (cat a b k))
     (0 2))
+  (strand-map 0)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -79,6 +80,7 @@
   (conf ch2 ch3)
   (auth ch2 ch3-0)
   (operation encryption-test (added-strand init 3) (enc n-b k) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -104,6 +106,7 @@
   (conf ch2 ch3)
   (auth ch2)
   (operation encryption-test (added-listener k) (enc n-b k) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -129,6 +132,7 @@
   (auth ch2 ch3)
   (operation channel-test (displaced 3 1 serv 2)
     (ch-msg ch3-0 (cat a-0 b-0 k n-a-1 n-b-0)) (2 1))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -158,6 +162,7 @@
   (auth ch2)
   (operation nonce-test (displaced 3 1 serv 3) k (2 0)
     (ch-msg ch3 (cat a b k n-a-0 n-b-0)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -225,6 +230,7 @@
   (auth ch2)
   (operation channel-test (added-strand serv 3) (ch-msg ch2 (cat a b k))
     (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k))) ((recv k) (send k))
@@ -249,6 +255,7 @@
   (auth ch2)
   (operation nonce-test (displaced 3 2 serv 3) k (1 0)
     (ch-msg ch3 (cat a b k n-a-0 n-b-0)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k))) ((recv k) (send k))
@@ -310,6 +317,7 @@
   (auth ch3)
   (operation channel-test (added-strand serv 2)
     (ch-msg ch3 (cat a b k n-a n-b)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
       (send (enc n-b k)))
@@ -372,6 +380,7 @@
   (auth ch3)
   (operation channel-test (added-strand serv 2)
     (ch-msg ch3 (cat a b k n-a n-b)) (0 1))
+  (strand-map 0 1)
   (traces
     ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
       (send (enc n-b k))) ((recv k) (send k))
@@ -393,6 +402,7 @@
   (auth ch3)
   (operation nonce-test (displaced 2 3 serv 3) k (1 0)
     (ch-msg ch3 (cat a b k n-a n-b)))
+  (strand-map 0 1 2)
   (traces
     ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
       (send (enc n-b k))) ((recv k) (send k))
@@ -462,6 +472,7 @@
   (auth ch3 ch2)
   (operation channel-test (added-strand serv 3)
     (ch-msg ch2 (cat a-0 b-0 k)) (1 2))
+  (strand-map 0 1)
   (traces
     ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
       (send (enc n-b k)))
@@ -489,6 +500,7 @@
   (auth ch2 ch3)
   (operation channel-test (displaced 3 2 serv 2)
     (ch-msg ch3-0 (cat a-0 b-0 k n-a-1 n-b-1)) (0 1))
+  (strand-map 0 1 2)
   (traces
     ((send (cat a n-a-0)) (recv ch3 (cat a b k n-a-0 n-b-0))
       (send (enc n-b-0 k)))
@@ -564,6 +576,7 @@
   (auth ch3 ch2)
   (operation channel-test (added-strand serv 3)
     (ch-msg ch2 (cat a-0 b-0 k)) (1 2))
+  (strand-map 0 1)
   (traces
     ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
       (send (enc n-b k)))
@@ -590,6 +603,7 @@
   (conf ch2 ch3-0)
   (auth ch3 ch2)
   (operation encryption-test (displaced 3 0 init 3) (enc n-b-1 k) (1 3))
+  (strand-map 0 1 2)
   (traces
     ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
       (send (enc n-b k)))
@@ -618,6 +632,7 @@
   (conf ch2 ch3-0)
   (auth ch3 ch2 ch3-1)
   (operation encryption-test (added-strand init 3) (enc n-b-0 k) (1 3))
+  (strand-map 0 1 2)
   (traces
     ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
       (send (enc n-b k)))
@@ -647,6 +662,7 @@
   (conf ch2 ch3-0)
   (auth ch3 ch2)
   (operation encryption-test (added-listener k) (enc n-b-0 k) (1 3))
+  (strand-map 0 1 2)
   (traces
     ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
       (send (enc n-b k)))
@@ -674,6 +690,7 @@
   (auth ch2 ch3)
   (operation channel-test (displaced 3 2 serv 2)
     (ch-msg ch3-0 (cat a-0 b-0 k n-a-1 n-b-0)) (0 1))
+  (strand-map 0 1 2)
   (traces
     ((send (cat a n-a-0)) (recv ch3 (cat a b k n-a-0 n-b))
       (send (enc n-b k)))
@@ -707,6 +724,7 @@
   (auth ch3 ch2 ch3-0)
   (operation channel-test (displaced 4 2 serv 2)
     (ch-msg ch3-1 (cat a-1 b-1 k n-a-2 n-b-1)) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
       (send (enc n-b k)))
@@ -738,6 +756,7 @@
   (auth ch3 ch2)
   (operation nonce-test (displaced 4 2 serv 3) k (3 0)
     (ch-msg ch3-0 (cat a-0 b-0 k n-a-1 n-b-1)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
       (send (enc n-b k)))
@@ -865,6 +884,7 @@
   (conf ch2 ch3)
   (operation nonce-test (displaced 2 0 serv 3) k (1 0)
     (ch-msg ch3 (cat a b k n-a n-b)))
+  (strand-map 0 1)
   (traces
     ((recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
       (send ch2 (cat a b k))) ((recv k) (send k)))
diff --git a/tst/chan-yahalom-role-decl_shapes.tst b/tst/chan-yahalom-role-decl_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/chan-yahalom-role-decl_shapes.tst
@@ -0,0 +1,456 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Yahalom Protocol Without Forwarding" (bound 15))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/chan-yahalom-role-decl.scm")
+
+(comment "Strand count bounded at 15")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b name) (n-a n-b text) (k skey) (ch3 chan))
+    (trace (send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k)))
+    (auth ch3))
+  (defrole resp
+    (vars (b a name) (n-a n-b text) (k skey) (ch1 ch2 chan))
+    (trace (recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k)))
+    (auth ch2))
+  (defrole serv
+    (vars (a b name) (n-a n-b text) (k skey) (ch1 ch2 ch3 chan))
+    (trace (recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    (uniq-orig k)
+    (conf ch2 ch3))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-b n-a text) (b a name) (ch1 ch2 chan))
+  (defstrand resp 4 (k k) (n-a n-a) (n-b n-b) (b b) (a a) (ch1 ch1)
+    (ch2 ch2))
+  (uniq-orig n-b)
+  (auth ch2)
+  (traces
+    ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k))))
+  (label 0)
+  (unrealized (0 2))
+  (origs (n-b (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-a-0 n-b text) (b a name)
+    (ch1 ch2 ch1-0 ch3 chan))
+  (defstrand resp 4 (k k) (n-a n-a) (n-b n-b) (b b) (a a) (ch1 ch1)
+    (ch2 ch2))
+  (defstrand serv 3 (k k) (n-a n-a-0) (n-b n-b) (a a) (b b) (ch1 ch1-0)
+    (ch2 ch2) (ch3 ch3))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a) (b b) (ch3 ch3))
+  (precedes ((0 1) (1 0)) ((1 1) (2 1)) ((1 2) (0 2)) ((2 2) (0 3)))
+  (uniq-orig k n-b)
+  (conf ch2 ch3)
+  (auth ch2 ch3)
+  (operation channel-test (displaced 3 1 serv 2)
+    (ch-msg ch3-0 (cat a-0 b-0 k n-a-1 n-b-0)) (2 1))
+  (traces
+    ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k)))
+    ((recv ch1-0 (cat a b n-a-0 n-b)) (send ch3 (cat a b k n-a-0 n-b))
+      (send ch2 (cat a b k)))
+    ((send (cat a n-a-0)) (recv ch3 (cat a b k n-a-0 n-b))
+      (send (enc n-b k))))
+  (label 4)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0) ((n-b n-b) (b b) (a a) (n-a n-a) (k k) (ch1 ch1) (ch2 ch2))))
+  (origs (k (1 1)) (n-b (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b name) (n-a n-b text) (k skey) (ch3 chan))
+    (trace (send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k)))
+    (auth ch3))
+  (defrole resp
+    (vars (b a name) (n-a n-b text) (k skey) (ch1 ch2 chan))
+    (trace (recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k)))
+    (auth ch2))
+  (defrole serv
+    (vars (a b name) (n-a n-b text) (k skey) (ch1 ch2 ch3 chan))
+    (trace (recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    (uniq-orig k)
+    (conf ch2 ch3))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-b n-a text) (b a name) (ch1 ch2 chan))
+  (defstrand resp 4 (k k) (n-a n-a) (n-b n-b) (b b) (a a) (ch1 ch1)
+    (ch2 ch2))
+  (deflistener k)
+  (uniq-orig n-b)
+  (auth ch2)
+  (traces
+    ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k))) ((recv k) (send k)))
+  (label 6)
+  (unrealized (0 2))
+  (origs (n-b (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b name) (n-a n-b text) (k skey) (ch3 chan))
+    (trace (send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k)))
+    (auth ch3))
+  (defrole resp
+    (vars (b a name) (n-a n-b text) (k skey) (ch1 ch2 chan))
+    (trace (recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k)))
+    (auth ch2))
+  (defrole serv
+    (vars (a b name) (n-a n-b text) (k skey) (ch1 ch2 ch3 chan))
+    (trace (recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    (uniq-orig k)
+    (conf ch2 ch3))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b name) (ch3 chan))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch3 ch3))
+  (uniq-orig n-a)
+  (auth ch3)
+  (traces
+    ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k))))
+  (label 9)
+  (unrealized (0 1))
+  (origs (n-a (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b name) (ch3 ch1 chan))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch3 ch3))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch1 ch1)
+    (ch3 ch3))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-orig k n-a)
+  (conf ch3)
+  (auth ch3)
+  (operation channel-test (added-strand serv 2)
+    (ch-msg ch3 (cat a b k n-a n-b)) (0 1))
+  (traces
+    ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k)))
+    ((recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))))
+  (label 10)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps ((0) ((n-a n-a) (a a) (b b) (n-b n-b) (k k) (ch3 ch3))))
+  (origs (k (1 1)) (n-a (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b name) (n-a n-b text) (k skey) (ch3 chan))
+    (trace (send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k)))
+    (auth ch3))
+  (defrole resp
+    (vars (b a name) (n-a n-b text) (k skey) (ch1 ch2 chan))
+    (trace (recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k)))
+    (auth ch2))
+  (defrole serv
+    (vars (a b name) (n-a n-b text) (k skey) (ch1 ch2 ch3 chan))
+    (trace (recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    (uniq-orig k)
+    (conf ch2 ch3))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b name) (ch3 chan))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch3 ch3))
+  (deflistener k)
+  (auth ch3)
+  (traces
+    ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k))) ((recv k) (send k)))
+  (label 11)
+  (unrealized (0 1))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b name) (n-a n-b text) (k skey) (ch3 chan))
+    (trace (send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k)))
+    (auth ch3))
+  (defrole resp
+    (vars (b a name) (n-a n-b text) (k skey) (ch1 ch2 chan))
+    (trace (recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k)))
+    (auth ch2))
+  (defrole serv
+    (vars (a b name) (n-a n-b text) (k skey) (ch1 ch2 ch3 chan))
+    (trace (recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    (uniq-orig k)
+    (conf ch2 ch3))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b n-a-0 n-b-0 text) (a b b-0 a-0 name)
+    (ch3 ch1 ch2 chan))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch3 ch3))
+  (defstrand resp 3 (k k) (n-a n-a-0) (n-b n-b-0) (b b-0) (a a-0)
+    (ch1 ch1) (ch2 ch2))
+  (uniq-orig n-a)
+  (auth ch3 ch2)
+  (traces
+    ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k)))
+    ((recv (cat a-0 n-a-0)) (send ch1 (cat a-0 b-0 n-a-0 n-b-0))
+      (recv ch2 (cat a-0 b-0 k))))
+  (label 14)
+  (unrealized (0 1) (1 2))
+  (origs (n-a (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b n-a-0 n-b-0 text) (b a name)
+    (ch1 ch2 ch1-0 ch3 chan))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b-0) (a a) (b b) (ch3 ch3))
+  (defstrand resp 3 (k k) (n-a n-a) (n-b n-b) (b b) (a a) (ch1 ch1)
+    (ch2 ch2))
+  (defstrand serv 3 (k k) (n-a n-a-0) (n-b n-b-0) (a a) (b b)
+    (ch1 ch1-0) (ch2 ch2) (ch3 ch3))
+  (precedes ((0 0) (2 0)) ((2 1) (0 1)) ((2 2) (1 2)))
+  (uniq-orig k n-a-0)
+  (conf ch2 ch3)
+  (auth ch2 ch3)
+  (operation channel-test (displaced 3 2 serv 2)
+    (ch-msg ch3-0 (cat a-0 b-0 k n-a-1 n-b-1)) (0 1))
+  (traces
+    ((send (cat a n-a-0)) (recv ch3 (cat a b k n-a-0 n-b-0))
+      (send (enc n-b-0 k)))
+    ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)))
+    ((recv ch1-0 (cat a b n-a-0 n-b-0))
+      (send ch3 (cat a b k n-a-0 n-b-0)) (send ch2 (cat a b k))))
+  (label 16)
+  (parent 14)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((n-a n-a-0) (k k) (a a) (b b) (n-b n-b-0) (ch3 ch3) (b-0 b)
+        (a-0 a) (n-a-0 n-a) (n-b-0 n-b) (ch1 ch1) (ch2 ch2))))
+  (origs (k (2 1)) (n-a-0 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b name) (n-a n-b text) (k skey) (ch3 chan))
+    (trace (send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k)))
+    (auth ch3))
+  (defrole resp
+    (vars (b a name) (n-a n-b text) (k skey) (ch1 ch2 chan))
+    (trace (recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k)))
+    (auth ch2))
+  (defrole serv
+    (vars (a b name) (n-a n-b text) (k skey) (ch1 ch2 ch3 chan))
+    (trace (recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    (uniq-orig k)
+    (conf ch2 ch3))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b n-a-0 n-b-0 text) (a b b-0 a-0 name)
+    (ch3 ch1 ch2 chan))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch3 ch3))
+  (defstrand resp 4 (k k) (n-a n-a-0) (n-b n-b-0) (b b-0) (a a-0)
+    (ch1 ch1) (ch2 ch2))
+  (uniq-orig n-a)
+  (auth ch3 ch2)
+  (traces
+    ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k)))
+    ((recv (cat a-0 n-a-0)) (send ch1 (cat a-0 b-0 n-a-0 n-b-0))
+      (recv ch2 (cat a-0 b-0 k)) (recv (enc n-b-0 k))))
+  (label 17)
+  (unrealized (0 1) (1 2))
+  (origs (n-a (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-a-0 n-b text) (b a name)
+    (ch1 ch2 ch1-0 ch3 chan))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a) (b b) (ch3 ch3))
+  (defstrand resp 4 (k k) (n-a n-a) (n-b n-b) (b b) (a a) (ch1 ch1)
+    (ch2 ch2))
+  (defstrand serv 3 (k k) (n-a n-a-0) (n-b n-b) (a a) (b b) (ch1 ch1-0)
+    (ch2 ch2) (ch3 ch3))
+  (precedes ((0 0) (2 0)) ((0 2) (1 3)) ((2 1) (0 1)) ((2 2) (1 2)))
+  (uniq-orig k n-a-0)
+  (conf ch2 ch3)
+  (auth ch2 ch3)
+  (operation channel-test (displaced 3 2 serv 2)
+    (ch-msg ch3-0 (cat a-0 b-0 k n-a-1 n-b-0)) (0 1))
+  (traces
+    ((send (cat a n-a-0)) (recv ch3 (cat a b k n-a-0 n-b))
+      (send (enc n-b k)))
+    ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k)))
+    ((recv ch1-0 (cat a b n-a-0 n-b)) (send ch3 (cat a b k n-a-0 n-b))
+      (send ch2 (cat a b k))))
+  (label 22)
+  (parent 17)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((n-a n-a-0) (k k) (a a) (b b) (n-b n-b) (ch3 ch3) (b-0 b) (a-0 a)
+        (n-a-0 n-a) (n-b-0 n-b) (ch1 ch1) (ch2 ch2))))
+  (origs (k (2 1)) (n-a-0 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b name) (n-a n-b text) (k skey) (ch3 chan))
+    (trace (send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k)))
+    (auth ch3))
+  (defrole resp
+    (vars (b a name) (n-a n-b text) (k skey) (ch1 ch2 chan))
+    (trace (recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k)))
+    (auth ch2))
+  (defrole serv
+    (vars (a b name) (n-a n-b text) (k skey) (ch1 ch2 ch3 chan))
+    (trace (recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    (uniq-orig k)
+    (conf ch2 ch3))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b name) (ch1 ch2 ch3 chan))
+  (defstrand serv 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch1 ch1)
+    (ch2 ch2) (ch3 ch3))
+  (uniq-orig k)
+  (conf ch2 ch3)
+  (traces
+    ((recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k))))
+  (label 25)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (n-a n-a) (n-b n-b) (k k) (ch1 ch1) (ch2 ch2)
+        (ch3 ch3))))
+  (origs (k (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b name) (n-a n-b text) (k skey) (ch3 chan))
+    (trace (send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k)))
+    (auth ch3))
+  (defrole resp
+    (vars (b a name) (n-a n-b text) (k skey) (ch1 ch2 chan))
+    (trace (recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k)))
+    (auth ch2))
+  (defrole serv
+    (vars (a b name) (n-a n-b text) (k skey) (ch1 ch2 ch3 chan))
+    (trace (recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    (uniq-orig k)
+    (conf ch2 ch3))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b name) (ch1 ch2 ch3 chan))
+  (defstrand serv 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch1 ch1)
+    (ch2 ch2) (ch3 ch3))
+  (deflistener k)
+  (uniq-orig k)
+  (conf ch2 ch3)
+  (traces
+    ((recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k))) ((recv k) (send k)))
+  (label 26)
+  (unrealized (1 0))
+  (preskeleton)
+  (origs (k (0 1)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
diff --git a/tst/chan-yahalom.tst b/tst/chan-yahalom.tst
--- a/tst/chan-yahalom.tst
+++ b/tst/chan-yahalom.tst
@@ -1,6 +1,6 @@
 (herald "Yahalom Protocol Without Forwarding" (bound 15))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/chan-yahalom.scm")
 (comment "Strand count bounded at 15")
 
@@ -51,6 +51,7 @@
   (auth ch2)
   (operation channel-test (added-strand serv 3) (ch-msg ch2 (cat a b k))
     (0 2))
+  (strand-map 0)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -122,6 +123,7 @@
   (conf ch2 ch3)
   (auth ch2)
   (operation encryption-test (added-strand init 3) (enc n-b k) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -147,6 +149,7 @@
   (conf ch2 ch3)
   (auth ch2)
   (operation encryption-test (added-listener k) (enc n-b k) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -173,6 +176,7 @@
   (operation nonce-test
     (contracted (n-b-0 n-b) (a-0 a) (b-0 b) (n-a-1 n-a-0) (ch3-0 ch3)) k
     (2 1) (ch-msg ch3 (cat a b k n-a-0 n-b)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -205,6 +209,7 @@
   (auth ch2)
   (operation nonce-test (displaced 3 1 serv 3) k (2 1)
     (ch-msg ch3 (cat a b k n-a-0 n-b-0)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -231,6 +236,7 @@
   (auth ch2)
   (operation nonce-test (displaced 3 1 serv 3) k (2 0)
     (ch-msg ch3 (cat a b k n-a-0 n-b-0)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -258,6 +264,7 @@
   (operation nonce-test
     (contracted (n-b-0 n-b) (a-0 a) (b-0 b) (n-a-1 n-a-0) (ch3-0 ch3)) k
     (2 1) (ch-msg ch2 (cat a b k)) (ch-msg ch3 (cat a b k n-a-0 n-b)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -268,6 +275,9 @@
   (label 8)
   (parent 6)
   (seen 5)
+  (seen-ops
+    (5 (operation generalization weakened ((1 2) (2 1)))
+      (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -349,6 +359,7 @@
   (auth ch1 ch2)
   (operation channel-test (displaced 2 0 resp 2)
     (ch-msg ch1-0 (cat a b n-a-0 n-b-0)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -374,6 +385,7 @@
   (auth ch2 ch1-0)
   (operation channel-test (added-strand resp 2)
     (ch-msg ch1-0 (cat a b n-a-0 n-b-0)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -397,6 +409,7 @@
   (auth ch1 ch2)
   (operation channel-test (displaced 2 1 serv 3)
     (ch-msg ch2 (cat a b k)) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -422,6 +435,7 @@
   (auth ch2 ch1-0)
   (operation channel-test (displaced 3 1 serv 3)
     (ch-msg ch2 (cat a b k)) (0 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -447,6 +461,7 @@
   (conf ch2 ch3)
   (auth ch1 ch2)
   (operation encryption-test (added-strand init 3) (enc n-b k) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -471,6 +486,7 @@
   (conf ch2 ch3)
   (auth ch1 ch2)
   (operation encryption-test (added-listener k) (enc n-b k) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -497,6 +513,7 @@
   (conf ch2 ch3)
   (auth ch2 ch1-0)
   (operation encryption-test (added-strand init 3) (enc n-b k) (0 3))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -524,6 +541,7 @@
   (conf ch2 ch3)
   (auth ch2 ch1-0)
   (operation encryption-test (added-listener k) (enc n-b k) (0 3))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -550,6 +568,7 @@
   (operation nonce-test
     (contracted (a-0 a) (b-0 b) (n-a-0 n-a) (ch3-0 ch3)) k (2 1)
     (ch-msg ch3 (cat a b k n-a n-b)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -582,6 +601,7 @@
   (auth ch1 ch2)
   (operation nonce-test (displaced 3 1 serv 3) k (2 1)
     (ch-msg ch3 (cat a b k n-a n-b)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -607,6 +627,7 @@
   (auth ch1 ch2)
   (operation nonce-test (displaced 3 1 serv 3) k (2 0)
     (ch-msg ch3 (cat a b k n-a n-b)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -635,6 +656,7 @@
   (auth ch2 ch1-0)
   (operation nonce-test (displaced 4 1 serv 3) k (3 1)
     (ch-msg ch3 (cat a b k n-a-0 n-b-0)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -664,6 +686,7 @@
   (auth ch2 ch1-0)
   (operation nonce-test (displaced 4 1 serv 3) k (3 0)
     (ch-msg ch3 (cat a b k n-a-0 n-b-0)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -691,6 +714,7 @@
   (operation nonce-test
     (contracted (a-0 a) (b-0 b) (n-a-0 n-a) (ch3-0 ch3)) k (2 1)
     (ch-msg ch2 (cat a b k)) (ch-msg ch3 (cat a b k n-a n-b)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -701,6 +725,9 @@
   (label 24)
   (parent 20)
   (seen 19)
+  (seen-ops
+    (19 (operation generalization weakened ((1 2) (2 1)))
+      (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -788,6 +815,7 @@
   (auth ch2 ch1-0)
   (operation nonce-test (displaced 3 1 serv 3) k (2 0)
     (ch-msg ch3 (cat a b k n-a-0 n-b-0)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
       (recv ch2 (cat a b k)) (recv (enc n-b k)))
@@ -847,6 +875,7 @@
   (auth ch3)
   (operation channel-test (added-strand serv 2)
     (ch-msg ch3 (cat a b k n-a n-b)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
       (send (enc n-b k)))
@@ -911,6 +940,7 @@
   (auth ch3 ch1)
   (operation channel-test (added-strand resp 2)
     (ch-msg ch1 (cat a b n-a n-b)) (1 0))
+  (strand-map 0 1)
   (traces
     ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
       (send (enc n-b k)))
@@ -933,6 +963,7 @@
   (auth ch3 ch1)
   (operation channel-test (displaced 3 1 serv 2)
     (ch-msg ch3-0 (cat a b k n-a n-b)) (0 1))
+  (strand-map 0 1 2)
   (traces
     ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
       (send (enc n-b k)))
@@ -997,6 +1028,7 @@
   (auth ch1)
   (operation channel-test (added-strand resp 2)
     (ch-msg ch1 (cat a b n-a n-b)) (0 0))
+  (strand-map 0)
   (traces
     ((recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
       (send ch2 (cat a b k)))
@@ -1080,6 +1112,7 @@
   (auth ch1)
   (operation nonce-test (displaced 2 0 serv 3) k (1 0)
     (ch-msg ch3 (cat a b k n-a n-b)))
+  (strand-map 0 1)
   (traces
     ((recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
       (send ch2 (cat a b k))) ((recv k) (send k)))
diff --git a/tst/chan-yahalom_shapes.tst b/tst/chan-yahalom_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/chan-yahalom_shapes.tst
@@ -0,0 +1,497 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Yahalom Protocol Without Forwarding" (bound 15))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/chan-yahalom.scm")
+
+(comment "Strand count bounded at 15")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b name) (n-a n-b text) (k skey) (ch3 chan))
+    (trace (send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a name) (n-a n-b text) (k skey) (ch1 ch2 chan))
+    (trace (recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k))))
+  (defrole serv
+    (vars (a b name) (n-a n-b text) (k skey) (ch1 ch2 ch3 chan))
+    (trace (recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-b n-a text) (a b name) (ch1 ch2 chan))
+  (defstrand resp 4 (k k) (n-a n-a) (n-b n-b) (b b) (a a) (ch1 ch1)
+    (ch2 ch2))
+  (uniq-orig n-b)
+  (auth ch2)
+  (traces
+    ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k))))
+  (label 0)
+  (unrealized (0 2))
+  (origs (n-b (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-b n-a n-a-0 n-b-0 text) (a b name)
+    (ch1 ch2 ch1-0 ch3 chan))
+  (defstrand resp 4 (k k) (n-a n-a) (n-b n-b) (b b) (a a) (ch1 ch1)
+    (ch2 ch2))
+  (defstrand serv 3 (k k) (n-a n-a-0) (n-b n-b-0) (a a) (b b)
+    (ch1 ch1-0) (ch2 ch2) (ch3 ch3))
+  (precedes ((1 2) (0 2)))
+  (uniq-orig k n-b)
+  (auth ch2)
+  (operation channel-test (added-strand serv 3) (ch-msg ch2 (cat a b k))
+    (0 2))
+  (traces
+    ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k)))
+    ((recv ch1-0 (cat a b n-a-0 n-b-0))
+      (send ch3 (cat a b k n-a-0 n-b-0)) (send ch2 (cat a b k))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0) ((a a) (b b) (n-b n-b) (ch1 ch1) (ch2 ch2) (n-a n-a) (k k))))
+  (origs (k (1 1)) (n-b (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b name) (n-a n-b text) (k skey) (ch3 chan))
+    (trace (send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a name) (n-a n-b text) (k skey) (ch1 ch2 chan))
+    (trace (recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k))))
+  (defrole serv
+    (vars (a b name) (n-a n-b text) (k skey) (ch1 ch2 ch3 chan))
+    (trace (recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-b n-a n-a-0 n-b-0 text) (a b name)
+    (ch1 ch2 ch1-0 ch3 chan))
+  (defstrand resp 4 (k k) (n-a n-a) (n-b n-b) (b b) (a a) (ch1 ch1)
+    (ch2 ch2))
+  (defstrand serv 3 (k k) (n-a n-a-0) (n-b n-b-0) (a a) (b b)
+    (ch1 ch1-0) (ch2 ch2) (ch3 ch3))
+  (precedes ((1 2) (0 2)))
+  (uniq-orig k n-b)
+  (conf ch2 ch3)
+  (auth ch2)
+  (traces
+    ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k)))
+    ((recv ch1-0 (cat a b n-a-0 n-b-0))
+      (send ch3 (cat a b k n-a-0 n-b-0)) (send ch2 (cat a b k))))
+  (label 2)
+  (unrealized (0 3))
+  (origs (k (1 1)) (n-b (0 1)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-a-0 n-b text) (a b name)
+    (ch1 ch2 ch1-0 ch3 chan))
+  (defstrand resp 4 (k k) (n-a n-a) (n-b n-b) (b b) (a a) (ch1 ch1)
+    (ch2 ch2))
+  (defstrand serv 3 (k k) (n-a n-a-0) (n-b n-b) (a a) (b b) (ch1 ch1-0)
+    (ch2 ch2) (ch3 ch3))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a) (b b) (ch3 ch3))
+  (precedes ((0 1) (1 0)) ((1 1) (2 1)) ((1 2) (0 2)) ((2 2) (0 3)))
+  (uniq-orig k n-b)
+  (conf ch2 ch3)
+  (auth ch2)
+  (operation nonce-test
+    (contracted (n-b-0 n-b) (a-0 a) (b-0 b) (n-a-1 n-a-0) (ch3-0 ch3)) k
+    (2 1) (ch-msg ch3 (cat a b k n-a-0 n-b)))
+  (traces
+    ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k)))
+    ((recv ch1-0 (cat a b n-a-0 n-b)) (send ch3 (cat a b k n-a-0 n-b))
+      (send ch2 (cat a b k)))
+    ((send (cat a n-a-0)) (recv ch3 (cat a b k n-a-0 n-b))
+      (send (enc n-b k))))
+  (label 5)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((k k) (n-b n-b) (n-a n-a) (n-a-0 n-a-0) (n-b-0 n-b) (a a) (b b)
+        (ch1 ch1) (ch2 ch2) (ch1-0 ch1-0) (ch3 ch3))))
+  (origs (k (1 1)) (n-b (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b name) (n-a n-b text) (k skey) (ch3 chan))
+    (trace (send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a name) (n-a n-b text) (k skey) (ch1 ch2 chan))
+    (trace (recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k))))
+  (defrole serv
+    (vars (a b name) (n-a n-b text) (k skey) (ch1 ch2 ch3 chan))
+    (trace (recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-b n-a n-a-0 n-b-0 text) (a b name)
+    (ch1 ch2 ch1-0 ch3 chan))
+  (defstrand resp 4 (k k) (n-a n-a) (n-b n-b) (b b) (a a) (ch1 ch1)
+    (ch2 ch2))
+  (defstrand serv 3 (k k) (n-a n-a-0) (n-b n-b-0) (a a) (b b)
+    (ch1 ch1-0) (ch2 ch2) (ch3 ch3))
+  (uniq-orig k n-b)
+  (conf ch2 ch3)
+  (auth ch2 ch1-0)
+  (traces
+    ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k)))
+    ((recv ch1-0 (cat a b n-a-0 n-b-0))
+      (send ch3 (cat a b k n-a-0 n-b-0)) (send ch2 (cat a b k))))
+  (label 9)
+  (unrealized (0 2) (0 3) (1 0))
+  (preskeleton)
+  (origs (k (1 1)) (n-b (0 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-b n-a text) (a b name) (ch1 ch2 ch3 chan))
+  (defstrand resp 4 (k k) (n-a n-a) (n-b n-b) (b b) (a a) (ch1 ch1)
+    (ch2 ch2))
+  (defstrand serv 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch1 ch1)
+    (ch2 ch2) (ch3 ch3))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch3 ch3))
+  (precedes ((0 1) (1 0)) ((1 1) (2 1)) ((1 2) (0 2)) ((2 2) (0 3)))
+  (uniq-orig k n-b)
+  (conf ch2 ch3)
+  (auth ch1 ch2)
+  (operation nonce-test
+    (contracted (a-0 a) (b-0 b) (n-a-0 n-a) (ch3-0 ch3)) k (2 1)
+    (ch-msg ch3 (cat a b k n-a n-b)))
+  (traces
+    ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k)))
+    ((recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k))))
+  (label 19)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((k k) (n-b n-b) (n-a n-a) (n-a-0 n-a) (n-b-0 n-b) (a a) (b b)
+        (ch1 ch1) (ch2 ch2) (ch1-0 ch1) (ch3 ch3))))
+  (origs (k (1 1)) (n-b (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b name) (n-a n-b text) (k skey) (ch3 chan))
+    (trace (send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a name) (n-a n-b text) (k skey) (ch1 ch2 chan))
+    (trace (recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k))))
+  (defrole serv
+    (vars (a b name) (n-a n-b text) (k skey) (ch1 ch2 ch3 chan))
+    (trace (recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-b n-a n-a-0 n-b-0 text) (a b name)
+    (ch1 ch2 ch1-0 ch3 chan))
+  (defstrand resp 4 (k k) (n-a n-a) (n-b n-b) (b b) (a a) (ch1 ch1)
+    (ch2 ch2))
+  (defstrand serv 3 (k k) (n-a n-a-0) (n-b n-b-0) (a a) (b b)
+    (ch1 ch1-0) (ch2 ch2) (ch3 ch3))
+  (deflistener k)
+  (uniq-orig k n-b)
+  (conf ch2 ch3)
+  (auth ch2 ch1-0)
+  (traces
+    ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k)))
+    ((recv ch1-0 (cat a b n-a-0 n-b-0))
+      (send ch3 (cat a b k n-a-0 n-b-0)) (send ch2 (cat a b k)))
+    ((recv k) (send k)))
+  (label 25)
+  (unrealized (0 2) (0 3) (1 0) (2 0))
+  (preskeleton)
+  (origs (k (1 1)) (n-b (0 1)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b name) (n-a n-b text) (k skey) (ch3 chan))
+    (trace (send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a name) (n-a n-b text) (k skey) (ch1 ch2 chan))
+    (trace (recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k))))
+  (defrole serv
+    (vars (a b name) (n-a n-b text) (k skey) (ch1 ch2 ch3 chan))
+    (trace (recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b name) (ch3 chan))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch3 ch3))
+  (uniq-orig n-a)
+  (auth ch3)
+  (traces
+    ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k))))
+  (label 28)
+  (unrealized (0 1))
+  (origs (n-a (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b name) (ch3 ch1 chan))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch3 ch3))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch1 ch1)
+    (ch3 ch3))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-orig k n-a)
+  (auth ch3)
+  (operation channel-test (added-strand serv 2)
+    (ch-msg ch3 (cat a b k n-a n-b)) (0 1))
+  (traces
+    ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k)))
+    ((recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))))
+  (label 29)
+  (parent 28)
+  (realized)
+  (shape)
+  (maps ((0) ((n-a n-a) (ch3 ch3) (a a) (b b) (n-b n-b) (k k))))
+  (origs (k (1 1)) (n-a (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b name) (n-a n-b text) (k skey) (ch3 chan))
+    (trace (send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a name) (n-a n-b text) (k skey) (ch1 ch2 chan))
+    (trace (recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k))))
+  (defrole serv
+    (vars (a b name) (n-a n-b text) (k skey) (ch1 ch2 ch3 chan))
+    (trace (recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b name) (ch3 ch3-0 ch1 chan))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch3 ch3))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch1 ch1)
+    (ch3 ch3-0))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-orig k n-a)
+  (conf ch3-0)
+  (auth ch3 ch1)
+  (traces
+    ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k)))
+    ((recv ch1 (cat a b n-a n-b)) (send ch3-0 (cat a b k n-a n-b))))
+  (label 30)
+  (unrealized (0 1) (1 0))
+  (origs (k (1 1)) (n-a (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b name) (ch3 ch1 chan))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch3 ch3))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch1 ch1)
+    (ch3 ch3))
+  (defstrand resp 2 (n-a n-a) (n-b n-b) (b b) (a a) (ch1 ch1))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (uniq-orig k n-a)
+  (conf ch3)
+  (auth ch3 ch1)
+  (operation channel-test (displaced 3 1 serv 2)
+    (ch-msg ch3-0 (cat a b k n-a n-b)) (0 1))
+  (traces
+    ((send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k)))
+    ((recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b)))
+    ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))))
+  (label 32)
+  (parent 30)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch3 ch3) (ch3-0 ch3)
+        (ch1 ch1))))
+  (origs (k (1 1)) (n-a (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b name) (n-a n-b text) (k skey) (ch3 chan))
+    (trace (send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a name) (n-a n-b text) (k skey) (ch1 ch2 chan))
+    (trace (recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k))))
+  (defrole serv
+    (vars (a b name) (n-a n-b text) (k skey) (ch1 ch2 ch3 chan))
+    (trace (recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b name) (ch1 ch2 ch3 chan))
+  (defstrand serv 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch1 ch1)
+    (ch2 ch2) (ch3 ch3))
+  (uniq-orig k)
+  (conf ch2 ch3)
+  (auth ch1)
+  (traces
+    ((recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k))))
+  (label 33)
+  (unrealized (0 0))
+  (origs (k (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b name) (ch1 ch2 ch3 chan))
+  (defstrand serv 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch1 ch1)
+    (ch2 ch2) (ch3 ch3))
+  (defstrand resp 2 (n-a n-a) (n-b n-b) (b b) (a a) (ch1 ch1))
+  (precedes ((1 1) (0 0)))
+  (uniq-orig k)
+  (conf ch2 ch3)
+  (auth ch1)
+  (operation channel-test (added-strand resp 2)
+    (ch-msg ch1 (cat a b n-a n-b)) (0 0))
+  (traces
+    ((recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    ((recv (cat a n-a)) (send ch1 (cat a b n-a n-b))))
+  (label 34)
+  (parent 33)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((ch1 ch1) (ch2 ch2) (ch3 ch3) (a a) (b b) (n-a n-a) (n-b n-b)
+        (k k))))
+  (origs (k (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b name) (n-a n-b text) (k skey) (ch3 chan))
+    (trace (send (cat a n-a)) (recv ch3 (cat a b k n-a n-b))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a name) (n-a n-b text) (k skey) (ch1 ch2 chan))
+    (trace (recv (cat a n-a)) (send ch1 (cat a b n-a n-b))
+      (recv ch2 (cat a b k)) (recv (enc n-b k))))
+  (defrole serv
+    (vars (a b name) (n-a n-b text) (k skey) (ch1 ch2 ch3 chan))
+    (trace (recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k)))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b name) (ch1 ch2 ch3 chan))
+  (defstrand serv 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (ch1 ch1)
+    (ch2 ch2) (ch3 ch3))
+  (deflistener k)
+  (uniq-orig k)
+  (conf ch2 ch3)
+  (auth ch1)
+  (traces
+    ((recv ch1 (cat a b n-a n-b)) (send ch3 (cat a b k n-a n-b))
+      (send ch2 (cat a b k))) ((recv k) (send k)))
+  (label 35)
+  (unrealized (0 0) (1 0))
+  (preskeleton)
+  (origs (k (0 1)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
diff --git a/tst/checktst b/tst/checktst
deleted file mode 100644
--- a/tst/checktst
+++ /dev/null
@@ -1,10 +0,0 @@
-#! /bin/sh
-
-for f in *.tst
-do
-  b=`basename $f .tst`
-  if test ! -f $b.scm -a ! -f $b.lsp
-  then
-    echo $f
-  fi
-done
diff --git a/tst/commitment.tst b/tst/commitment.tst
--- a/tst/commitment.tst
+++ b/tst/commitment.tst
@@ -1,6 +1,6 @@
 (herald commitment)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/commitment.scm")
 
 (defprotocol commit basic
@@ -74,6 +74,7 @@
   (non-orig (privk "sig" a))
   (operation encryption-test (added-strand bidder 1)
     (enc "bid" (hash a b n quote) (privk "sig" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (enc "bid" (hash a b n quote) (privk "sig" a)))
       (send (enc "receipt" (hash a b n quote) (privk "sig" b)))
@@ -143,6 +144,7 @@
   (non-orig (privk "sig" a))
   (operation encryption-test (added-strand bidder 1)
     (enc "bid" (hash a b-0 n quote) (privk "sig" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (enc "bid" (hash a b-0 n quote) (privk "sig" a)))
       (send (enc "receipt" (hash a b-0 n quote) (privk "sig" b))))
@@ -162,6 +164,7 @@
   (non-orig (privk "sig" a))
   (operation encryption-test (added-strand bid-trash 1)
     (enc "bid" (hash n trash) (privk "sig" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (enc "bid" (hash n trash) (privk "sig" a)))
       (send (enc "receipt" (hash n trash) (privk "sig" b))))
@@ -223,6 +226,7 @@
   (unrealized (0 0) (0 2))
   (preskeleton)
   (origs)
+  (ugens (n (1 0)))
   (comment "Not a skeleton"))
 
 (defskeleton commit
@@ -243,6 +247,7 @@
   (parent 6)
   (unrealized (0 2))
   (origs)
+  (ugens (n (1 0)))
   (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton commit
@@ -254,6 +259,7 @@
   (non-orig (privk "sig" a))
   (uniq-gen n)
   (operation nonce-test (displaced 1 2 bidder 3) n (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc "bid" (hash a b n quote) (privk "sig" a)))
       (send (enc "receipt" (hash a b n quote) (privk "sig" b)))
@@ -267,6 +273,7 @@
   (realized)
   (shape)
   (maps ((0 1) ((n n) (quote quote) (outcome outcome) (a a) (b b))))
-  (origs))
+  (origs)
+  (ugens (n (1 0))))
 
 (comment "Nothing left to do")
diff --git a/tst/commitment_shapes.tst b/tst/commitment_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/commitment_shapes.tst
@@ -0,0 +1,236 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald commitment)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/commitment.scm")
+
+(defprotocol commit basic
+  (defrole bidder
+    (vars (a b name) (n data) (quote outcome text))
+    (trace (send (enc "bid" (hash a b n quote) (privk "sig" a)))
+      (recv (enc "receipt" (hash a b n quote) (privk "sig" b)))
+      (send (cat n quote))
+      (recv (enc "result" a b n quote outcome (privk "sig" b)))))
+  (defrole bid-trash
+    (vars (a b name) (n data) (trash text))
+    (trace (send (enc "bid" (hash n trash) (privk "sig" a)))
+      (recv (enc "receipt" (hash n trash) (privk "sig" b)))))
+  (defrole auctioneer
+    (vars (a b name) (n data) (quote outcome text) (sealed mesg))
+    (trace (recv (enc "bid" sealed (privk "sig" a)))
+      (send (enc "receipt" sealed (privk "sig" b))) (recv (cat n quote))
+      (send (enc "result" a b n quote outcome (privk "sig" b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule assume-auctioneer-3
+    (forall ((z strd) (quote text) (n data) (b a name) (sealed mesg))
+      (implies
+        (and (p "auctioneer" z 3) (p "auctioneer" "quote" z quote)
+          (p "auctioneer" "n" z n) (p "auctioneer" "b" z b)
+          (p "auctioneer" "a" z a) (p "auctioneer" "sealed" z sealed))
+        (= sealed (hash a b n quote))))))
+
+(defskeleton commit
+  (vars (sealed mesg) (n data) (quote outcome text) (a b name))
+  (defstrand auctioneer 4 (sealed sealed) (n n) (quote quote)
+    (outcome outcome) (a a) (b b))
+  (non-orig (privk "sig" a))
+  (traces
+    ((recv (enc "bid" sealed (privk "sig" a)))
+      (send (enc "receipt" sealed (privk "sig" b))) (recv (cat n quote))
+      (send (enc "result" a b n quote outcome (privk "sig" b)))))
+  (label 0)
+  (unrealized (0 0))
+  (origs)
+  (comment "Not closed under rules"))
+
+(defskeleton commit
+  (vars (n data) (quote outcome text) (a b name))
+  (defstrand auctioneer 4 (sealed (hash a b n quote)) (n n)
+    (quote quote) (outcome outcome) (a a) (b b))
+  (defstrand bidder 1 (n n) (quote quote) (a a) (b b))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk "sig" a))
+  (operation encryption-test (added-strand bidder 1)
+    (enc "bid" (hash a b n quote) (privk "sig" a)) (0 0))
+  (traces
+    ((recv (enc "bid" (hash a b n quote) (privk "sig" a)))
+      (send (enc "receipt" (hash a b n quote) (privk "sig" b)))
+      (recv (cat n quote))
+      (send (enc "result" a b n quote outcome (privk "sig" b))))
+    ((send (enc "bid" (hash a b n quote) (privk "sig" a)))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (n n) (quote quote) (outcome outcome)
+        (sealed (hash a b n quote)))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol commit basic
+  (defrole bidder
+    (vars (a b name) (n data) (quote outcome text))
+    (trace (send (enc "bid" (hash a b n quote) (privk "sig" a)))
+      (recv (enc "receipt" (hash a b n quote) (privk "sig" b)))
+      (send (cat n quote))
+      (recv (enc "result" a b n quote outcome (privk "sig" b)))))
+  (defrole bid-trash
+    (vars (a b name) (n data) (trash text))
+    (trace (send (enc "bid" (hash n trash) (privk "sig" a)))
+      (recv (enc "receipt" (hash n trash) (privk "sig" b)))))
+  (defrole auctioneer
+    (vars (a b name) (n data) (quote outcome text) (sealed mesg))
+    (trace (recv (enc "bid" sealed (privk "sig" a)))
+      (send (enc "receipt" sealed (privk "sig" b))) (recv (cat n quote))
+      (send (enc "result" a b n quote outcome (privk "sig" b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule assume-auctioneer-3
+    (forall ((z strd) (quote text) (n data) (b a name) (sealed mesg))
+      (implies
+        (and (p "auctioneer" z 3) (p "auctioneer" "quote" z quote)
+          (p "auctioneer" "n" z n) (p "auctioneer" "b" z b)
+          (p "auctioneer" "a" z a) (p "auctioneer" "sealed" z sealed))
+        (= sealed (hash a b n quote))))))
+
+(defskeleton commit
+  (vars (sealed mesg) (a b name))
+  (defstrand auctioneer 2 (sealed sealed) (a a) (b b))
+  (non-orig (privk "sig" a))
+  (traces
+    ((recv (enc "bid" sealed (privk "sig" a)))
+      (send (enc "receipt" sealed (privk "sig" b)))))
+  (label 3)
+  (unrealized (0 0))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton commit
+  (vars (n data) (quote text) (a b b-0 name))
+  (defstrand auctioneer 2 (sealed (hash a b-0 n quote)) (a a) (b b))
+  (defstrand bidder 1 (n n) (quote quote) (a a) (b b-0))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk "sig" a))
+  (operation encryption-test (added-strand bidder 1)
+    (enc "bid" (hash a b-0 n quote) (privk "sig" a)) (0 0))
+  (traces
+    ((recv (enc "bid" (hash a b-0 n quote) (privk "sig" a)))
+      (send (enc "receipt" (hash a b-0 n quote) (privk "sig" b))))
+    ((send (enc "bid" (hash a b-0 n quote) (privk "sig" a)))))
+  (label 4)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (sealed (hash a b-0 n quote)))))
+  (origs))
+
+(defskeleton commit
+  (vars (n data) (trash text) (a b name))
+  (defstrand auctioneer 2 (sealed (hash n trash)) (a a) (b b))
+  (defstrand bid-trash 1 (n n) (trash trash) (a a))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk "sig" a))
+  (operation encryption-test (added-strand bid-trash 1)
+    (enc "bid" (hash n trash) (privk "sig" a)) (0 0))
+  (traces
+    ((recv (enc "bid" (hash n trash) (privk "sig" a)))
+      (send (enc "receipt" (hash n trash) (privk "sig" b))))
+    ((send (enc "bid" (hash n trash) (privk "sig" a)))))
+  (label 5)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (sealed (hash n trash)))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol commit basic
+  (defrole bidder
+    (vars (a b name) (n data) (quote outcome text))
+    (trace (send (enc "bid" (hash a b n quote) (privk "sig" a)))
+      (recv (enc "receipt" (hash a b n quote) (privk "sig" b)))
+      (send (cat n quote))
+      (recv (enc "result" a b n quote outcome (privk "sig" b)))))
+  (defrole bid-trash
+    (vars (a b name) (n data) (trash text))
+    (trace (send (enc "bid" (hash n trash) (privk "sig" a)))
+      (recv (enc "receipt" (hash n trash) (privk "sig" b)))))
+  (defrole auctioneer
+    (vars (a b name) (n data) (quote outcome text) (sealed mesg))
+    (trace (recv (enc "bid" sealed (privk "sig" a)))
+      (send (enc "receipt" sealed (privk "sig" b))) (recv (cat n quote))
+      (send (enc "result" a b n quote outcome (privk "sig" b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule assume-auctioneer-3
+    (forall ((z strd) (quote text) (n data) (b a name) (sealed mesg))
+      (implies
+        (and (p "auctioneer" z 3) (p "auctioneer" "quote" z quote)
+          (p "auctioneer" "n" z n) (p "auctioneer" "b" z b)
+          (p "auctioneer" "a" z a) (p "auctioneer" "sealed" z sealed))
+        (= sealed (hash a b n quote))))))
+
+(defskeleton commit
+  (vars (n data) (quote outcome text) (a b name))
+  (defstrand auctioneer 4 (sealed (hash a b n quote)) (n n)
+    (quote quote) (outcome outcome) (a a) (b b))
+  (defstrand bidder 1 (n n) (quote quote) (a a) (b b))
+  (non-orig (privk "sig" a))
+  (uniq-gen n)
+  (traces
+    ((recv (enc "bid" (hash a b n quote) (privk "sig" a)))
+      (send (enc "receipt" (hash a b n quote) (privk "sig" b)))
+      (recv (cat n quote))
+      (send (enc "result" a b n quote outcome (privk "sig" b))))
+    ((send (enc "bid" (hash a b n quote) (privk "sig" a)))))
+  (label 6)
+  (unrealized (0 0) (0 2))
+  (preskeleton)
+  (origs)
+  (comment "Not a skeleton"))
+
+(defskeleton commit
+  (vars (n data) (outcome quote text) (a b name))
+  (defstrand auctioneer 4 (sealed (hash a b n quote)) (n n)
+    (quote quote) (outcome outcome) (a a) (b b))
+  (defstrand bidder 3 (n n) (quote quote) (a a) (b b))
+  (precedes ((1 0) (0 0)) ((1 2) (0 2)))
+  (non-orig (privk "sig" a))
+  (uniq-gen n)
+  (operation nonce-test (displaced 1 2 bidder 3) n (0 2))
+  (traces
+    ((recv (enc "bid" (hash a b n quote) (privk "sig" a)))
+      (send (enc "receipt" (hash a b n quote) (privk "sig" b)))
+      (recv (cat n quote))
+      (send (enc "result" a b n quote outcome (privk "sig" b))))
+    ((send (enc "bid" (hash a b n quote) (privk "sig" a)))
+      (recv (enc "receipt" (hash a b n quote) (privk "sig" b)))
+      (send (cat n quote))))
+  (label 8)
+  (parent 6)
+  (realized)
+  (shape)
+  (maps ((0 1) ((n n) (quote quote) (outcome outcome) (a a) (b b))))
+  (origs))
+
+(comment "Nothing left to do")
diff --git a/tst/comp_test.tst b/tst/comp_test.tst
--- a/tst/comp_test.tst
+++ b/tst/comp_test.tst
@@ -1,6 +1,6 @@
 (herald "Main Example")
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/comp_test.scm")
 
 (defprotocol main-ex-src basic
@@ -66,6 +66,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand an 2) (enc "sorry" a b k)
     (0 1))
+  (strand-map 0)
   (traces
     ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
       (recv (enc "sorry" a b k)))
@@ -85,6 +86,7 @@
   (uniq-orig k)
   (operation encryption-test (added-listener k) (enc "sorry" a b k)
     (0 1))
+  (strand-map 0)
   (traces
     ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
       (recv (enc "sorry" a b k))) ((recv k) (send k)))
@@ -103,6 +105,7 @@
   (uniq-orig k)
   (operation encryption-test (displaced 2 0 qy 1)
     (enc k b c-0 i-0 (invk a)) (1 0))
+  (strand-map 0 1)
   (traces
     ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
       (recv (enc "sorry" a b k)))
@@ -167,6 +170,7 @@
   (non-orig (invk a) (invk b) (invk c))
   (uniq-orig k d)
   (operation encryption-test (added-strand ay 2) (enc "data" d k) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
       (recv (enc "data" d k)))
@@ -185,6 +189,7 @@
   (non-orig (invk a) (invk b) (invk c))
   (uniq-orig k)
   (operation encryption-test (added-listener k) (enc "data" d k) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
       (recv (enc "data" d k))) ((recv k) (send k)))
@@ -203,6 +208,7 @@
   (uniq-orig k d)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (c-0 c) (i-0 i)) k
     (1 0) (enc (enc k b c i (invk a)) b))
+  (strand-map 0 1)
   (traces
     ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
       (recv (enc "data" d k)))
@@ -275,6 +281,7 @@
   (uniq-orig k y n)
   (operation encryption-test (added-strand an 4) (enc "sorry" a b k)
     (0 1))
+  (strand-map 0)
   (traces
     ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
       (recv (enc "sorry" a b k)))
@@ -294,6 +301,7 @@
   (uniq-orig k)
   (operation encryption-test (added-listener k) (enc "sorry" a b k)
     (0 1))
+  (strand-map 0)
   (traces
     ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
       (recv (enc "sorry" a b k))) ((recv k) (send k)))
@@ -312,6 +320,7 @@
   (uniq-orig k y n)
   (operation encryption-test (displaced 2 0 qy 1)
     (enc k b c-0 i-0 (invk a)) (1 0))
+  (strand-map 0 1)
   (traces
     ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
       (recv (enc "sorry" a b k)))
@@ -333,6 +342,7 @@
   (uniq-orig k y n)
   (operation nonce-test (added-strand sn 2) n (1 2)
     (enc y n i a (enc a b-0 i ssn-0 c) c))
+  (strand-map 0 1)
   (traces
     ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
       (recv (enc "sorry" a b k)))
@@ -409,6 +419,7 @@
   (non-orig (invk a) (invk b) (invk c))
   (uniq-orig k d y n)
   (operation encryption-test (added-strand ay 4) (enc "data" d k) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
       (recv (enc "data" d k)))
@@ -427,6 +438,7 @@
   (non-orig (invk a) (invk b) (invk c))
   (uniq-orig k)
   (operation encryption-test (added-listener k) (enc "data" d k) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
       (recv (enc "data" d k))) ((recv k) (send k)))
@@ -445,6 +457,7 @@
   (uniq-orig k d y n)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (c-0 c) (i-0 i)) k
     (1 0) (enc (enc k b c i (invk a)) b))
+  (strand-map 0 1)
   (traces
     ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
       (recv (enc "data" d k)))
@@ -463,6 +476,7 @@
   (non-orig (invk a) (invk b) (invk c))
   (uniq-orig k d n)
   (operation nonce-test (displaced 2 1 ay 2) y (1 2) (enc y n i a x c))
+  (strand-map 0 1)
   (traces
     ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
       (recv (enc "data" d k)))
@@ -484,6 +498,7 @@
   (uniq-orig k d y n)
   (operation nonce-test (added-strand sy 2) y (1 2)
     (enc y n i a (enc a b-0 i ssn-0 c) c))
+  (strand-map 0 1)
   (traces
     ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
       (recv (enc "data" d k)))
@@ -510,6 +525,7 @@
   (uniq-orig k d n)
   (operation nonce-test (added-strand sy 2) n (1 2)
     (enc n n i a (enc a b-0 i ssn-0 c) c))
+  (strand-map 0 1)
   (traces
     ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
       (recv (enc "data" d k)))
@@ -521,6 +537,8 @@
   (label 19)
   (parent 17)
   (seen 18)
+  (seen-ops
+    (18 (operation generalization separated n-0) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -617,6 +635,7 @@
   (uniq-orig k y n)
   (operation nonce-test (added-strand sn 2) n (1 2)
     (enc y n i a (enc a b-0 i ssn-0 c) c))
+  (strand-map 0 1)
   (traces
     ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
       (recv (enc "sorry" a b k)))
diff --git a/tst/comp_test_shapes.tst b/tst/comp_test_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/comp_test_shapes.tst
@@ -0,0 +1,392 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Main Example")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/comp_test.scm")
+
+(defprotocol main-ex-src basic
+  (defrole qn
+    (vars (a b c akey) (i ssn text) (k skey))
+    (trace
+      (send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "sorry" a b k)))
+    (uniq-orig k))
+  (defrole qy
+    (vars (a b c akey) (i ssn d text) (k skey))
+    (trace
+      (send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "data" d k)))
+    (uniq-orig k))
+  (defrole an
+    (vars (a b c akey) (i text) (k skey) (x mesg))
+    (trace (recv (cat i a (enc (enc k b c i (invk a)) b) x))
+      (send (enc "sorry" a b k))))
+  (defrole ay
+    (vars (a b c akey) (i d text) (k skey) (x mesg))
+    (trace (recv (cat i a (enc (enc k b c i (invk a)) b) x))
+      (send (enc "data" d k)))
+    (uniq-orig d))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton main-ex-src
+  (vars (k skey) (i ssn text) (a b c akey))
+  (defstrand qn 2 (k k) (i i) (ssn ssn) (a a) (b b) (c c))
+  (non-orig (invk a) (invk b) (invk c))
+  (uniq-orig k)
+  (comment
+    (defgoal main-ex-src
+      (forall ((i ssn text) (k skey) (a b c akey) (z strd))
+        (implies
+          (and (p "qn" z 2) (p "qn" "i" z i) (p "qn" "ssn" z ssn)
+            (p "qn" "k" z k) (p "qn" "a" z a) (p "qn" "b" z b)
+            (p "qn" "c" z c) (non (invk a)) (non (invk b))
+            (non (invk c)) (uniq-at k z 0))
+          (exists ((x mesg) (z-0 strd))
+            (and (p "an" z-0 2) (p "an" "x" z-0 x) (p "an" "i" z-0 i)
+              (p "an" "k" z-0 k) (p "an" "a" z-0 a) (p "an" "b" z-0 b)
+              (p "an" "c" z-0 c) (prec z 0 z-0 0) (prec z-0 1 z 1)))))))
+  (traces
+    ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "sorry" a b k))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (k (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton main-ex-src
+  (vars (x mesg) (k skey) (i ssn text) (a b c akey))
+  (defstrand qn 2 (k k) (i i) (ssn ssn) (a a) (b b) (c c))
+  (defstrand an 2 (x x) (k k) (i i) (a a) (b b) (c c))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk a) (invk b) (invk c))
+  (uniq-orig k)
+  (operation encryption-test (displaced 2 0 qy 1)
+    (enc k b c-0 i-0 (invk a)) (1 0))
+  (traces
+    ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "sorry" a b k)))
+    ((recv (cat i a (enc (enc k b c i (invk a)) b) x))
+      (send (enc "sorry" a b k))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (c c) (i i) (ssn ssn) (k k))))
+  (origs (k (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol main-ex-src basic
+  (defrole qn
+    (vars (a b c akey) (i ssn text) (k skey))
+    (trace
+      (send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "sorry" a b k)))
+    (uniq-orig k))
+  (defrole qy
+    (vars (a b c akey) (i ssn d text) (k skey))
+    (trace
+      (send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "data" d k)))
+    (uniq-orig k))
+  (defrole an
+    (vars (a b c akey) (i text) (k skey) (x mesg))
+    (trace (recv (cat i a (enc (enc k b c i (invk a)) b) x))
+      (send (enc "sorry" a b k))))
+  (defrole ay
+    (vars (a b c akey) (i d text) (k skey) (x mesg))
+    (trace (recv (cat i a (enc (enc k b c i (invk a)) b) x))
+      (send (enc "data" d k)))
+    (uniq-orig d))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton main-ex-src
+  (vars (k skey) (i ssn d text) (a b c akey))
+  (defstrand qy 2 (k k) (i i) (ssn ssn) (d d) (a a) (b b) (c c))
+  (non-orig (invk a) (invk b) (invk c))
+  (uniq-orig k)
+  (traces
+    ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "data" d k))))
+  (label 4)
+  (unrealized (0 1))
+  (origs (k (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton main-ex-src
+  (vars (x mesg) (k skey) (i ssn d text) (a b c akey))
+  (defstrand qy 2 (k k) (i i) (ssn ssn) (d d) (a a) (b b) (c c))
+  (defstrand ay 2 (x x) (k k) (i i) (d d) (a a) (b b) (c c))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk a) (invk b) (invk c))
+  (uniq-orig k d)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (c-0 c) (i-0 i)) k
+    (1 0) (enc (enc k b c i (invk a)) b))
+  (traces
+    ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "data" d k)))
+    ((recv (cat i a (enc (enc k b c i (invk a)) b) x))
+      (send (enc "data" d k))))
+  (label 7)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (c c) (i i) (ssn ssn) (d d) (k k))))
+  (origs (d (1 1)) (k (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol main-ex-tgt basic
+  (defrole qn
+    (vars (a b c akey) (i ssn text) (k skey))
+    (trace
+      (send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "sorry" a b k)))
+    (uniq-orig k))
+  (defrole qy
+    (vars (a b c akey) (i ssn d text) (k skey))
+    (trace
+      (send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "data" d k)))
+    (uniq-orig k))
+  (defrole an
+    (vars (a b c akey) (i y n text) (k skey) (x mesg))
+    (trace (recv (cat i a (enc (enc k b c i (invk a)) b) x))
+      (send (enc y n i a x c)) (recv n) (send (enc "sorry" a b k)))
+    (uniq-orig y n))
+  (defrole ay
+    (vars (a b c akey) (i y n d text) (k skey) (x mesg))
+    (trace (recv (cat i a (enc (enc k b c i (invk a)) b) x))
+      (send (enc y n i a x c)) (recv y) (send (enc "data" d k)))
+    (uniq-orig y n d))
+  (defrole sn
+    (vars (a b c akey) (i ssn y n text))
+    (trace (recv (enc y n i a (enc a b i ssn c) c)) (send n)))
+  (defrole sy
+    (vars (a b c akey) (i ssn y n text))
+    (trace (recv (enc y n i a (enc a b i ssn c) c)) (send y)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton main-ex-tgt
+  (vars (k skey) (i ssn text) (a b c akey))
+  (defstrand qn 2 (k k) (i i) (ssn ssn) (a a) (b b) (c c))
+  (non-orig (invk a) (invk b) (invk c))
+  (uniq-orig k)
+  (traces
+    ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "sorry" a b k))))
+  (label 8)
+  (unrealized (0 1))
+  (origs (k (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton main-ex-tgt
+  (vars (k skey) (i ssn y n ssn-0 text) (a b c b-0 akey))
+  (defstrand qn 2 (k k) (i i) (ssn ssn) (a a) (b b) (c c))
+  (defstrand an 4 (x (enc a b-0 i ssn-0 c)) (k k) (i i) (y y) (n n)
+    (a a) (b b) (c c))
+  (defstrand sn 2 (i i) (ssn ssn-0) (y y) (n n) (a a) (b b-0) (c c))
+  (precedes ((0 0) (1 0)) ((1 1) (2 0)) ((1 3) (0 1)) ((2 1) (1 2)))
+  (non-orig (invk a) (invk b) (invk c))
+  (uniq-orig k y n)
+  (operation nonce-test (added-strand sn 2) n (1 2)
+    (enc y n i a (enc a b-0 i ssn-0 c) c))
+  (traces
+    ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "sorry" a b k)))
+    ((recv
+       (cat i a (enc (enc k b c i (invk a)) b) (enc a b-0 i ssn-0 c)))
+      (send (enc y n i a (enc a b-0 i ssn-0 c) c)) (recv n)
+      (send (enc "sorry" a b k)))
+    ((recv (enc y n i a (enc a b-0 i ssn-0 c) c)) (send n)))
+  (label 12)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (c c) (i i) (ssn ssn) (k k))))
+  (origs (k (0 0)) (y (1 1)) (n (1 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol main-ex-tgt basic
+  (defrole qn
+    (vars (a b c akey) (i ssn text) (k skey))
+    (trace
+      (send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "sorry" a b k)))
+    (uniq-orig k))
+  (defrole qy
+    (vars (a b c akey) (i ssn d text) (k skey))
+    (trace
+      (send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "data" d k)))
+    (uniq-orig k))
+  (defrole an
+    (vars (a b c akey) (i y n text) (k skey) (x mesg))
+    (trace (recv (cat i a (enc (enc k b c i (invk a)) b) x))
+      (send (enc y n i a x c)) (recv n) (send (enc "sorry" a b k)))
+    (uniq-orig y n))
+  (defrole ay
+    (vars (a b c akey) (i y n d text) (k skey) (x mesg))
+    (trace (recv (cat i a (enc (enc k b c i (invk a)) b) x))
+      (send (enc y n i a x c)) (recv y) (send (enc "data" d k)))
+    (uniq-orig y n d))
+  (defrole sn
+    (vars (a b c akey) (i ssn y n text))
+    (trace (recv (enc y n i a (enc a b i ssn c) c)) (send n)))
+  (defrole sy
+    (vars (a b c akey) (i ssn y n text))
+    (trace (recv (enc y n i a (enc a b i ssn c) c)) (send y)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton main-ex-tgt
+  (vars (k skey) (i ssn d text) (a b c akey))
+  (defstrand qy 2 (k k) (i i) (ssn ssn) (d d) (a a) (b b) (c c))
+  (non-orig (invk a) (invk b) (invk c))
+  (uniq-orig k)
+  (traces
+    ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "data" d k))))
+  (label 13)
+  (unrealized (0 1))
+  (origs (k (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton main-ex-tgt
+  (vars (k skey) (i ssn d y n ssn-0 text) (a b c b-0 akey))
+  (defstrand qy 2 (k k) (i i) (ssn ssn) (d d) (a a) (b b) (c c))
+  (defstrand ay 4 (x (enc a b-0 i ssn-0 c)) (k k) (i i) (y y) (n n)
+    (d d) (a a) (b b) (c c))
+  (defstrand sy 2 (i i) (ssn ssn-0) (y y) (n n) (a a) (b b-0) (c c))
+  (precedes ((0 0) (1 0)) ((1 1) (2 0)) ((1 3) (0 1)) ((2 1) (1 2)))
+  (non-orig (invk a) (invk b) (invk c))
+  (uniq-orig k d y n)
+  (operation nonce-test (added-strand sy 2) y (1 2)
+    (enc y n i a (enc a b-0 i ssn-0 c) c))
+  (traces
+    ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "data" d k)))
+    ((recv
+       (cat i a (enc (enc k b c i (invk a)) b) (enc a b-0 i ssn-0 c)))
+      (send (enc y n i a (enc a b-0 i ssn-0 c) c)) (recv y)
+      (send (enc "data" d k)))
+    ((recv (enc y n i a (enc a b-0 i ssn-0 c) c)) (send y)))
+  (label 18)
+  (parent 13)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (c c) (i i) (ssn ssn) (d d) (k k))))
+  (origs (d (1 3)) (y (1 1)) (n (1 1)) (k (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol main-ex-tgt-rule basic
+  (defrole qn
+    (vars (a b c akey) (i ssn text) (k skey))
+    (trace
+      (send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "sorry" a b k)))
+    (uniq-orig k))
+  (defrole qy
+    (vars (a b c akey) (i ssn d text) (k skey))
+    (trace
+      (send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "data" d k)))
+    (uniq-orig k))
+  (defrole an
+    (vars (a b c akey) (i y n text) (k skey) (x mesg))
+    (trace (recv (cat i a (enc (enc k b c i (invk a)) b) x))
+      (send (enc y n i a x c)) (recv n) (send (enc "sorry" a b k)))
+    (uniq-orig y n))
+  (defrole ay
+    (vars (a b c akey) (i y n d text) (k skey) (x mesg))
+    (trace (recv (cat i a (enc (enc k b c i (invk a)) b) x))
+      (send (enc y n i a x c)) (recv y) (send (enc "data" d k)))
+    (uniq-orig y n d))
+  (defrole sn
+    (vars (a b c akey) (i ssn y n text))
+    (trace (recv (enc y n i a (enc a b i ssn c) c)) (send n)))
+  (defrole sy
+    (vars (a b c akey) (i ssn y n text))
+    (trace (recv (enc y n i a (enc a b i ssn c) c)) (send y)))
+  (defrule src
+    (forall ((z strd) (i ssn text) (k skey) (a b c akey))
+      (implies
+        (and (p "qn" z 2) (p "qn" "i" z i) (p "qn" "ssn" z ssn)
+          (p "qn" "k" z k) (p "qn" "a" z a) (p "qn" "b" z b)
+          (p "qn" "c" z c) (non (invk a)) (non (invk b)) (non (invk c))
+          (uniq k))
+        (exists ((z-0 strd) (x mesg))
+          (and (p "an" z-0 4) (p "an" "x" z-0 x) (p "an" "i" z-0 i)
+            (p "an" "k" z-0 k) (p "an" "a" z-0 a) (p "an" "b" z-0 b)
+            (p "an" "c" z-0 c) (prec z 0 z-0 0) (prec z-0 3 z 1))))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton main-ex-tgt-rule
+  (vars (k skey) (i ssn text) (a b c akey))
+  (defstrand qn 2 (k k) (i i) (ssn ssn) (a a) (b b) (c c))
+  (non-orig (invk a) (invk b) (invk c))
+  (uniq-orig k)
+  (traces
+    ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "sorry" a b k))))
+  (label 20)
+  (unrealized (0 1))
+  (origs (k (0 0)))
+  (comment "Not closed under rules"))
+
+(defskeleton main-ex-tgt-rule
+  (vars (k skey) (ssn i y n ssn-0 text) (a b c b-0 akey))
+  (defstrand qn 2 (k k) (i i) (ssn ssn) (a a) (b b) (c c))
+  (defstrand an 4 (x (enc a b-0 i ssn-0 c)) (k k) (i i) (y y) (n n)
+    (a a) (b b) (c c))
+  (defstrand sn 2 (i i) (ssn ssn-0) (y y) (n n) (a a) (b b-0) (c c))
+  (precedes ((0 0) (1 0)) ((1 1) (2 0)) ((1 3) (0 1)) ((2 1) (1 2)))
+  (non-orig (invk a) (invk b) (invk c))
+  (uniq-orig k y n)
+  (operation nonce-test (added-strand sn 2) n (1 2)
+    (enc y n i a (enc a b-0 i ssn-0 c) c))
+  (traces
+    ((send (cat i a (enc (enc k b c i (invk a)) b) (enc a b i ssn c)))
+      (recv (enc "sorry" a b k)))
+    ((recv
+       (cat i a (enc (enc k b c i (invk a)) b) (enc a b-0 i ssn-0 c)))
+      (send (enc y n i a (enc a b-0 i ssn-0 c) c)) (recv n)
+      (send (enc "sorry" a b k)))
+    ((recv (enc y n i a (enc a b-0 i ssn-0 c) c)) (send n)))
+  (label 22)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (c c) (i i) (ssn ssn) (k k))))
+  (origs (y (1 1)) (n (1 1)) (k (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/completeness-test.tst b/tst/completeness-test.tst
--- a/tst/completeness-test.tst
+++ b/tst/completeness-test.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/completeness-test.scm")
 
 (defprotocol completeness-test basic
@@ -40,6 +40,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 2 0 init 3) (enc "ok" s-0)
     (1 0))
+  (strand-map 0 1)
   (traces
     ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
       (send (enc "ok" s))) ((recv (enc "ok" s))))
@@ -58,6 +59,7 @@
   (non-orig s (privk b))
   (uniq-orig n)
   (operation encryption-test (added-strand init 3) (enc "ok" s) (1 0))
+  (strand-map 0 1)
   (traces
     ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
       (send (enc "ok" s-0))) ((recv (enc "ok" s)))
@@ -78,6 +80,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand resp 2) n (0 1)
     (enc a n (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
       (send (enc "ok" s))) ((recv (enc "ok" s)))
@@ -100,6 +103,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand resp 2) n (0 1)
     (enc a n (pubk b)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
       (send (enc "ok" s-0))) ((recv (enc "ok" s)))
@@ -155,6 +159,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand resp 2) n (1 1)
     (enc a n (pubk b)))
+  (strand-map 0 1)
   (traces ((recv (enc "ok" s)))
     ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
       (send (enc "ok" s-0)))
@@ -174,6 +179,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 3 1 init 3) (enc "ok" s-0)
     (0 0))
+  (strand-map 0 1 2)
   (traces ((recv (enc "ok" s)))
     ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
       (send (enc "ok" s)))
@@ -195,6 +201,7 @@
   (non-orig s (privk b))
   (uniq-orig n)
   (operation encryption-test (added-strand init 3) (enc "ok" s) (0 0))
+  (strand-map 0 1 2)
   (traces ((recv (enc "ok" s)))
     ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
       (send (enc "ok" s-0)))
@@ -247,6 +254,7 @@
   (non-orig s (privk b))
   (uniq-orig n)
   (operation encryption-test (displaced 0 2 init 3) (enc "ok" s) (1 0))
+  (strand-map 1 0)
   (traces ((recv (enc "ok" s)))
     ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
       (send (enc "ok" s))))
@@ -265,6 +273,7 @@
   (non-orig s (privk b))
   (uniq-orig n)
   (operation encryption-test (added-strand init 3) (enc "ok" s) (1 0))
+  (strand-map 0 1)
   (traces ((send (enc a n (pubk b))) (recv (enc n (pubk a))))
     ((recv (enc "ok" s)))
     ((send (enc a-0 n-0 (pubk b-0))) (recv (enc n-0 (pubk a-0)))
@@ -284,6 +293,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand resp 2) n (1 1)
     (enc a n (pubk b)))
+  (strand-map 0 1)
   (traces ((recv (enc "ok" s)))
     ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
       (send (enc "ok" s)))
@@ -306,6 +316,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand resp 2) n (0 1)
     (enc a n (pubk b)))
+  (strand-map 0 1 2)
   (traces ((send (enc a n (pubk b))) (recv (enc n (pubk a))))
     ((recv (enc "ok" s)))
     ((send (enc a-0 n-0 (pubk b-0))) (recv (enc n-0 (pubk a-0)))
@@ -359,6 +370,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand resp 2) n (1 1)
     (enc a n (pubk b)))
+  (strand-map 0 1)
   (traces ((recv (enc "ok" s)))
     ((send (enc a n (pubk b))) (recv (enc n (pubk a))))
     ((recv (enc a n (pubk b))) (send (enc n (pubk a)))))
@@ -376,6 +388,7 @@
   (non-orig s (privk b))
   (uniq-orig n)
   (operation encryption-test (displaced 1 3 init 3) (enc "ok" s) (0 0))
+  (strand-map 0 2 1)
   (traces ((recv (enc "ok" s)))
     ((recv (enc a n (pubk b))) (send (enc n (pubk a))))
     ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
@@ -397,6 +410,7 @@
   (non-orig s (privk b))
   (uniq-orig n)
   (operation encryption-test (added-strand init 3) (enc "ok" s) (0 0))
+  (strand-map 0 1 2)
   (traces ((recv (enc "ok" s)))
     ((send (enc a n (pubk b))) (recv (enc n (pubk a))))
     ((recv (enc a n (pubk b))) (send (enc n (pubk a))))
diff --git a/tst/completeness-test_shapes.tst b/tst/completeness-test_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/completeness-test_shapes.tst
@@ -0,0 +1,307 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/completeness-test.scm")
+
+(defprotocol completeness-test basic
+  (defrole init
+    (vars (a b name) (n text) (s skey))
+    (trace (send (enc a n (pubk b))) (recv (enc n (pubk a)))
+      (send (enc "ok" s))))
+  (defrole resp
+    (vars (a b name) (n text))
+    (trace (recv (enc a n (pubk b))) (send (enc n (pubk a)))))
+  (defrole probe (vars (s skey)) (trace (recv (enc "ok" s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton completeness-test
+  (vars (s s-0 skey) (n text) (b a name))
+  (defstrand init 3 (s s-0) (n n) (a a) (b b))
+  (defstrand probe 1 (s s))
+  (non-orig s (privk b))
+  (uniq-orig n)
+  (traces
+    ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
+      (send (enc "ok" s-0))) ((recv (enc "ok" s))))
+  (label 0)
+  (unrealized (0 1) (1 0))
+  (origs (n (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton completeness-test
+  (vars (s skey) (n text) (b a name))
+  (defstrand init 3 (s s) (n n) (a a) (b b))
+  (defstrand probe 1 (s s))
+  (defstrand resp 2 (n n) (a a) (b b))
+  (precedes ((0 0) (2 0)) ((0 2) (1 0)) ((2 1) (0 1)))
+  (non-orig s (privk b))
+  (uniq-orig n)
+  (operation nonce-test (added-strand resp 2) n (0 1)
+    (enc a n (pubk b)))
+  (traces
+    ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
+      (send (enc "ok" s))) ((recv (enc "ok" s)))
+    ((recv (enc a n (pubk b))) (send (enc n (pubk a)))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((b b) (n n) (s s) (a a) (s-0 s))))
+  (origs (n (0 0))))
+
+(defskeleton completeness-test
+  (vars (s s-0 skey) (n n-0 text) (b a a-0 b-0 name))
+  (defstrand init 3 (s s-0) (n n) (a a) (b b))
+  (defstrand probe 1 (s s))
+  (defstrand init 3 (s s) (n n-0) (a a-0) (b b-0))
+  (defstrand resp 2 (n n) (a a) (b b))
+  (precedes ((0 0) (3 0)) ((2 2) (1 0)) ((3 1) (0 1)))
+  (non-orig s (privk b))
+  (uniq-orig n)
+  (operation nonce-test (added-strand resp 2) n (0 1)
+    (enc a n (pubk b)))
+  (traces
+    ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
+      (send (enc "ok" s-0))) ((recv (enc "ok" s)))
+    ((send (enc a-0 n-0 (pubk b-0))) (recv (enc n-0 (pubk a-0)))
+      (send (enc "ok" s)))
+    ((recv (enc a n (pubk b))) (send (enc n (pubk a)))))
+  (label 4)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((b b) (n n) (s s) (a a) (s-0 s-0))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol completeness-test basic
+  (defrole init
+    (vars (a b name) (n text) (s skey))
+    (trace (send (enc a n (pubk b))) (recv (enc n (pubk a)))
+      (send (enc "ok" s))))
+  (defrole resp
+    (vars (a b name) (n text))
+    (trace (recv (enc a n (pubk b))) (send (enc n (pubk a)))))
+  (defrole probe (vars (s skey)) (trace (recv (enc "ok" s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton completeness-test
+  (vars (s s-0 skey) (n text) (b a name))
+  (defstrand probe 1 (s s))
+  (defstrand init 3 (s s-0) (n n) (a a) (b b))
+  (non-orig s (privk b))
+  (uniq-orig n)
+  (traces ((recv (enc "ok" s)))
+    ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
+      (send (enc "ok" s-0))))
+  (label 5)
+  (unrealized (0 0) (1 1))
+  (origs (n (1 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton completeness-test
+  (vars (s skey) (n text) (b a name))
+  (defstrand probe 1 (s s))
+  (defstrand init 3 (s s) (n n) (a a) (b b))
+  (defstrand resp 2 (n n) (a a) (b b))
+  (precedes ((1 0) (2 0)) ((1 2) (0 0)) ((2 1) (1 1)))
+  (non-orig s (privk b))
+  (uniq-orig n)
+  (operation encryption-test (displaced 3 1 init 3) (enc "ok" s-0)
+    (0 0))
+  (traces ((recv (enc "ok" s)))
+    ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
+      (send (enc "ok" s)))
+    ((recv (enc a n (pubk b))) (send (enc n (pubk a)))))
+  (label 7)
+  (parent 5)
+  (realized)
+  (shape)
+  (maps ((0 1) ((b b) (n n) (s s) (a a) (s-0 s))))
+  (origs (n (1 0))))
+
+(defskeleton completeness-test
+  (vars (s s-0 skey) (n n-0 text) (b a a-0 b-0 name))
+  (defstrand probe 1 (s s))
+  (defstrand init 3 (s s-0) (n n) (a a) (b b))
+  (defstrand resp 2 (n n) (a a) (b b))
+  (defstrand init 3 (s s) (n n-0) (a a-0) (b b-0))
+  (precedes ((1 0) (2 0)) ((2 1) (1 1)) ((3 2) (0 0)))
+  (non-orig s (privk b))
+  (uniq-orig n)
+  (operation encryption-test (added-strand init 3) (enc "ok" s) (0 0))
+  (traces ((recv (enc "ok" s)))
+    ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
+      (send (enc "ok" s-0)))
+    ((recv (enc a n (pubk b))) (send (enc n (pubk a))))
+    ((send (enc a-0 n-0 (pubk b-0))) (recv (enc n-0 (pubk a-0)))
+      (send (enc "ok" s))))
+  (label 8)
+  (parent 5)
+  (realized)
+  (shape)
+  (maps ((0 1) ((b b) (n n) (s s) (a a) (s-0 s-0))))
+  (origs (n (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol completeness-test basic
+  (defrole init
+    (vars (a b name) (n text) (s skey))
+    (trace (send (enc a n (pubk b))) (recv (enc n (pubk a)))
+      (send (enc "ok" s))))
+  (defrole resp
+    (vars (a b name) (n text))
+    (trace (recv (enc a n (pubk b))) (send (enc n (pubk a)))))
+  (defrole probe (vars (s skey)) (trace (recv (enc "ok" s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton completeness-test
+  (vars (s skey) (n text) (b a name))
+  (defstrand init 2 (n n) (a a) (b b))
+  (defstrand probe 1 (s s))
+  (non-orig s (privk b))
+  (uniq-orig n)
+  (traces ((send (enc a n (pubk b))) (recv (enc n (pubk a))))
+    ((recv (enc "ok" s))))
+  (label 9)
+  (unrealized (0 1) (1 0))
+  (origs (n (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton completeness-test
+  (vars (s skey) (n text) (a b name))
+  (defstrand probe 1 (s s))
+  (defstrand init 3 (s s) (n n) (a a) (b b))
+  (defstrand resp 2 (n n) (a a) (b b))
+  (precedes ((1 0) (2 0)) ((1 2) (0 0)) ((2 1) (1 1)))
+  (non-orig s (privk b))
+  (uniq-orig n)
+  (operation nonce-test (added-strand resp 2) n (1 1)
+    (enc a n (pubk b)))
+  (traces ((recv (enc "ok" s)))
+    ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
+      (send (enc "ok" s)))
+    ((recv (enc a n (pubk b))) (send (enc n (pubk a)))))
+  (label 12)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps ((1 0) ((b b) (n n) (s s) (a a))))
+  (origs (n (1 0))))
+
+(defskeleton completeness-test
+  (vars (s skey) (n n-0 text) (b a a-0 b-0 name))
+  (defstrand init 2 (n n) (a a) (b b))
+  (defstrand probe 1 (s s))
+  (defstrand init 3 (s s) (n n-0) (a a-0) (b b-0))
+  (defstrand resp 2 (n n) (a a) (b b))
+  (precedes ((0 0) (3 0)) ((2 2) (1 0)) ((3 1) (0 1)))
+  (non-orig s (privk b))
+  (uniq-orig n)
+  (operation nonce-test (added-strand resp 2) n (0 1)
+    (enc a n (pubk b)))
+  (traces ((send (enc a n (pubk b))) (recv (enc n (pubk a))))
+    ((recv (enc "ok" s)))
+    ((send (enc a-0 n-0 (pubk b-0))) (recv (enc n-0 (pubk a-0)))
+      (send (enc "ok" s)))
+    ((recv (enc a n (pubk b))) (send (enc n (pubk a)))))
+  (label 13)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps ((0 1) ((b b) (n n) (s s) (a a))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol completeness-test basic
+  (defrole init
+    (vars (a b name) (n text) (s skey))
+    (trace (send (enc a n (pubk b))) (recv (enc n (pubk a)))
+      (send (enc "ok" s))))
+  (defrole resp
+    (vars (a b name) (n text))
+    (trace (recv (enc a n (pubk b))) (send (enc n (pubk a)))))
+  (defrole probe (vars (s skey)) (trace (recv (enc "ok" s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton completeness-test
+  (vars (s skey) (n text) (b a name))
+  (defstrand probe 1 (s s))
+  (defstrand init 2 (n n) (a a) (b b))
+  (non-orig s (privk b))
+  (uniq-orig n)
+  (traces ((recv (enc "ok" s)))
+    ((send (enc a n (pubk b))) (recv (enc n (pubk a)))))
+  (label 14)
+  (unrealized (0 0) (1 1))
+  (origs (n (1 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton completeness-test
+  (vars (s skey) (n text) (a b name))
+  (defstrand probe 1 (s s))
+  (defstrand resp 2 (n n) (a a) (b b))
+  (defstrand init 3 (s s) (n n) (a a) (b b))
+  (precedes ((1 1) (2 1)) ((2 0) (1 0)) ((2 2) (0 0)))
+  (non-orig s (privk b))
+  (uniq-orig n)
+  (operation encryption-test (displaced 1 3 init 3) (enc "ok" s) (0 0))
+  (traces ((recv (enc "ok" s)))
+    ((recv (enc a n (pubk b))) (send (enc n (pubk a))))
+    ((send (enc a n (pubk b))) (recv (enc n (pubk a)))
+      (send (enc "ok" s))))
+  (label 16)
+  (parent 14)
+  (realized)
+  (shape)
+  (maps ((0 2) ((b b) (n n) (s s) (a a))))
+  (origs (n (2 0))))
+
+(defskeleton completeness-test
+  (vars (s skey) (n n-0 text) (b a a-0 b-0 name))
+  (defstrand probe 1 (s s))
+  (defstrand init 2 (n n) (a a) (b b))
+  (defstrand resp 2 (n n) (a a) (b b))
+  (defstrand init 3 (s s) (n n-0) (a a-0) (b b-0))
+  (precedes ((1 0) (2 0)) ((2 1) (1 1)) ((3 2) (0 0)))
+  (non-orig s (privk b))
+  (uniq-orig n)
+  (operation encryption-test (added-strand init 3) (enc "ok" s) (0 0))
+  (traces ((recv (enc "ok" s)))
+    ((send (enc a n (pubk b))) (recv (enc n (pubk a))))
+    ((recv (enc a n (pubk b))) (send (enc n (pubk a))))
+    ((send (enc a-0 n-0 (pubk b-0))) (recv (enc n-0 (pubk a-0)))
+      (send (enc "ok" s))))
+  (label 17)
+  (parent 14)
+  (realized)
+  (shape)
+  (maps ((0 1) ((b b) (n n) (s s) (a a))))
+  (origs (n (1 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/cpsagraphall b/tst/cpsagraphall
deleted file mode 100644
--- a/tst/cpsagraphall
+++ /dev/null
@@ -1,12 +0,0 @@
-#! /bin/sh
-
-# Graph all test output.
-
-PROG=cpsa4graph
-
-for i in *.txt
-do
-  o=`basename $i .txt`.svg
-  echo $PROG -o $o $i
-  $PROG -o $o $i
-done
diff --git a/tst/cpsagraphtst b/tst/cpsagraphtst
deleted file mode 100644
--- a/tst/cpsagraphtst
+++ /dev/null
@@ -1,12 +0,0 @@
-#! /bin/sh
-
-# Graph all expected test output.
-
-PROG=cpsa4graph
-
-for i in *.tst
-do
-  o=`basename $i .tst`_tst.xhtml
-  echo $PROG -o $o $i
-  $PROG -o $o $i
-done
diff --git a/tst/cpsashapesall b/tst/cpsashapesall
deleted file mode 100644
--- a/tst/cpsashapesall
+++ /dev/null
@@ -1,15 +0,0 @@
-#! /bin/sh
-
-# Find the shapes associated with all test output.
-
-PROG=cpsa4shapes
-
-for i in *.txt
-do
-  if echo $i | grep -v shapes > /dev/null
-  then
-    o=`basename $i .txt`_shapes.txt
-    echo $PROG -o $o $i
-    $PROG -o $o $i
-  fi
-done
diff --git a/tst/crushing.tst b/tst/crushing.tst
--- a/tst/crushing.tst
+++ b/tst/crushing.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/crushing.scm")
 
 (defprotocol crushing basic
@@ -49,6 +49,7 @@
   (uniq-orig n n1 n2 n3)
   (operation encryption-test (added-strand adder 2) (enc n n1 (invk k))
     (0 1))
+  (strand-map 0)
   (traces
     ((send (enc n k)) (recv (enc n n1 (invk k)))
       (recv (enc n n2 (invk k))) (recv (enc n n3 (invk k)))
@@ -69,6 +70,7 @@
   (uniq-orig n n1 n3)
   (operation encryption-test (displaced 2 1 adder 2) (enc n n2 (invk k))
     (0 2))
+  (strand-map 0 1)
   (traces
     ((send (enc n k)) (recv (enc n n1 (invk k)))
       (recv (enc n n1 (invk k))) (recv (enc n n3 (invk k)))
@@ -90,6 +92,7 @@
   (uniq-orig n n1 n2 n3)
   (operation encryption-test (added-strand adder 2) (enc n n2 (invk k))
     (0 2))
+  (strand-map 0 1)
   (traces
     ((send (enc n k)) (recv (enc n n1 (invk k)))
       (recv (enc n n2 (invk k))) (recv (enc n n3 (invk k)))
@@ -111,6 +114,7 @@
   (uniq-orig n n1)
   (operation encryption-test (displaced 2 1 adder 2) (enc n n3 (invk k))
     (0 3))
+  (strand-map 0 1)
   (traces
     ((send (enc n k)) (recv (enc n n1 (invk k)))
       (recv (enc n n1 (invk k))) (recv (enc n n1 (invk k)))
@@ -132,6 +136,7 @@
   (uniq-orig n n1 n3)
   (operation encryption-test (added-strand adder 2) (enc n n3 (invk k))
     (0 3))
+  (strand-map 0 1)
   (traces
     ((send (enc n k)) (recv (enc n n1 (invk k)))
       (recv (enc n n1 (invk k))) (recv (enc n n3 (invk k)))
@@ -154,6 +159,7 @@
   (uniq-orig n n1 n2)
   (operation encryption-test (displaced 3 1 adder 2) (enc n n3 (invk k))
     (0 3))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n n1 (invk k)))
       (recv (enc n n2 (invk k))) (recv (enc n n1 (invk k)))
@@ -176,6 +182,7 @@
   (uniq-orig n n1 n2)
   (operation encryption-test (displaced 3 2 adder 2) (enc n n3 (invk k))
     (0 3))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n n1 (invk k)))
       (recv (enc n n2 (invk k))) (recv (enc n n2 (invk k)))
@@ -200,6 +207,7 @@
   (uniq-orig n n1 n2 n3)
   (operation encryption-test (added-strand adder 2) (enc n n3 (invk k))
     (0 3))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n n1 (invk k)))
       (recv (enc n n2 (invk k))) (recv (enc n n3 (invk k)))
@@ -223,6 +231,7 @@
   (uniq-orig n n1)
   (operation encryption-test (added-strand twister 2)
     (enc n n1 n1 n1 n (invk k)) (0 5))
+  (strand-map 0 1)
   (traces
     ((send (enc n k)) (recv (enc n n1 (invk k)))
       (recv (enc n n1 (invk k))) (recv (enc n n1 (invk k)))
@@ -248,6 +257,7 @@
   (uniq-orig n n1 n3)
   (operation encryption-test (added-strand twister 2)
     (enc n n1 n1 n3 n (invk k)) (0 5))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n n1 (invk k)))
       (recv (enc n n1 (invk k))) (recv (enc n n3 (invk k)))
@@ -275,6 +285,7 @@
   (uniq-orig n n1 n2)
   (operation encryption-test (added-strand twister 2)
     (enc n n1 n2 n1 n (invk k)) (0 5))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n n1 (invk k)))
       (recv (enc n n2 (invk k))) (recv (enc n n1 (invk k)))
@@ -302,6 +313,7 @@
   (uniq-orig n n1 n2)
   (operation encryption-test (added-strand twister 2)
     (enc n n1 n2 n2 n (invk k)) (0 5))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n n1 (invk k)))
       (recv (enc n n2 (invk k))) (recv (enc n n2 (invk k)))
@@ -331,6 +343,7 @@
   (uniq-orig n n1 n2 n3)
   (operation encryption-test (added-strand twister 2)
     (enc n n1 n2 n3 n (invk k)) (0 5))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n n1 (invk k)))
       (recv (enc n n2 (invk k))) (recv (enc n n3 (invk k)))
@@ -357,6 +370,7 @@
   (uniq-orig n n1)
   (operation encryption-test (displaced 3 0 init 5)
     (enc n n1 n1 n1 (invk k)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n n1 (invk k)))
       (recv (enc n n1 (invk k))) (recv (enc n n1 (invk k)))
diff --git a/tst/crushing_shapes.tst b/tst/crushing_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/crushing_shapes.tst
@@ -0,0 +1,72 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/crushing.scm")
+
+(defprotocol crushing basic
+  (defrole init
+    (vars (k akey) (n n1 n2 n3 text))
+    (trace (send (enc n k)) (recv (enc n n1 (invk k)))
+      (recv (enc n n2 (invk k))) (recv (enc n n3 (invk k)))
+      (send (enc n n1 n2 n3 (invk k)))
+      (recv (enc n n1 n2 n3 n (invk k))))
+    (non-orig (invk k))
+    (uniq-orig n))
+  (defrole adder
+    (vars (k akey) (n new text))
+    (trace (recv (enc n k)) (send (enc n new (invk k))))
+    (uniq-orig new))
+  (defrole twister
+    (vars (k akey) (n n1 n2 n3 text))
+    (trace (recv (enc n n1 n2 n3 (invk k)))
+      (send (enc n n2 n3 n1 n (invk k)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton crushing
+  (vars (n n1 n2 n3 text) (k akey))
+  (defstrand init 6 (n n) (n1 n1) (n2 n2) (n3 n3) (k k))
+  (non-orig (invk k))
+  (uniq-orig n n1 n2 n3)
+  (traces
+    ((send (enc n k)) (recv (enc n n1 (invk k)))
+      (recv (enc n n2 (invk k))) (recv (enc n n3 (invk k)))
+      (send (enc n n1 n2 n3 (invk k)))
+      (recv (enc n n1 n2 n3 n (invk k)))))
+  (label 0)
+  (unrealized (0 1) (0 2) (0 3) (0 5))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton crushing
+  (vars (n n1 text) (k akey))
+  (defstrand init 6 (n n) (n1 n1) (n2 n1) (n3 n1) (k k))
+  (defstrand adder 2 (n n) (new n1) (k k))
+  (defstrand twister 2 (n n) (n1 n1) (n2 n1) (n3 n1) (k k))
+  (precedes ((0 0) (1 0)) ((0 4) (2 0)) ((1 1) (0 1)) ((2 1) (0 5)))
+  (non-orig (invk k))
+  (uniq-orig n n1)
+  (operation encryption-test (displaced 3 0 init 5)
+    (enc n n1 n1 n1 (invk k)) (2 0))
+  (traces
+    ((send (enc n k)) (recv (enc n n1 (invk k)))
+      (recv (enc n n1 (invk k))) (recv (enc n n1 (invk k)))
+      (send (enc n n1 n1 n1 (invk k)))
+      (recv (enc n n1 n1 n1 n (invk k))))
+    ((recv (enc n k)) (send (enc n n1 (invk k))))
+    ((recv (enc n n1 n1 n1 (invk k)))
+      (send (enc n n1 n1 n1 n (invk k)))))
+  (label 14)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((k k) (n n) (n1 n1) (n2 n1) (n3 n1))))
+  (origs (n (0 0)) (n1 (1 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/dass-mod.lisp b/tst/dass-mod.lisp
deleted file mode 100644
--- a/tst/dass-mod.lisp
+++ /dev/null
@@ -1,31 +0,0 @@
-(defprotocol dass basic
-  (defrole init
-    (vars (a name) (b name) (ks name) (k skey) (l text) (ta text) (tb text))
-    (trace (send b)
-	   (recv (enc (cat b (pubk b)) (privk ks)))
-	   (send (enc (cat (enc ta k) l a (enc k (pubk b))) (privk a)))
-	   (recv (enc tb k))))
-  (defrole resp
-    (vars (a name) (b name) (ks name) (k skey) (l text) (ta text) (tb text))
-    (trace (recv (enc (cat (enc ta k) l a (enc k (pubk b))) (privk a)))
-	   (send a)
-	   (recv (enc (cat a (pubk a)) (privk ks)))
-	   (send (enc tb k))))
-  (defrole keyserver
-    (vars (a name) (b name) (ks name))
-    (trace (recv b)
-	   (send (enc (cat b (pubk b)) (privk ks)))
-	   (recv a)
-	   (send (enc (cat a (pubk a)) (privk ks))))))
-
-(defskeleton dass
-  (vars (a name) (b name) (ks name) (k skey))
-  (defstrand init 4 (a a) (b b) (ks ks) (k k))
-  (non-orig (privk a) (privk b) (privk ks))
-  (uniq-orig k))
-
-(defskeleton dass
-  (vars (a name) (b name) (ks name) (k skey))
-  (defstrand resp 4 (a a) (b b) (ks ks) (k k))
-  (non-orig (privk a) (privk b) (privk ks))
-  (uniq-orig k))
diff --git a/tst/dass.lisp b/tst/dass.lisp
deleted file mode 100644
--- a/tst/dass.lisp
+++ /dev/null
@@ -1,31 +0,0 @@
-(defprotocol dass basic
-  (defrole init
-    (vars (a name) (b name) (ks name) (k skey) (l text) (ta text) (kp akey) (tb text))
-    (trace (send b)
-	   (recv (enc (cat b (pubk b)) (privk ks)))
-	   (send (cat (enc ta k) (enc (cat l a kp) (privk a)) (enc (enc k (pubk b)) kp)))
-	   (recv (enc tb k))))
-  (defrole resp
-    (vars (a name) (b name) (ks name) (k skey) (l text) (ta text) (kp akey) (tb text))
-    (trace (recv (cat (enc ta k) (enc (cat l a kp) (privk a)) (enc (enc k (pubk b)) kp)))
-	   (send a)
-	   (recv (enc (cat a (pubk a)) (privk ks)))
-	   (send (enc tb k))))
-  (defrole keyserver
-    (vars (a name) (b name) (ks name))
-    (trace (recv b)
-	   (send (enc (cat b (pubk b)) (privk ks)))
-	   (recv a)
-	   (send (enc (cat a (pubk a)) (privk ks))))))
-
-(defskeleton dass
-  (vars (a name) (b name) (ks name) (k skey) (kp akey))
-  (defstrand init 4 (a a) (b b) (ks ks) (k k) (kp kp))
-  (non-orig (privk a) (privk b) (privk ks))
-  (uniq-orig k kp))
-
-(defskeleton dass
-  (vars (a name) (b name) (ks name) (k skey) (kp akey))
-  (defstrand resp 4 (a a) (b b) (ks ks) (k k) (kp kp))
-  (non-orig (privk a) (privk b) (privk ks))
-  (uniq-orig k kp))
diff --git a/tst/dass_simple.tst b/tst/dass_simple.tst
--- a/tst/dass_simple.tst
+++ b/tst/dass_simple.tst
@@ -1,6 +1,6 @@
 (herald "Distributed Authentication Security Service Protocol Variants")
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/dass_simple.scm")
 
 (defprotocol dass-simple basic
@@ -49,6 +49,7 @@
   (uniq-orig k kp)
   (operation encryption-test (added-strand resp 2) (enc "resp" tb k)
     (0 1))
+  (strand-map 0)
   (traces
     ((send
        (cat (enc "init" ta k) (enc a kp (privk a))
@@ -70,6 +71,7 @@
   (non-orig (invk kp) (privk a) (privk b))
   (uniq-orig k kp)
   (operation encryption-test (added-listener k) (enc "resp" tb k) (0 1))
+  (strand-map 0)
   (traces
     ((send
        (cat (enc "init" ta k) (enc a kp (privk a))
@@ -90,6 +92,7 @@
   (uniq-orig k kp)
   (operation encryption-test (displaced 2 0 init 1) (enc "init" ta-0 k)
     (1 0))
+  (strand-map 0 1)
   (traces
     ((send
        (cat (enc "init" ta k) (enc a kp (privk a))
@@ -113,6 +116,7 @@
   (uniq-orig k kp)
   (operation encryption-test (added-listener k) (enc "init" ta-0 k)
     (1 0))
+  (strand-map 0 1)
   (traces
     ((send
        (cat (enc "init" ta k) (enc a kp (privk a))
@@ -135,6 +139,7 @@
   (non-orig (invk kp) (privk a) (privk b))
   (uniq-orig k kp)
   (operation nonce-test (contracted (b-0 b)) k (1 0) (enc k (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send
        (cat (enc "init" ta k) (enc a kp (privk a))
@@ -198,6 +203,7 @@
   (uniq-orig k kp)
   (operation encryption-test (added-strand resp 2) (enc "resp" tb k)
     (0 1))
+  (strand-map 0)
   (traces
     ((send
        (cat (enc "init" ta k) (enc a kp (privk a))
@@ -219,6 +225,7 @@
   (non-orig (invk kp) (privk a) (privk b))
   (uniq-orig k kp)
   (operation encryption-test (added-listener k) (enc "resp" tb k) (0 1))
+  (strand-map 0)
   (traces
     ((send
        (cat (enc "init" ta k) (enc a kp (privk a))
@@ -239,6 +246,7 @@
   (uniq-orig k kp)
   (operation encryption-test (displaced 2 0 init 1) (enc "init" ta-0 k)
     (1 0))
+  (strand-map 0 1)
   (traces
     ((send
        (cat (enc "init" ta k) (enc a kp (privk a))
@@ -262,6 +270,7 @@
   (uniq-orig k kp)
   (operation encryption-test (added-listener k) (enc "init" ta-0 k)
     (1 0))
+  (strand-map 0 1)
   (traces
     ((send
        (cat (enc "init" ta k) (enc a kp (privk a))
@@ -285,6 +294,7 @@
   (uniq-orig k kp)
   (operation encryption-test (displaced 2 0 init 1)
     (enc a-0 kp-0 (privk a-0)) (1 0))
+  (strand-map 0 1)
   (traces
     ((send
        (cat (enc "init" ta k) (enc a kp (privk a))
@@ -308,6 +318,7 @@
   (uniq-orig k kp)
   (operation encryption-test (added-strand init 1)
     (enc a-0 kp-0 (privk a-0)) (1 0))
+  (strand-map 0 1)
   (traces
     ((send
        (cat (enc "init" ta k) (enc a kp (privk a))
@@ -333,6 +344,7 @@
   (uniq-orig k kp)
   (operation encryption-test (displaced 2 0 init 1)
     (enc (enc k (pubk b-0)) (invk kp)) (1 0))
+  (strand-map 0 1)
   (traces
     ((send
        (cat (enc "init" ta k) (enc a kp (privk a))
@@ -357,6 +369,7 @@
   (non-orig (invk kp) (privk a) (privk b) (privk a-0))
   (uniq-orig k kp)
   (operation nonce-test (contracted (b-1 b)) k (1 0) (enc k (pubk b)))
+  (strand-map 0 1 2)
   (traces
     ((send
        (cat (enc "init" ta k) (enc a kp (privk a))
diff --git a/tst/dass_simple_shapes.tst b/tst/dass_simple_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/dass_simple_shapes.tst
@@ -0,0 +1,159 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Distributed Authentication Security Service Protocol Variants")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/dass_simple.scm")
+
+(defprotocol dass-simple basic
+  (defrole init
+    (vars (a b name) (k skey) (ta text) (kp akey) (tb text))
+    (trace
+      (send
+        (cat (enc "init" ta k) (enc a kp (privk a))
+          (enc (enc k (pubk b)) (invk kp)))) (recv (enc "resp" tb k))))
+  (defrole resp
+    (vars (a b name) (k skey) (ta text) (kp akey) (tb text))
+    (trace
+      (recv
+        (cat (enc "init" ta k) (enc a kp (privk a))
+          (enc (enc k (pubk b)) (invk kp)))) (send (enc "resp" tb k))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "In this version of the protocol ")
+  (comment "b might interact with a compromised initiator.")
+  (comment "That is why a is not authenticated to b."))
+
+(defskeleton dass-simple
+  (vars (k skey) (ta tb text) (kp akey) (a b name))
+  (defstrand init 2 (k k) (ta ta) (tb tb) (kp kp) (a a) (b b))
+  (non-orig (invk kp) (privk a) (privk b))
+  (uniq-orig k kp)
+  (traces
+    ((send
+       (cat (enc "init" ta k) (enc a kp (privk a))
+         (enc (enc k (pubk b)) (invk kp)))) (recv (enc "resp" tb k))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (k (0 0)) (kp (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dass-simple
+  (vars (k skey) (ta tb text) (kp kp-0 akey) (a b a-0 name))
+  (defstrand init 2 (k k) (ta ta) (tb tb) (kp kp) (a a) (b b))
+  (defstrand resp 2 (k k) (ta ta) (tb tb) (kp kp-0) (a a-0) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk kp) (privk a) (privk b))
+  (uniq-orig k kp)
+  (operation nonce-test (contracted (b-0 b)) k (1 0) (enc k (pubk b)))
+  (traces
+    ((send
+       (cat (enc "init" ta k) (enc a kp (privk a))
+         (enc (enc k (pubk b)) (invk kp)))) (recv (enc "resp" tb k)))
+    ((recv
+       (cat (enc "init" ta k) (enc a-0 kp-0 (privk a-0))
+         (enc (enc k (pubk b)) (invk kp-0)))) (send (enc "resp" tb k))))
+  (label 5)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (k k) (kp kp) (ta ta) (tb tb))))
+  (origs (k (0 0)) (kp (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol dass+ basic
+  (defrole init
+    (vars (a b name) (k skey) (ta text) (kp akey) (tb text))
+    (trace
+      (send
+        (cat (enc "init" ta k) (enc a kp (privk a))
+          (enc (enc k (pubk b)) (invk kp)))) (recv (enc "resp" tb k))))
+  (defrole resp
+    (vars (a b name) (k skey) (ta text) (kp akey) (tb text))
+    (trace
+      (recv
+        (cat (enc "init" ta k) (enc a kp (privk a))
+          (enc (enc k (pubk b)) (invk kp)))) (send (enc "resp" tb k)))
+    (non-orig (privk a)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "In this version of the protocol ")
+  (comment "b never interacts with a compromised initiator.")
+  (comment "That is why a is properly authenticated to b."))
+
+(defskeleton dass+
+  (vars (k skey) (ta tb text) (kp akey) (a b name))
+  (defstrand init 2 (k k) (ta ta) (tb tb) (kp kp) (a a) (b b))
+  (non-orig (invk kp) (privk a) (privk b))
+  (uniq-orig k kp)
+  (traces
+    ((send
+       (cat (enc "init" ta k) (enc a kp (privk a))
+         (enc (enc k (pubk b)) (invk kp)))) (recv (enc "resp" tb k))))
+  (label 6)
+  (unrealized (0 1))
+  (origs (k (0 0)) (kp (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dass+
+  (vars (k skey) (ta tb text) (kp akey) (a b name))
+  (defstrand init 2 (k k) (ta ta) (tb tb) (kp kp) (a a) (b b))
+  (defstrand resp 2 (k k) (ta ta) (tb tb) (kp kp) (a a) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk kp) (privk a) (privk b))
+  (uniq-orig k kp)
+  (operation encryption-test (displaced 2 0 init 1)
+    (enc (enc k (pubk b-0)) (invk kp)) (1 0))
+  (traces
+    ((send
+       (cat (enc "init" ta k) (enc a kp (privk a))
+         (enc (enc k (pubk b)) (invk kp)))) (recv (enc "resp" tb k)))
+    ((recv
+       (cat (enc "init" ta k) (enc a kp (privk a))
+         (enc (enc k (pubk b)) (invk kp)))) (send (enc "resp" tb k))))
+  (label 13)
+  (parent 6)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (k k) (kp kp) (ta ta) (tb tb))))
+  (origs (k (0 0)) (kp (0 0))))
+
+(defskeleton dass+
+  (vars (k k-0 skey) (ta tb ta-0 text) (kp kp-0 akey)
+    (a b a-0 b-0 name))
+  (defstrand init 2 (k k) (ta ta) (tb tb) (kp kp) (a a) (b b))
+  (defstrand resp 2 (k k) (ta ta) (tb tb) (kp kp-0) (a a-0) (b b))
+  (defstrand init 1 (k k-0) (ta ta-0) (kp kp-0) (a a-0) (b b-0))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((2 0) (1 0)))
+  (non-orig (invk kp) (privk a) (privk b) (privk a-0))
+  (uniq-orig k kp)
+  (operation nonce-test (contracted (b-1 b)) k (1 0) (enc k (pubk b)))
+  (traces
+    ((send
+       (cat (enc "init" ta k) (enc a kp (privk a))
+         (enc (enc k (pubk b)) (invk kp)))) (recv (enc "resp" tb k)))
+    ((recv
+       (cat (enc "init" ta k) (enc a-0 kp-0 (privk a-0))
+         (enc (enc k (pubk b)) (invk kp-0)))) (send (enc "resp" tb k)))
+    ((send
+       (cat (enc "init" ta-0 k-0) (enc a-0 kp-0 (privk a-0))
+         (enc (enc k-0 (pubk b-0)) (invk kp-0))))))
+  (label 14)
+  (parent 6)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (k k) (kp kp) (ta ta) (tb tb))))
+  (origs (k (0 0)) (kp (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/denning-sacco.tst b/tst/denning-sacco.tst
--- a/tst/denning-sacco.tst
+++ b/tst/denning-sacco.tst
@@ -1,6 +1,6 @@
 (herald "Denning-Sacco Protocol")
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/denning-sacco.scm")
 
 (defprotocol denning-sacco basic
@@ -53,6 +53,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 3)
     (enc a b k ta (privk a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
@@ -80,6 +81,7 @@
     (enc a b k ta (privk a)) (0 0)
     (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
       (enc a (pubk a) (privk ks)) (pubk b)))
+  (strand-map 0 1)
   (traces
     ((recv
        (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
@@ -105,6 +107,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand keyserver 2)
     (enc b (pubk b) (privk ks)) (1 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
@@ -134,6 +137,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand keyserver 2)
     (enc b (pubk b) (privk ks)) (1 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
@@ -164,6 +168,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand keyserver 2)
     (enc a (pubk a) (privk ks)) (1 1))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
@@ -199,6 +204,7 @@
   (uniq-orig k)
   (operation encryption-test (displaced 3 2 keyserver 2)
     (enc a-0 (pubk a-0) (privk ks)) (1 1))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc (enc b b k ta (privk b)) (enc b (pubk b) (privk ks))
@@ -229,6 +235,7 @@
   (uniq-orig k)
   (operation encryption-test (displaced 3 2 keyserver 2)
     (enc a-0 (pubk a-0) (privk ks)) (1 1))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
@@ -260,6 +267,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand keyserver 2)
     (enc a (pubk a) (privk ks)) (1 1))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
@@ -296,6 +304,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand keyserver 2)
     (enc a (pubk a) (privk ks)) (1 1))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
@@ -331,6 +340,7 @@
   (uniq-orig k)
   (operation encryption-test (displaced 3 2 keyserver 2)
     (enc a (pubk a) (privk ks)) (1 1))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc (enc b-0 b k ta (privk b-0)) (enc b (pubk b) (privk ks))
@@ -363,6 +373,7 @@
   (uniq-orig k)
   (operation encryption-test (displaced 3 2 keyserver 2)
     (enc a (pubk a) (privk ks)) (1 1))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc (enc b b k ta (privk b)) (enc b (pubk b) (privk ks))
@@ -395,6 +406,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand keyserver 2)
     (enc a (pubk a) (privk ks)) (1 1))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
diff --git a/tst/denning-sacco_shapes.tst b/tst/denning-sacco_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/denning-sacco_shapes.tst
@@ -0,0 +1,318 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Denning-Sacco Protocol")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/denning-sacco.scm")
+
+(defprotocol denning-sacco basic
+  (defrole init
+    (vars (a b ks name) (k skey) (ta text))
+    (trace (send (cat a b))
+      (recv
+        (cat (enc b (pubk b) (privk ks)) (enc a (pubk a) (privk ks))))
+      (send
+        (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
+          (enc a (pubk a) (privk ks)) (pubk b)))))
+  (defrole resp
+    (vars (a b ks name) (k skey) (ta text))
+    (trace
+      (recv
+        (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
+          (enc a (pubk a) (privk ks)) (pubk b)))))
+  (defrole keyserver
+    (vars (a b ks name))
+    (trace (recv (cat a b))
+      (send
+        (cat (enc b (pubk b) (privk ks)) (enc a (pubk a) (privk ks))))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton denning-sacco
+  (vars (k skey) (ta text) (a b ks name))
+  (defstrand resp 1 (k k) (ta ta) (a a) (b b) (ks ks))
+  (non-orig (privk a) (privk b) (privk ks))
+  (uniq-orig k)
+  (traces
+    ((recv
+       (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
+         (enc a (pubk a) (privk ks)) (pubk b)))))
+  (label 0)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton denning-sacco
+  (vars (k skey) (ta text) (a b ks a-0 a-1 name))
+  (defstrand resp 1 (k k) (ta ta) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ta ta) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (a a-0) (b b) (ks ks))
+  (defstrand keyserver 2 (a a-1) (b a) (ks ks))
+  (precedes ((1 2) (0 0)) ((2 1) (1 1)) ((3 1) (1 1)))
+  (non-orig (privk a) (privk b) (privk ks))
+  (uniq-orig k)
+  (operation encryption-test (added-strand keyserver 2)
+    (enc a (pubk a) (privk ks)) (1 1))
+  (traces
+    ((recv
+       (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
+         (enc a (pubk a) (privk ks)) (pubk b))))
+    ((send (cat a b))
+      (recv
+        (cat (enc b (pubk b) (privk ks)) (enc a (pubk a) (privk ks))))
+      (send
+        (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
+          (enc a (pubk a) (privk ks)) (pubk b))))
+    ((recv (cat a-0 b))
+      (send
+        (cat (enc b (pubk b) (privk ks))
+          (enc a-0 (pubk a-0) (privk ks)))))
+    ((recv (cat a-1 a))
+      (send
+        (cat (enc a (pubk a) (privk ks))
+          (enc a-1 (pubk a-1) (privk ks))))))
+  (label 5)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (k k) (ta ta))))
+  (origs (k (1 2))))
+
+(defskeleton denning-sacco
+  (vars (k skey) (ta text) (b ks a name))
+  (defstrand resp 1 (k k) (ta ta) (a b) (b b) (ks ks))
+  (defstrand init 3 (k k) (ta ta) (a b) (b b) (ks ks))
+  (defstrand keyserver 2 (a a) (b b) (ks ks))
+  (precedes ((1 2) (0 0)) ((2 1) (1 1)))
+  (non-orig (privk b) (privk ks))
+  (uniq-orig k)
+  (operation encryption-test (displaced 3 2 keyserver 2)
+    (enc a-0 (pubk a-0) (privk ks)) (1 1))
+  (traces
+    ((recv
+       (enc (enc b b k ta (privk b)) (enc b (pubk b) (privk ks))
+         (enc b (pubk b) (privk ks)) (pubk b))))
+    ((send (cat b b))
+      (recv
+        (cat (enc b (pubk b) (privk ks)) (enc b (pubk b) (privk ks))))
+      (send
+        (enc (enc b b k ta (privk b)) (enc b (pubk b) (privk ks))
+          (enc b (pubk b) (privk ks)) (pubk b))))
+    ((recv (cat a b))
+      (send
+        (cat (enc b (pubk b) (privk ks)) (enc a (pubk a) (privk ks))))))
+  (label 6)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a b) (b b) (ks ks) (k k) (ta ta))))
+  (origs (k (1 2))))
+
+(defskeleton denning-sacco
+  (vars (k skey) (ta text) (b ks a name))
+  (defstrand resp 1 (k k) (ta ta) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ta ta) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (a a) (b b) (ks ks))
+  (precedes ((1 2) (0 0)) ((2 1) (1 1)))
+  (non-orig (privk b) (privk ks) (privk a))
+  (uniq-orig k)
+  (operation encryption-test (displaced 3 2 keyserver 2)
+    (enc a-0 (pubk a-0) (privk ks)) (1 1))
+  (traces
+    ((recv
+       (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
+         (enc a (pubk a) (privk ks)) (pubk b))))
+    ((send (cat a b))
+      (recv
+        (cat (enc b (pubk b) (privk ks)) (enc a (pubk a) (privk ks))))
+      (send
+        (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
+          (enc a (pubk a) (privk ks)) (pubk b))))
+    ((recv (cat a b))
+      (send
+        (cat (enc b (pubk b) (privk ks)) (enc a (pubk a) (privk ks))))))
+  (label 7)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (k k) (ta ta))))
+  (origs (k (1 2))))
+
+(defskeleton denning-sacco
+  (vars (k skey) (ta text) (a b ks a-0 b-0 name))
+  (defstrand resp 1 (k k) (ta ta) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ta ta) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (a a-0) (b b) (ks ks))
+  (defstrand keyserver 2 (a a) (b b-0) (ks ks))
+  (precedes ((1 2) (0 0)) ((2 1) (1 1)) ((3 1) (1 1)))
+  (non-orig (privk a) (privk b) (privk ks))
+  (uniq-orig k)
+  (operation encryption-test (added-strand keyserver 2)
+    (enc a (pubk a) (privk ks)) (1 1))
+  (traces
+    ((recv
+       (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
+         (enc a (pubk a) (privk ks)) (pubk b))))
+    ((send (cat a b))
+      (recv
+        (cat (enc b (pubk b) (privk ks)) (enc a (pubk a) (privk ks))))
+      (send
+        (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
+          (enc a (pubk a) (privk ks)) (pubk b))))
+    ((recv (cat a-0 b))
+      (send
+        (cat (enc b (pubk b) (privk ks))
+          (enc a-0 (pubk a-0) (privk ks)))))
+    ((recv (cat a b-0))
+      (send
+        (cat (enc b-0 (pubk b-0) (privk ks))
+          (enc a (pubk a) (privk ks))))))
+  (label 8)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (k k) (ta ta))))
+  (origs (k (1 2))))
+
+(defskeleton denning-sacco
+  (vars (k skey) (ta text) (a b ks b-0 a-0 name))
+  (defstrand resp 1 (k k) (ta ta) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ta ta) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (a b) (b b-0) (ks ks))
+  (defstrand keyserver 2 (a a-0) (b a) (ks ks))
+  (precedes ((1 2) (0 0)) ((2 1) (1 1)) ((3 1) (1 1)))
+  (non-orig (privk a) (privk b) (privk ks))
+  (uniq-orig k)
+  (operation encryption-test (added-strand keyserver 2)
+    (enc a (pubk a) (privk ks)) (1 1))
+  (traces
+    ((recv
+       (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
+         (enc a (pubk a) (privk ks)) (pubk b))))
+    ((send (cat a b))
+      (recv
+        (cat (enc b (pubk b) (privk ks)) (enc a (pubk a) (privk ks))))
+      (send
+        (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
+          (enc a (pubk a) (privk ks)) (pubk b))))
+    ((recv (cat b b-0))
+      (send
+        (cat (enc b-0 (pubk b-0) (privk ks))
+          (enc b (pubk b) (privk ks)))))
+    ((recv (cat a-0 a))
+      (send
+        (cat (enc a (pubk a) (privk ks))
+          (enc a-0 (pubk a-0) (privk ks))))))
+  (label 9)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (k k) (ta ta))))
+  (origs (k (1 2))))
+
+(defskeleton denning-sacco
+  (vars (k skey) (ta text) (b ks b-0 name))
+  (defstrand resp 1 (k k) (ta ta) (a b-0) (b b) (ks ks))
+  (defstrand init 3 (k k) (ta ta) (a b-0) (b b) (ks ks))
+  (defstrand keyserver 2 (a b) (b b-0) (ks ks))
+  (precedes ((1 2) (0 0)) ((2 1) (1 1)))
+  (non-orig (privk b) (privk ks) (privk b-0))
+  (uniq-orig k)
+  (operation encryption-test (displaced 3 2 keyserver 2)
+    (enc a (pubk a) (privk ks)) (1 1))
+  (traces
+    ((recv
+       (enc (enc b-0 b k ta (privk b-0)) (enc b (pubk b) (privk ks))
+         (enc b-0 (pubk b-0) (privk ks)) (pubk b))))
+    ((send (cat b-0 b))
+      (recv
+        (cat (enc b (pubk b) (privk ks))
+          (enc b-0 (pubk b-0) (privk ks))))
+      (send
+        (enc (enc b-0 b k ta (privk b-0)) (enc b (pubk b) (privk ks))
+          (enc b-0 (pubk b-0) (privk ks)) (pubk b))))
+    ((recv (cat b b-0))
+      (send
+        (cat (enc b-0 (pubk b-0) (privk ks))
+          (enc b (pubk b) (privk ks))))))
+  (label 10)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a b-0) (b b) (ks ks) (k k) (ta ta))))
+  (origs (k (1 2))))
+
+(defskeleton denning-sacco
+  (vars (k skey) (ta text) (b ks b-0 name))
+  (defstrand resp 1 (k k) (ta ta) (a b) (b b) (ks ks))
+  (defstrand init 3 (k k) (ta ta) (a b) (b b) (ks ks))
+  (defstrand keyserver 2 (a b) (b b-0) (ks ks))
+  (precedes ((1 2) (0 0)) ((2 1) (1 1)))
+  (non-orig (privk b) (privk ks))
+  (uniq-orig k)
+  (operation encryption-test (displaced 3 2 keyserver 2)
+    (enc a (pubk a) (privk ks)) (1 1))
+  (traces
+    ((recv
+       (enc (enc b b k ta (privk b)) (enc b (pubk b) (privk ks))
+         (enc b (pubk b) (privk ks)) (pubk b))))
+    ((send (cat b b))
+      (recv
+        (cat (enc b (pubk b) (privk ks)) (enc b (pubk b) (privk ks))))
+      (send
+        (enc (enc b b k ta (privk b)) (enc b (pubk b) (privk ks))
+          (enc b (pubk b) (privk ks)) (pubk b))))
+    ((recv (cat b b-0))
+      (send
+        (cat (enc b-0 (pubk b-0) (privk ks))
+          (enc b (pubk b) (privk ks))))))
+  (label 11)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a b) (b b) (ks ks) (k k) (ta ta))))
+  (origs (k (1 2))))
+
+(defskeleton denning-sacco
+  (vars (k skey) (ta text) (a b ks b-0 b-1 name))
+  (defstrand resp 1 (k k) (ta ta) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ta ta) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (a b) (b b-0) (ks ks))
+  (defstrand keyserver 2 (a a) (b b-1) (ks ks))
+  (precedes ((1 2) (0 0)) ((2 1) (1 1)) ((3 1) (1 1)))
+  (non-orig (privk a) (privk b) (privk ks))
+  (uniq-orig k)
+  (operation encryption-test (added-strand keyserver 2)
+    (enc a (pubk a) (privk ks)) (1 1))
+  (traces
+    ((recv
+       (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
+         (enc a (pubk a) (privk ks)) (pubk b))))
+    ((send (cat a b))
+      (recv
+        (cat (enc b (pubk b) (privk ks)) (enc a (pubk a) (privk ks))))
+      (send
+        (enc (enc a b k ta (privk a)) (enc b (pubk b) (privk ks))
+          (enc a (pubk a) (privk ks)) (pubk b))))
+    ((recv (cat b b-0))
+      (send
+        (cat (enc b-0 (pubk b-0) (privk ks))
+          (enc b (pubk b) (privk ks)))))
+    ((recv (cat a b-1))
+      (send
+        (cat (enc b-1 (pubk b-1) (privk ks))
+          (enc a (pubk a) (privk ks))))))
+  (label 12)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (k k) (ta ta))))
+  (origs (k (1 2))))
+
+(comment "Nothing left to do")
diff --git a/tst/deorig_contract.tst b/tst/deorig_contract.tst
--- a/tst/deorig_contract.tst
+++ b/tst/deorig_contract.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/deorig_contract.scm")
 
 (defprotocol deorig-contract basic
@@ -36,6 +36,7 @@
   (non-orig (invk k))
   (uniq-orig x1 x2)
   (operation nonce-test (added-strand resp 3) x1 (0 2) (enc x1 k))
+  (strand-map 0)
   (traces ((send (enc x1 k)) (send (enc x2 k)) (recv (enc x1 x2 k)))
     ((recv (enc x1 k)) (recv (enc y2 k)) (send (enc x1 y3 k))))
   (label 1)
diff --git a/tst/deorig_contract_shapes.tst b/tst/deorig_contract_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/deorig_contract_shapes.tst
@@ -0,0 +1,68 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/deorig_contract.scm")
+
+(defprotocol deorig-contract basic
+  (defrole init
+    (vars (k akey) (x1 x2 text))
+    (trace (send (enc x1 k)) (send (enc x2 k)) (recv (enc x1 x2 k)))
+    (non-orig (invk k))
+    (uniq-orig x1 x2))
+  (defrole resp
+    (vars (k akey) (y1 y2 y3 text))
+    (trace (recv (enc y1 k)) (recv (enc y2 k)) (send (enc y1 y3 k))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton deorig-contract
+  (vars (x1 x2 text) (k akey))
+  (defstrand init 3 (x1 x1) (x2 x2) (k k))
+  (non-orig (invk k))
+  (uniq-orig x1 x2)
+  (traces ((send (enc x1 k)) (send (enc x2 k)) (recv (enc x1 x2 k))))
+  (label 0)
+  (unrealized (0 2))
+  (origs (x2 (0 1)) (x1 (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(comment "Nothing left to do")
+
+(defprotocol deorig-contract basic
+  (defrole init
+    (vars (k akey) (x1 x2 text))
+    (trace (send (enc x1 k)) (send (enc x2 k)) (recv (enc x1 x2 k)))
+    (non-orig (invk k))
+    (uniq-orig x1 x2))
+  (defrole resp
+    (vars (k akey) (y1 y2 y3 text))
+    (trace (recv (enc y1 k)) (recv (enc y2 k)) (send (enc y1 y3 k))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton deorig-contract
+  (vars (x1 x2 text) (k akey))
+  (defstrand init 3 (x1 x1) (x2 x2) (k k))
+  (defstrand resp 3 (y1 x1) (y2 x2) (y3 x2) (k k))
+  (precedes ((0 0) (1 0)) ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig (invk k))
+  (uniq-orig x1 x2)
+  (traces ((send (enc x1 k)) (send (enc x2 k)) (recv (enc x1 x2 k)))
+    ((recv (enc x1 k)) (recv (enc x2 k)) (send (enc x1 x2 k))))
+  (label 2)
+  (realized)
+  (shape)
+  (maps ((0 1) ((k k) (x1 x1) (x2 x2))))
+  (origs (x2 (0 1)) (x1 (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/deorig_mesg.tst b/tst/deorig_mesg.tst
--- a/tst/deorig_mesg.tst
+++ b/tst/deorig_mesg.tst
@@ -1,6 +1,6 @@
 (herald deorig-mesg)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/deorig_mesg.scm")
 
 (defprotocol deorig-mesg basic
diff --git a/tst/deorig_mesg_shapes.tst b/tst/deorig_mesg_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/deorig_mesg_shapes.tst
@@ -0,0 +1,66 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald deorig-mesg)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/deorig_mesg.scm")
+
+(defprotocol deorig-mesg basic
+  (defrole init
+    (vars (k akey) (x text))
+    (trace (send (enc x k)) (recv x))
+    (non-orig (invk k))
+    (uniq-orig x))
+  (defrole resp (vars (x mesg) (y text)) (trace (recv x) (send y)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton deorig-mesg
+  (vars (x text) (k akey))
+  (defstrand init 2 (x x) (k k))
+  (non-orig (invk k))
+  (uniq-orig x)
+  (traces ((send (enc x k)) (recv x)))
+  (label 0)
+  (unrealized (0 1))
+  (dead)
+  (origs (x (0 0)))
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol deorig-mesg basic
+  (defrole init
+    (vars (k akey) (x text))
+    (trace (send (enc x k)) (recv x))
+    (non-orig (invk k))
+    (uniq-orig x))
+  (defrole resp (vars (x mesg) (y text)) (trace (recv x) (send y)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton deorig-mesg
+  (vars (z text) (k akey))
+  (defstrand init 2 (x z) (k k))
+  (defstrand resp 2 (x (enc z k)) (y z))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk k))
+  (uniq-orig z)
+  (traces ((send (enc z k)) (recv z)) ((recv (enc z k)) (send z)))
+  (label 1)
+  (realized)
+  (shape)
+  (maps ((0 1) ((k k) (z z))))
+  (origs (z (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/deorig_simple.tst b/tst/deorig_simple.tst
--- a/tst/deorig_simple.tst
+++ b/tst/deorig_simple.tst
@@ -1,6 +1,6 @@
 (herald deorig-simple)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/deorig_simple.scm")
 
 (defprotocol deorig-simple basic
diff --git a/tst/deorig_simple_shapes.tst b/tst/deorig_simple_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/deorig_simple_shapes.tst
@@ -0,0 +1,70 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald deorig-simple)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/deorig_simple.scm")
+
+(defprotocol deorig-simple basic
+  (defrole init
+    (vars (k akey) (x text))
+    (trace (send (enc x k)) (recv x))
+    (non-orig (invk k))
+    (uniq-orig x))
+  (defrole resp
+    (vars (k akey) (x y text))
+    (trace (recv (enc x k)) (send y)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton deorig-simple
+  (vars (x text) (k akey))
+  (defstrand init 2 (x x) (k k))
+  (non-orig (invk k))
+  (uniq-orig x)
+  (traces ((send (enc x k)) (recv x)))
+  (label 0)
+  (unrealized (0 1))
+  (dead)
+  (origs (x (0 0)))
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol deorig-simple basic
+  (defrole init
+    (vars (k akey) (x text))
+    (trace (send (enc x k)) (recv x))
+    (non-orig (invk k))
+    (uniq-orig x))
+  (defrole resp
+    (vars (k akey) (x y text))
+    (trace (recv (enc x k)) (send y)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton deorig-simple
+  (vars (z text) (k akey))
+  (defstrand init 2 (x z) (k k))
+  (defstrand resp 2 (x z) (y z) (k k))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk k))
+  (uniq-orig z)
+  (traces ((send (enc z k)) (recv z)) ((recv (enc z k)) (send z)))
+  (label 1)
+  (realized)
+  (shape)
+  (maps ((0 1) ((k k) (z z))))
+  (origs (z (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/dh-ca_hack-uniq_cert.scm b/tst/dh-ca_hack-uniq_cert.scm
new file mode 100644
--- /dev/null
+++ b/tst/dh-ca_hack-uniq_cert.scm
@@ -0,0 +1,67 @@
+(herald dhca (algebra basic) (bound 12))
+
+(defmacro (CDH gx gy dhkey) (enc "dh" gx gy dhkey))
+
+(defprotocol dhca basic
+  (defrole init (vars (gx h akey) (dhkey skey) (a b ca name) (n text))
+    (trace
+     (recv (enc gx a (privk ca)))
+     (send (cat gx (enc gx a (privk ca))))
+     (recv (cat h (enc h b (privk ca)) (enc n (CDH gx h dhkey))))
+     (send (enc "check" n (CDH gx h dhkey))))
+    (non-orig (privk ca) dhkey))
+  (defrole resp (vars (gy h akey) (dhkey skey) (a b ca name) (n text))
+    (trace
+     (recv (enc gy b (privk ca)))
+     (recv (cat h (enc h a (privk ca))))
+     (send (cat gy (enc gy b (privk ca))
+		(enc n (CDH h gy dhkey))))
+     (recv (enc "check" n (CDH h gy dhkey))))
+    (non-orig (privk ca) dhkey))
+  (defrole ca (vars (subject ca name) (gz akey))
+    (trace
+     (send (enc gz subject (privk ca)) ))
+    (uniq-orig gz)
+    (non-orig (invk gz)))
+  (defrole CDHcalc1 (vars (gx gy akey) (dhkey skey))
+   (trace
+    (recv (cat gx (invk gy)))
+    (send (CDH gx gy dhkey))
+  ))
+  (defrole CDHcalc2 (vars (gx gy akey) (dhkey skey))
+   (trace
+    (recv (cat gy (invk gx)))
+    (send (CDH gx gy dhkey))
+  ))
+;  (comment "A diffie-hellman exchange which uses a certificate
+;    authority to certify long-term DH values.")
+)
+
+(defskeleton dhca
+  (vars )
+  (defstrand init 4 )
+(comment "Full initiator point-of-view.  No need to make extra assumptions."))
+
+(defskeleton dhca
+  (vars (n text))
+  (defstrand resp 4 (n n))
+  (uniq-orig n)
+  (comment "Full responder point of view with freshly chosen n")
+)
+
+(defskeleton dhca
+  (vars (n text))
+  (defstrand resp 4 (n n))
+  (deflistener n)
+  (uniq-orig n)
+  (comment "Full responder point of view with freshly chosen n")
+)
+
+(defskeleton dhca
+  (vars (a b ca name) (gx gy akey) (n text) (dhkey skey))
+  (defstrand init 4 (gx gx) (h gy) (ca ca) (a a) (b b) (n n) (dhkey dhkey))
+  (defstrand resp 4 (h gx) (gy gy) (ca ca) (a a) (b b) (n n) (dhkey dhkey))
+(uniq-orig n)
+;(comment "point of view in which init and resp each complete and
+;    they agree on the relevant parameters.")
+)
diff --git a/tst/dh-ca_hack-uniq_cert.tst b/tst/dh-ca_hack-uniq_cert.tst
new file mode 100644
--- /dev/null
+++ b/tst/dh-ca_hack-uniq_cert.tst
@@ -0,0 +1,1585 @@
+(herald dhca (algebra basic) (bound 12))
+
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/dh-ca_hack-uniq_cert.scm")
+
+(defprotocol dhca basic
+  (defrole init
+    (vars (gx h akey) (dhkey skey) (a b ca name) (n text))
+    (trace (recv (enc gx a (privk ca)))
+      (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    (non-orig dhkey (privk ca)))
+  (defrole resp
+    (vars (gy h akey) (dhkey skey) (a b ca name) (n text))
+    (trace (recv (enc gy b (privk ca)))
+      (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    (non-orig dhkey (privk ca)))
+  (defrole ca
+    (vars (subject ca name) (gz akey))
+    (trace (send (enc gz subject (privk ca))))
+    (non-orig (invk gz))
+    (uniq-orig gz))
+  (defrole CDHcalc1
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gx (invk gy))) (send (enc "dh" gx gy dhkey))))
+  (defrole CDHcalc2
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gy (invk gx))) (send (enc "dh" gx gy dhkey))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx h akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h h) (a a) (b b)
+    (ca ca))
+  (non-orig dhkey (privk ca))
+  (comment
+    "Full initiator point-of-view.  No need to make extra assumptions.")
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey)))))
+  (label 0)
+  (unrealized (0 0) (0 2))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx h akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (precedes ((1 0) (0 0)))
+  (non-orig dhkey (invk gx) (privk ca))
+  (uniq-orig gx)
+  (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
+    (0 0))
+  (strand-map 0)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    ((send (enc gx a (privk ca)))))
+  (label 1)
+  (parent 0)
+  (unrealized (0 2))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (precedes ((1 0) (0 0)))
+  (non-orig dhkey (invk gx) (privk ca))
+  (uniq-orig gx)
+  (operation encryption-test (displaced 2 1 ca 1) (enc h b (privk ca))
+    (0 2))
+  (strand-map 0 1)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a (privk ca)))))
+  (label 2)
+  (parent 1)
+  (unrealized (0 2))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx h akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand ca 1 (gz h) (subject b) (ca ca))
+  (precedes ((1 0) (0 0)) ((2 0) (0 2)))
+  (non-orig dhkey (invk gx) (invk h) (privk ca))
+  (uniq-orig gx h)
+  (operation encryption-test (added-strand ca 1) (enc h b (privk ca))
+    (0 2))
+  (strand-map 0 1)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    ((send (enc gx a (privk ca)))) ((send (enc h b (privk ca)))))
+  (label 3)
+  (parent 1)
+  (unrealized (0 2))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a ca a-0 b ca-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy gx) (h gx) (a a-0) (b b)
+    (ca ca-0))
+  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2)))
+  (non-orig dhkey (invk gx) (privk ca) (privk ca-0))
+  (uniq-orig gx)
+  (operation encryption-test (added-strand resp 3)
+    (enc n (enc "dh" gx gx dhkey)) (0 2))
+  (strand-map 0 1)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a (privk ca))))
+    ((recv (enc gx b (privk ca-0)))
+      (recv (cat gx (enc gx a-0 (privk ca-0))))
+      (send
+        (cat gx (enc gx b (privk ca-0))
+          (enc n (enc "dh" gx gx dhkey))))))
+  (label 4)
+  (parent 2)
+  (unrealized (2 0) (2 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (deflistener (enc "dh" gx gx dhkey))
+  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 2)))
+  (non-orig dhkey (invk gx) (privk ca))
+  (uniq-orig gx)
+  (operation encryption-test (added-listener (enc "dh" gx gx dhkey))
+    (enc n (enc "dh" gx gx dhkey)) (0 2))
+  (strand-map 0 1)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a (privk ca))))
+    ((recv (enc "dh" gx gx dhkey)) (send (enc "dh" gx gx dhkey))))
+  (label 5)
+  (parent 2)
+  (unrealized (2 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx h akey) (a b ca a-0 b-0 ca-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand ca 1 (gz h) (subject b) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy h) (h gx) (a a-0) (b b-0)
+    (ca ca-0))
+  (precedes ((1 0) (0 0)) ((1 0) (3 1)) ((2 0) (3 0)) ((3 2) (0 2)))
+  (non-orig dhkey (invk gx) (invk h) (privk ca) (privk ca-0))
+  (uniq-orig gx h)
+  (operation encryption-test (added-strand resp 3)
+    (enc n (enc "dh" gx h dhkey)) (0 2))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    ((send (enc gx a (privk ca)))) ((send (enc h b (privk ca))))
+    ((recv (enc h b-0 (privk ca-0)))
+      (recv (cat gx (enc gx a-0 (privk ca-0))))
+      (send
+        (cat h (enc h b-0 (privk ca-0))
+          (enc n (enc "dh" gx h dhkey))))))
+  (label 6)
+  (parent 3)
+  (unrealized (3 0) (3 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx h akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand ca 1 (gz h) (subject b) (ca ca))
+  (deflistener (enc "dh" gx h dhkey))
+  (precedes ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (3 0)) ((3 1) (0 2)))
+  (non-orig dhkey (invk gx) (invk h) (privk ca))
+  (uniq-orig gx h)
+  (operation encryption-test (added-listener (enc "dh" gx h dhkey))
+    (enc n (enc "dh" gx h dhkey)) (0 2))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    ((send (enc gx a (privk ca)))) ((send (enc h b (privk ca))))
+    ((recv (enc "dh" gx h dhkey)) (send (enc "dh" gx h dhkey))))
+  (label 7)
+  (parent 3)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a ca a-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy gx) (h gx) (a a-0) (b a)
+    (ca ca))
+  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2)))
+  (non-orig dhkey (invk gx) (privk ca))
+  (uniq-orig gx)
+  (operation encryption-test (displaced 3 1 ca 1)
+    (enc gx b (privk ca-0)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a (privk ca))))
+    ((recv (enc gx a (privk ca)))
+      (recv (cat gx (enc gx a-0 (privk ca))))
+      (send
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))))
+  (label 8)
+  (parent 4)
+  (unrealized (2 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx h akey) (a b ca a-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand ca 1 (gz h) (subject b) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy h) (h gx) (a a-0) (b b)
+    (ca ca))
+  (precedes ((1 0) (0 0)) ((1 0) (3 1)) ((2 0) (3 0)) ((3 2) (0 2)))
+  (non-orig dhkey (invk gx) (invk h) (privk ca))
+  (uniq-orig gx h)
+  (operation encryption-test (displaced 4 2 ca 1)
+    (enc h b-0 (privk ca-0)) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    ((send (enc gx a (privk ca)))) ((send (enc h b (privk ca))))
+    ((recv (enc h b (privk ca))) (recv (cat gx (enc gx a-0 (privk ca))))
+      (send
+        (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))))
+  (label 9)
+  (parent 6)
+  (unrealized (3 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy gx) (h gx) (a a) (b a)
+    (ca ca))
+  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2)))
+  (non-orig dhkey (invk gx) (privk ca))
+  (uniq-orig gx)
+  (operation encryption-test (displaced 3 1 ca 1)
+    (enc gx a-0 (privk ca)) (2 1))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a (privk ca))))
+    ((recv (enc gx a (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))))
+  (label 10)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps ((0) ((gx gx) (h gx) (dhkey dhkey) (a a) (b a) (ca ca) (n n))))
+  (origs (gx (1 0))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx h akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand ca 1 (gz h) (subject b) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy h) (h gx) (a a) (b b)
+    (ca ca))
+  (precedes ((1 0) (0 0)) ((1 0) (3 1)) ((2 0) (3 0)) ((3 2) (0 2)))
+  (non-orig dhkey (invk gx) (invk h) (privk ca))
+  (uniq-orig gx h)
+  (operation encryption-test (displaced 4 1 ca 1)
+    (enc gx a-0 (privk ca)) (3 1))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    ((send (enc gx a (privk ca)))) ((send (enc h b (privk ca))))
+    ((recv (enc h b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))))
+  (label 11)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps ((0) ((gx gx) (h h) (dhkey dhkey) (a a) (b b) (ca ca) (n n))))
+  (origs (gx (1 0)) (h (2 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhca basic
+  (defrole init
+    (vars (gx h akey) (dhkey skey) (a b ca name) (n text))
+    (trace (recv (enc gx a (privk ca)))
+      (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    (non-orig dhkey (privk ca)))
+  (defrole resp
+    (vars (gy h akey) (dhkey skey) (a b ca name) (n text))
+    (trace (recv (enc gy b (privk ca)))
+      (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    (non-orig dhkey (privk ca)))
+  (defrole ca
+    (vars (subject ca name) (gz akey))
+    (trace (send (enc gz subject (privk ca))))
+    (non-orig (invk gz))
+    (uniq-orig gz))
+  (defrole CDHcalc1
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gx (invk gy))) (send (enc "dh" gx gy dhkey))))
+  (defrole CDHcalc2
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gy (invk gx))) (send (enc "dh" gx gy dhkey))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (non-orig dhkey (privk ca))
+  (uniq-orig n)
+  (comment "Full responder point of view with freshly chosen n")
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey)))))
+  (label 12)
+  (unrealized (0 0) (0 1) (0 3))
+  (origs (n (0 2)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (precedes ((1 0) (0 0)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n gy)
+  (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
+    (0 0))
+  (strand-map 0)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    ((send (enc gy b (privk ca)))))
+  (label 13)
+  (parent 12)
+  (unrealized (0 1) (0 3))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (precedes ((1 0) (0 0)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n gy)
+  (operation encryption-test (displaced 2 1 ca 1) (enc h a (privk ca))
+    (0 1))
+  (strand-map 0 1)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca)))))
+  (label 14)
+  (parent 13)
+  (unrealized (0 3))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz h) (subject a) (ca ca))
+  (precedes ((1 0) (0 0)) ((2 0) (0 1)))
+  (non-orig dhkey (invk gy) (invk h) (privk ca))
+  (uniq-orig n gy h)
+  (operation encryption-test (added-strand ca 1) (enc h a (privk ca))
+    (0 1))
+  (strand-map 0 1)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc h a (privk ca)))))
+  (label 15)
+  (parent 13)
+  (unrealized (0 3))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca a b-0 ca-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b b-0)
+    (ca ca-0))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 3) (0 3)))
+  (non-orig dhkey (invk gy) (privk ca) (privk ca-0))
+  (uniq-orig n gy)
+  (operation encryption-test (added-strand init 4)
+    (enc "check" n (enc "dh" gy gy dhkey)) (0 3))
+  (strand-map 0 1)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy a (privk ca-0)))
+      (send (cat gy (enc gy a (privk ca-0))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca-0))
+          (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey)))))
+  (label 16)
+  (parent 14)
+  (unrealized (2 0) (2 2))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (deflistener (enc "dh" gy gy dhkey))
+  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 3)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n gy)
+  (operation encryption-test (added-listener (enc "dh" gy gy dhkey))
+    (enc "check" n (enc "dh" gy gy dhkey)) (0 3))
+  (strand-map 0 1)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc "dh" gy gy dhkey)) (send (enc "dh" gy gy dhkey))))
+  (label 17)
+  (parent 14)
+  (unrealized (2 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca a-0 b-0 ca-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz h) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h gy) (a a-0) (b b-0)
+    (ca ca-0))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((2 0) (0 1)) ((2 0) (3 0))
+    ((3 3) (0 3)))
+  (non-orig dhkey (invk gy) (invk h) (privk ca) (privk ca-0))
+  (uniq-orig n gy h)
+  (operation encryption-test (added-strand init 4)
+    (enc "check" n (enc "dh" h gy dhkey)) (0 3))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc h a (privk ca))))
+    ((recv (enc h a-0 (privk ca-0)))
+      (send (cat h (enc h a-0 (privk ca-0))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca-0))
+          (enc n (enc "dh" h gy dhkey))))
+      (send (enc "check" n (enc "dh" h gy dhkey)))))
+  (label 18)
+  (parent 15)
+  (unrealized (3 0) (3 2))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz h) (subject a) (ca ca))
+  (deflistener (enc "dh" h gy dhkey))
+  (precedes ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (0 1)) ((2 0) (3 0))
+    ((3 1) (0 3)))
+  (non-orig dhkey (invk gy) (invk h) (privk ca))
+  (uniq-orig n gy h)
+  (operation encryption-test (added-listener (enc "dh" h gy dhkey))
+    (enc "check" n (enc "dh" h gy dhkey)) (0 3))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc h a (privk ca))))
+    ((recv (enc "dh" h gy dhkey)) (send (enc "dh" h gy dhkey))))
+  (label 19)
+  (parent 15)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca b-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b-0)
+    (ca ca))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 3) (0 3)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n gy)
+  (operation encryption-test (displaced 3 1 ca 1)
+    (enc gy a (privk ca-0)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey)))))
+  (label 20)
+  (parent 16)
+  (unrealized (2 2))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca b-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz h) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h gy) (a a) (b b-0)
+    (ca ca))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((2 0) (0 1)) ((2 0) (3 0))
+    ((3 3) (0 3)))
+  (non-orig dhkey (invk gy) (invk h) (privk ca))
+  (uniq-orig n gy h)
+  (operation encryption-test (displaced 4 2 ca 1)
+    (enc h a-0 (privk ca-0)) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc h a (privk ca))))
+    ((recv (enc h a (privk ca))) (send (cat h (enc h a (privk ca))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (send (enc "check" n (enc "dh" h gy dhkey)))))
+  (label 21)
+  (parent 18)
+  (unrealized (3 2))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 3) (0 3)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n gy)
+  (operation encryption-test (displaced 3 1 ca 1)
+    (enc gy b-0 (privk ca)) (2 2))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey)))))
+  (label 22)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (gy gy) (h gy) (dhkey dhkey) (a b) (b b) (ca ca))))
+  (origs (gy (1 0)) (n (0 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz h) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h gy) (a a) (b b)
+    (ca ca))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((2 0) (0 1)) ((2 0) (3 0))
+    ((3 3) (0 3)))
+  (non-orig dhkey (invk gy) (invk h) (privk ca))
+  (uniq-orig n gy h)
+  (operation encryption-test (displaced 4 1 ca 1)
+    (enc gy b-0 (privk ca)) (3 2))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc h a (privk ca))))
+    ((recv (enc h a (privk ca))) (send (cat h (enc h a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (send (enc "check" n (enc "dh" h gy dhkey)))))
+  (label 23)
+  (parent 21)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (gy gy) (h h) (dhkey dhkey) (a a) (b b) (ca ca))))
+  (origs (gy (1 0)) (h (2 0)) (n (0 2))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhca basic
+  (defrole init
+    (vars (gx h akey) (dhkey skey) (a b ca name) (n text))
+    (trace (recv (enc gx a (privk ca)))
+      (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    (non-orig dhkey (privk ca)))
+  (defrole resp
+    (vars (gy h akey) (dhkey skey) (a b ca name) (n text))
+    (trace (recv (enc gy b (privk ca)))
+      (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    (non-orig dhkey (privk ca)))
+  (defrole ca
+    (vars (subject ca name) (gz akey))
+    (trace (send (enc gz subject (privk ca))))
+    (non-orig (invk gz))
+    (uniq-orig gz))
+  (defrole CDHcalc1
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gx (invk gy))) (send (enc "dh" gx gy dhkey))))
+  (defrole CDHcalc2
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gy (invk gx))) (send (enc "dh" gx gy dhkey))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (deflistener n)
+  (non-orig dhkey (privk ca))
+  (uniq-orig n)
+  (comment "Full responder point of view with freshly chosen n")
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey)))) ((recv n) (send n)))
+  (label 24)
+  (unrealized (0 0) (0 1) (0 3) (1 0))
+  (preskeleton)
+  (origs (n (0 2)))
+  (comment "Not a skeleton"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (deflistener n)
+  (precedes ((0 2) (1 0)))
+  (non-orig dhkey (privk ca))
+  (uniq-orig n)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey)))) ((recv n) (send n)))
+  (label 25)
+  (parent 24)
+  (unrealized (0 0) (0 1) (0 3) (1 0))
+  (origs (n (0 2)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca a-0 b-0 ca-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (deflistener n)
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h gy) (a a-0) (b b-0)
+    (ca ca-0))
+  (precedes ((0 2) (2 2)) ((2 3) (1 0)))
+  (non-orig dhkey (privk ca) (privk ca-0))
+  (uniq-orig n)
+  (operation nonce-test (added-strand init 4) n (1 0)
+    (enc n (enc "dh" h gy dhkey)))
+  (strand-map 0 1)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey)))) ((recv n) (send n))
+    ((recv (enc h a-0 (privk ca-0)))
+      (send (cat h (enc h a-0 (privk ca-0))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca-0))
+          (enc n (enc "dh" h gy dhkey))))
+      (send (enc "check" n (enc "dh" h gy dhkey)))))
+  (label 26)
+  (parent 25)
+  (unrealized (0 0) (0 1) (0 3) (1 0) (2 0) (2 2))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (deflistener n)
+  (deflistener (enc "dh" h gy dhkey))
+  (precedes ((0 2) (1 0)) ((2 1) (1 0)))
+  (non-orig dhkey (privk ca))
+  (uniq-orig n)
+  (operation nonce-test (added-listener (enc "dh" h gy dhkey)) n (1 0)
+    (enc n (enc "dh" h gy dhkey)))
+  (strand-map 0 1)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey)))) ((recv n) (send n))
+    ((recv (enc "dh" h gy dhkey)) (send (enc "dh" h gy dhkey))))
+  (label 27)
+  (parent 25)
+  (unrealized (0 0) (0 1) (0 3) (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca a-0 b-0 ca-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (deflistener n)
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h gy) (a a-0) (b b-0)
+    (ca ca-0))
+  (defstrand ca 1 (gz h) (subject a-0) (ca ca-0))
+  (precedes ((0 2) (2 2)) ((2 3) (1 0)) ((3 0) (0 1)) ((3 0) (2 0)))
+  (non-orig dhkey (invk h) (privk ca) (privk ca-0))
+  (uniq-orig n h)
+  (operation encryption-test (added-strand ca 1)
+    (enc h a-0 (privk ca-0)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey)))) ((recv n) (send n))
+    ((recv (enc h a-0 (privk ca-0)))
+      (send (cat h (enc h a-0 (privk ca-0))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca-0))
+          (enc n (enc "dh" h gy dhkey))))
+      (send (enc "check" n (enc "dh" h gy dhkey))))
+    ((send (enc h a-0 (privk ca-0)))))
+  (label 28)
+  (parent 26)
+  (unrealized (0 0) (0 1) (0 3) (1 0) (2 2))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (deflistener n)
+  (deflistener (enc "dh" h gy dhkey))
+  (defstrand CDHcalc1 2 (dhkey dhkey) (gx h) (gy gy))
+  (precedes ((0 2) (1 0)) ((2 1) (1 0)) ((3 1) (2 0)))
+  (non-orig dhkey (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand CDHcalc1 2)
+    (enc "dh" h gy dhkey) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey)))) ((recv n) (send n))
+    ((recv (enc "dh" h gy dhkey)) (send (enc "dh" h gy dhkey)))
+    ((recv (cat h (invk gy))) (send (enc "dh" h gy dhkey))))
+  (label 29)
+  (parent 27)
+  (unrealized (0 0) (0 1) (0 3))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (deflistener n)
+  (deflistener (enc "dh" h gy dhkey))
+  (defstrand CDHcalc2 2 (dhkey dhkey) (gx h) (gy gy))
+  (precedes ((0 2) (1 0)) ((2 1) (1 0)) ((3 1) (2 0)))
+  (non-orig dhkey (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand CDHcalc2 2)
+    (enc "dh" h gy dhkey) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey)))) ((recv n) (send n))
+    ((recv (enc "dh" h gy dhkey)) (send (enc "dh" h gy dhkey)))
+    ((recv (cat gy (invk h))) (send (enc "dh" h gy dhkey))))
+  (label 30)
+  (parent 27)
+  (unrealized (0 0) (0 1) (0 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (h akey) (a b ca a-0 ca-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy h) (h h) (a a) (b b)
+    (ca ca))
+  (deflistener n)
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h h) (a a-0) (b a-0)
+    (ca ca-0))
+  (defstrand ca 1 (gz h) (subject a-0) (ca ca-0))
+  (precedes ((0 2) (2 2)) ((2 3) (1 0)) ((3 0) (0 0)) ((3 0) (2 0)))
+  (non-orig dhkey (invk h) (privk ca) (privk ca-0))
+  (uniq-orig n h)
+  (operation encryption-test (displaced 4 3 ca 1)
+    (enc gy b-0 (privk ca-0)) (2 2))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (enc h b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send (cat h (enc h b (privk ca)) (enc n (enc "dh" h h dhkey))))
+      (recv (enc "check" n (enc "dh" h h dhkey)))) ((recv n) (send n))
+    ((recv (enc h a-0 (privk ca-0)))
+      (send (cat h (enc h a-0 (privk ca-0))))
+      (recv
+        (cat h (enc h a-0 (privk ca-0)) (enc n (enc "dh" h h dhkey))))
+      (send (enc "check" n (enc "dh" h h dhkey))))
+    ((send (enc h a-0 (privk ca-0)))))
+  (label 31)
+  (parent 28)
+  (unrealized (0 0) (0 1) (0 3) (1 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca a-0 b-0 ca-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (deflistener n)
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h gy) (a a-0) (b b-0)
+    (ca ca-0))
+  (defstrand ca 1 (gz h) (subject a-0) (ca ca-0))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca-0))
+  (precedes ((0 2) (2 2)) ((2 3) (1 0)) ((3 0) (0 1)) ((3 0) (2 0))
+    ((4 0) (0 0)))
+  (non-orig dhkey (invk gy) (invk h) (privk ca) (privk ca-0))
+  (uniq-orig n gy h)
+  (operation encryption-test (added-strand ca 1)
+    (enc gy b-0 (privk ca-0)) (2 2))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey)))) ((recv n) (send n))
+    ((recv (enc h a-0 (privk ca-0)))
+      (send (cat h (enc h a-0 (privk ca-0))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca-0))
+          (enc n (enc "dh" h gy dhkey))))
+      (send (enc "check" n (enc "dh" h gy dhkey))))
+    ((send (enc h a-0 (privk ca-0))))
+    ((send (enc gy b-0 (privk ca-0)))))
+  (label 32)
+  (parent 28)
+  (unrealized (0 0) (0 1) (0 3) (1 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (deflistener n)
+  (deflistener (enc "dh" h gy dhkey))
+  (defstrand CDHcalc2 2 (dhkey dhkey) (gx h) (gy gy))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (precedes ((0 2) (1 0)) ((2 1) (1 0)) ((3 1) (2 0)) ((4 0) (0 0))
+    ((4 0) (3 0)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n gy)
+  (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
+    (0 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey)))) ((recv n) (send n))
+    ((recv (enc "dh" h gy dhkey)) (send (enc "dh" h gy dhkey)))
+    ((recv (cat gy (invk h))) (send (enc "dh" h gy dhkey)))
+    ((send (enc gy b (privk ca)))))
+  (label 33)
+  (parent 30)
+  (unrealized (0 1) (0 3))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (h akey) (a b ca a-0 ca-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy h) (h h) (a a) (b b)
+    (ca ca))
+  (deflistener n)
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h h) (a a-0) (b a-0)
+    (ca ca-0))
+  (defstrand ca 1 (gz h) (subject a-0) (ca ca-0))
+  (deflistener (enc "dh" h h dhkey))
+  (precedes ((0 2) (2 2)) ((2 3) (1 0)) ((3 0) (0 0)) ((3 0) (2 0))
+    ((3 0) (4 0)) ((4 1) (1 0)))
+  (non-orig dhkey (invk h) (privk ca) (privk ca-0))
+  (uniq-orig n h)
+  (operation nonce-test (added-listener (enc "dh" h h dhkey)) n (1 0)
+    (enc n (enc "dh" h h dhkey)) (enc "check" n (enc "dh" h h dhkey)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (enc h b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send (cat h (enc h b (privk ca)) (enc n (enc "dh" h h dhkey))))
+      (recv (enc "check" n (enc "dh" h h dhkey)))) ((recv n) (send n))
+    ((recv (enc h a-0 (privk ca-0)))
+      (send (cat h (enc h a-0 (privk ca-0))))
+      (recv
+        (cat h (enc h a-0 (privk ca-0)) (enc n (enc "dh" h h dhkey))))
+      (send (enc "check" n (enc "dh" h h dhkey))))
+    ((send (enc h a-0 (privk ca-0))))
+    ((recv (enc "dh" h h dhkey)) (send (enc "dh" h h dhkey))))
+  (label 34)
+  (parent 31)
+  (unrealized (0 0) (0 1) (0 3) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca a-0 b-0 ca-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (deflistener n)
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h gy) (a a-0) (b b-0)
+    (ca ca-0))
+  (defstrand ca 1 (gz h) (subject a-0) (ca ca-0))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca-0))
+  (deflistener (enc "dh" h gy dhkey))
+  (precedes ((0 2) (2 2)) ((2 3) (1 0)) ((3 0) (0 1)) ((3 0) (2 0))
+    ((3 0) (5 0)) ((4 0) (0 0)) ((4 0) (5 0)) ((5 1) (1 0)))
+  (non-orig dhkey (invk gy) (invk h) (privk ca) (privk ca-0))
+  (uniq-orig n gy h)
+  (operation nonce-test (added-listener (enc "dh" h gy dhkey)) n (1 0)
+    (enc n (enc "dh" h gy dhkey)) (enc "check" n (enc "dh" h gy dhkey)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey)))) ((recv n) (send n))
+    ((recv (enc h a-0 (privk ca-0)))
+      (send (cat h (enc h a-0 (privk ca-0))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca-0))
+          (enc n (enc "dh" h gy dhkey))))
+      (send (enc "check" n (enc "dh" h gy dhkey))))
+    ((send (enc h a-0 (privk ca-0)))) ((send (enc gy b-0 (privk ca-0))))
+    ((recv (enc "dh" h gy dhkey)) (send (enc "dh" h gy dhkey))))
+  (label 35)
+  (parent 32)
+  (unrealized (0 0) (0 1) (0 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol dhca basic
+  (defrole init
+    (vars (gx h akey) (dhkey skey) (a b ca name) (n text))
+    (trace (recv (enc gx a (privk ca)))
+      (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    (non-orig dhkey (privk ca)))
+  (defrole resp
+    (vars (gy h akey) (dhkey skey) (a b ca name) (n text))
+    (trace (recv (enc gy b (privk ca)))
+      (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    (non-orig dhkey (privk ca)))
+  (defrole ca
+    (vars (subject ca name) (gz akey))
+    (trace (send (enc gz subject (privk ca))))
+    (non-orig (invk gz))
+    (uniq-orig gz))
+  (defrole CDHcalc1
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gx (invk gy))) (send (enc "dh" gx gy dhkey))))
+  (defrole CDHcalc2
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gy (invk gx))) (send (enc "dh" gx gy dhkey))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (non-orig dhkey (privk ca))
+  (uniq-orig n)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey)))))
+  (label 36)
+  (unrealized (0 0) (0 2) (1 0) (1 1) (1 3))
+  (preskeleton)
+  (origs (n (1 2)))
+  (comment "Not a skeleton"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (precedes ((1 2) (0 2)))
+  (non-orig dhkey (privk ca))
+  (uniq-orig n)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey)))))
+  (label 37)
+  (parent 36)
+  (unrealized (0 0) (1 0) (1 1) (1 3))
+  (origs (n (1 2)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (precedes ((1 2) (0 2)) ((2 0) (1 0)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n gy)
+  (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
+    (1 0))
+  (strand-map 0 1)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))))
+  (label 38)
+  (parent 37)
+  (unrealized (0 0) (1 1) (1 3))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (precedes ((1 2) (0 2)) ((2 0) (0 0)) ((2 0) (1 0)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n gy)
+  (operation encryption-test (displaced 3 2 ca 1) (enc gx a (privk ca))
+    (1 1))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca)))))
+  (label 39)
+  (parent 38)
+  (unrealized (1 3))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (precedes ((1 2) (0 2)) ((2 0) (1 0)) ((3 0) (0 0)) ((3 0) (1 1)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca))
+  (uniq-orig n gx gy)
+  (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
+    (1 1))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca)))))
+  (label 40)
+  (parent 38)
+  (unrealized (1 3))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (precedes ((0 3) (1 3)) ((1 2) (0 2)) ((2 0) (0 0)) ((2 0) (1 0)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n gy)
+  (operation encryption-test (displaced 3 0 init 4)
+    (enc "check" n (enc "dh" gy gy dhkey)) (1 3))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca)))))
+  (label 41)
+  (parent 39)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a b) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (gy (2 0)) (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca a b-0 ca-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b b-0)
+    (ca ca-0))
+  (precedes ((1 2) (0 2)) ((1 2) (3 2)) ((2 0) (0 0)) ((2 0) (1 0))
+    ((2 0) (3 0)) ((3 3) (1 3)))
+  (non-orig dhkey (invk gy) (privk ca) (privk ca-0))
+  (uniq-orig n gy)
+  (operation encryption-test (added-strand init 4)
+    (enc "check" n (enc "dh" gy gy dhkey)) (1 3))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy a (privk ca-0)))
+      (send (cat gy (enc gy a (privk ca-0))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca-0))
+          (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey)))))
+  (label 42)
+  (parent 39)
+  (unrealized (3 0) (3 2))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (deflistener (enc "dh" gy gy dhkey))
+  (precedes ((1 2) (0 2)) ((2 0) (0 0)) ((2 0) (1 0)) ((2 0) (3 0))
+    ((3 1) (1 3)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n gy)
+  (operation encryption-test (added-listener (enc "dh" gy gy dhkey))
+    (enc "check" n (enc "dh" gy gy dhkey)) (1 3))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc "dh" gy gy dhkey)) (send (enc "dh" gy gy dhkey))))
+  (label 43)
+  (parent 39)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (precedes ((0 3) (1 3)) ((1 2) (0 2)) ((2 0) (1 0)) ((3 0) (0 0))
+    ((3 0) (1 1)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca))
+  (uniq-orig n gx gy)
+  (operation encryption-test (displaced 4 0 init 4)
+    (enc "check" n (enc "dh" gx gy dhkey)) (1 3))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca)))))
+  (label 44)
+  (parent 40)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gy) (n n) (dhkey dhkey))))
+  (origs (gx (3 0)) (gy (2 0)) (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca a-0 b-0 ca-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a-0) (b b-0)
+    (ca ca-0))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (0 0))
+    ((3 0) (1 1)) ((3 0) (4 0)) ((4 3) (1 3)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca) (privk ca-0))
+  (uniq-orig n gx gy)
+  (operation encryption-test (added-strand init 4)
+    (enc "check" n (enc "dh" gx gy dhkey)) (1 3))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a-0 (privk ca-0)))
+      (send (cat gx (enc gx a-0 (privk ca-0))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca-0))
+          (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey)))))
+  (label 45)
+  (parent 40)
+  (unrealized (4 0) (4 2))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (deflistener (enc "dh" gx gy dhkey))
+  (precedes ((1 2) (0 2)) ((2 0) (1 0)) ((2 0) (4 0)) ((3 0) (0 0))
+    ((3 0) (1 1)) ((3 0) (4 0)) ((4 1) (1 3)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca))
+  (uniq-orig n gx gy)
+  (operation encryption-test (added-listener (enc "dh" gx gy dhkey))
+    (enc "check" n (enc "dh" gx gy dhkey)) (1 3))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc "dh" gx gy dhkey)) (send (enc "dh" gx gy dhkey))))
+  (label 46)
+  (parent 40)
+  (unrealized (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca b-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b-0)
+    (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (3 2)) ((2 0) (0 0)) ((2 0) (1 0))
+    ((2 0) (3 0)) ((3 3) (1 3)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n gy)
+  (operation encryption-test (displaced 4 2 ca 1)
+    (enc gy a (privk ca-0)) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey)))))
+  (label 47)
+  (parent 42)
+  (unrealized (3 2))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca b-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b-0)
+    (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (0 0))
+    ((3 0) (1 1)) ((3 0) (4 0)) ((4 3) (1 3)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca))
+  (uniq-orig n gx gy)
+  (operation encryption-test (displaced 5 3 ca 1)
+    (enc gx a-0 (privk ca-0)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey)))))
+  (label 48)
+  (parent 45)
+  (unrealized (4 2))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (3 2)) ((2 0) (0 0)) ((2 0) (1 0))
+    ((2 0) (3 0)) ((3 3) (1 3)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n gy)
+  (operation encryption-test (displaced 4 2 ca 1)
+    (enc gy b-0 (privk ca)) (3 2))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey)))))
+  (label 49)
+  (parent 47)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a b) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (gy (2 0)) (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (0 0))
+    ((3 0) (1 1)) ((3 0) (4 0)) ((4 3) (1 3)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca))
+  (uniq-orig n gx gy)
+  (operation encryption-test (displaced 5 2 ca 1)
+    (enc gy b-0 (privk ca)) (4 2))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey)))))
+  (label 50)
+  (parent 48)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gy) (n n) (dhkey dhkey))))
+  (origs (gy (2 0)) (gx (3 0)) (n (1 2))))
+
+(comment "Nothing left to do")
diff --git a/tst/dh-ca_hack.tst b/tst/dh-ca_hack.tst
--- a/tst/dh-ca_hack.tst
+++ b/tst/dh-ca_hack.tst
@@ -1,6 +1,6 @@
 (herald dhca (algebra basic) (bound 12))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/dh-ca_hack.scm")
 
 (defprotocol dhca basic
@@ -61,6 +61,7 @@
   (non-orig dhkey (invk gx) (privk ca))
   (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
@@ -80,6 +81,7 @@
   (non-orig dhkey (invk gx) (privk ca))
   (operation encryption-test (displaced 2 1 ca 1) (enc h b (privk ca))
     (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -101,6 +103,7 @@
   (non-orig dhkey (invk gx) (invk h) (privk ca))
   (operation encryption-test (added-strand ca 1) (enc h b (privk ca))
     (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
@@ -122,6 +125,7 @@
   (non-orig dhkey (invk gx) (privk ca) (privk ca-0))
   (operation encryption-test (added-strand resp 3)
     (enc n (enc "dh" gx gx dhkey)) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -148,6 +152,7 @@
   (non-orig dhkey (invk gx) (privk ca))
   (operation encryption-test (added-listener (enc "dh" gx gx dhkey))
     (enc n (enc "dh" gx gx dhkey)) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -173,6 +178,7 @@
   (non-orig dhkey (invk gx) (invk h) (privk ca) (privk ca-0))
   (operation encryption-test (added-strand resp 3)
     (enc n (enc "dh" gx h dhkey)) (0 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
@@ -199,6 +205,7 @@
   (non-orig dhkey (invk gx) (invk h) (privk ca))
   (operation encryption-test (added-listener (enc "dh" gx h dhkey))
     (enc n (enc "dh" gx h dhkey)) (0 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
@@ -222,6 +229,7 @@
   (non-orig dhkey (invk gx) (privk ca))
   (operation encryption-test (displaced 3 1 ca 1)
     (enc gx b (privk ca-0)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -249,6 +257,7 @@
   (non-orig dhkey (invk gx) (privk ca) (privk ca-0))
   (operation encryption-test (added-strand ca 1) (enc gx b (privk ca-0))
     (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -278,6 +287,7 @@
   (non-orig dhkey (invk gx) (privk ca))
   (operation encryption-test (displaced 4 1 ca 1)
     (enc h b-0 (privk ca-0)) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -305,6 +315,7 @@
   (non-orig dhkey (invk gx) (invk h) (privk ca))
   (operation encryption-test (displaced 4 2 ca 1)
     (enc h b-0 (privk ca-0)) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
@@ -331,6 +342,7 @@
   (non-orig dhkey (invk gx) (invk h) (privk ca) (privk ca-0))
   (operation encryption-test (added-strand ca 1)
     (enc h b-0 (privk ca-0)) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
@@ -357,6 +369,7 @@
   (non-orig dhkey (invk gx) (privk ca))
   (operation encryption-test (displaced 3 1 ca 1)
     (enc gx a-0 (privk ca)) (2 1))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -385,6 +398,7 @@
   (non-orig dhkey (invk gx) (privk ca))
   (operation encryption-test (added-strand ca 1) (enc gx a-0 (privk ca))
     (2 1))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -415,6 +429,7 @@
   (non-orig dhkey (invk gx) (privk ca))
   (operation encryption-test (displaced 4 1 ca 1)
     (enc gx a-0 (privk ca-0)) (2 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -444,6 +459,7 @@
   (non-orig dhkey (invk gx) (privk ca) (privk ca-0))
   (operation encryption-test (displaced 4 3 ca 1)
     (enc gx a-0 (privk ca-0)) (2 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -476,6 +492,7 @@
   (non-orig dhkey (invk gx) (privk ca) (privk ca-0))
   (operation encryption-test (added-strand ca 1)
     (enc gx a-0 (privk ca-0)) (2 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -507,6 +524,7 @@
   (non-orig dhkey (invk gx) (privk ca))
   (operation encryption-test (displaced 4 1 ca 1)
     (enc gx a-0 (privk ca)) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -535,6 +553,7 @@
   (non-orig dhkey (invk gx) (privk ca))
   (operation encryption-test (displaced 4 2 ca 1)
     (enc gx a-0 (privk ca)) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -565,6 +584,7 @@
   (non-orig dhkey (invk gx) (privk ca))
   (operation encryption-test (added-strand ca 1) (enc gx a-0 (privk ca))
     (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -595,6 +615,7 @@
   (non-orig dhkey (invk gx) (invk h) (privk ca))
   (operation encryption-test (displaced 4 1 ca 1)
     (enc gx a-0 (privk ca)) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
@@ -622,6 +643,7 @@
   (non-orig dhkey (invk h) (privk ca))
   (operation encryption-test (displaced 4 2 ca 1)
     (enc gx a-0 (privk ca)) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc h a (privk ca))) (send (cat h (enc h a (privk ca))))
       (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" h h dhkey))))
@@ -649,6 +671,7 @@
   (non-orig dhkey (invk gx) (invk h) (privk ca))
   (operation encryption-test (added-strand ca 1) (enc gx a-0 (privk ca))
     (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
@@ -677,6 +700,7 @@
   (non-orig dhkey (invk h) (privk ca))
   (operation encryption-test (displaced 5 2 ca 1)
     (enc gx a-0 (privk ca-0)) (3 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc h a (privk ca))) (send (cat h (enc h a (privk ca))))
       (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" h h dhkey))))
@@ -707,6 +731,7 @@
   (non-orig dhkey (invk gx) (invk h) (privk ca))
   (operation encryption-test (displaced 5 1 ca 1)
     (enc gx a-0 (privk ca-0)) (3 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
@@ -736,6 +761,7 @@
   (non-orig dhkey (invk h) (privk ca) (privk ca-0))
   (operation encryption-test (displaced 5 4 ca 1)
     (enc gx a-0 (privk ca-0)) (3 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc h a (privk ca))) (send (cat h (enc h a (privk ca))))
       (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" h h dhkey))))
@@ -768,6 +794,7 @@
   (non-orig dhkey (invk gx) (invk h) (privk ca) (privk ca-0))
   (operation encryption-test (added-strand ca 1)
     (enc gx a-0 (privk ca-0)) (3 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
@@ -848,6 +875,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
     (0 0))
+  (strand-map 0)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -869,6 +897,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 2 1 ca 1) (enc h a (privk ca))
     (0 1))
+  (strand-map 0 1)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
       (send
@@ -891,6 +920,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc h a (privk ca))
     (0 1))
+  (strand-map 0 1)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -914,6 +944,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand init 4)
     (enc "check" n (enc "dh" gy gy dhkey)) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
       (send
@@ -942,6 +973,7 @@
   (uniq-orig n)
   (operation encryption-test (added-listener (enc "dh" gy gy dhkey))
     (enc "check" n (enc "dh" gy gy dhkey)) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
       (send
@@ -968,6 +1000,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand init 4)
     (enc "check" n (enc "dh" h gy dhkey)) (0 3))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -997,6 +1030,7 @@
   (uniq-orig n)
   (operation encryption-test (added-listener (enc "dh" h gy dhkey))
     (enc "check" n (enc "dh" h gy dhkey)) (0 3))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -1022,6 +1056,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 3 1 ca 1)
     (enc gy a (privk ca-0)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
       (send
@@ -1050,6 +1085,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy a (privk ca-0))
     (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
       (send
@@ -1082,6 +1118,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 4 1 ca 1)
     (enc h a-0 (privk ca-0)) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy a (privk ca))))
       (send
@@ -1111,6 +1148,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 4 2 ca 1)
     (enc h a-0 (privk ca-0)) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -1141,6 +1179,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1)
     (enc h a-0 (privk ca-0)) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -1171,6 +1210,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 3 1 ca 1)
     (enc gy b-0 (privk ca)) (2 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
       (send
@@ -1202,6 +1242,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy b-0 (privk ca))
     (2 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
       (send
@@ -1233,6 +1274,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 4 1 ca 1)
     (enc gy b-0 (privk ca-0)) (2 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
       (send
@@ -1264,6 +1306,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 4 3 ca 1)
     (enc gy b-0 (privk ca-0)) (2 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
       (send
@@ -1298,6 +1341,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1)
     (enc gy b-0 (privk ca-0)) (2 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
       (send
@@ -1332,6 +1376,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 4 1 ca 1)
     (enc gy b-0 (privk ca)) (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy a (privk ca))))
       (send
@@ -1363,6 +1408,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 4 2 ca 1)
     (enc gy b-0 (privk ca)) (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy a (privk ca))))
       (send
@@ -1395,6 +1441,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy b-0 (privk ca))
     (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy a (privk ca))))
       (send
@@ -1427,6 +1474,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 4 1 ca 1)
     (enc gy b-0 (privk ca)) (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -1458,6 +1506,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 4 2 ca 1)
     (enc gy b-0 (privk ca)) (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc h b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send (cat h (enc h b (privk ca)) (enc n (enc "dh" h h dhkey))))
@@ -1488,6 +1537,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy b-0 (privk ca))
     (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -1521,6 +1571,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 2 ca 1)
     (enc gy b-0 (privk ca-0)) (3 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc h b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send (cat h (enc h b (privk ca)) (enc n (enc "dh" h h dhkey))))
@@ -1552,6 +1603,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 1 ca 1)
     (enc gy b-0 (privk ca-0)) (3 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -1585,6 +1637,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 4 ca 1)
     (enc gy b-0 (privk ca-0)) (3 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc h b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send (cat h (enc h b (privk ca)) (enc n (enc "dh" h h dhkey))))
@@ -1619,6 +1672,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1)
     (enc gy b-0 (privk ca-0)) (3 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -1725,6 +1779,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand init 4) n (1 0)
     (enc n (enc "dh" h gy dhkey)))
+  (strand-map 0 1)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -1752,6 +1807,7 @@
   (uniq-orig n)
   (operation nonce-test (added-listener (enc "dh" h gy dhkey)) n (1 0)
     (enc n (enc "dh" h gy dhkey)))
+  (strand-map 0 1)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -1776,6 +1832,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1)
     (enc h a-0 (privk ca-0)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -1805,6 +1862,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand CDHcalc1 2)
     (enc "dh" h gy dhkey) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -1830,6 +1888,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand CDHcalc2 2)
     (enc "dh" h gy dhkey) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -1855,6 +1914,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 4 3 ca 1)
     (enc gy b-0 (privk ca-0)) (2 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc h b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send (cat h (enc h b (privk ca)) (enc n (enc "dh" h h dhkey))))
@@ -1884,6 +1944,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1)
     (enc gy b-0 (privk ca-0)) (2 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -1915,6 +1976,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
     (0 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -1943,6 +2005,7 @@
   (uniq-orig n)
   (operation nonce-test (added-listener (enc "dh" h h dhkey)) n (1 0)
     (enc n (enc "dh" h h dhkey)) (enc "check" n (enc "dh" h h dhkey)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc h b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send (cat h (enc h b (privk ca)) (enc n (enc "dh" h h dhkey))))
@@ -1976,6 +2039,7 @@
   (uniq-orig n)
   (operation nonce-test (added-listener (enc "dh" h gy dhkey)) n (1 0)
     (enc n (enc "dh" h gy dhkey)) (enc "check" n (enc "dh" h gy dhkey)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
       (send
@@ -2089,6 +2153,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
     (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -2116,6 +2181,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 3 2 ca 1) (enc gx a (privk ca))
     (1 1))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -2144,6 +2210,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
     (1 1))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -2171,6 +2238,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 3 0 init 4)
     (enc "check" n (enc "dh" gy gy dhkey)) (1 3))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -2200,6 +2268,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand init 4)
     (enc "check" n (enc "dh" gy gy dhkey)) (1 3))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -2234,6 +2303,7 @@
   (uniq-orig n)
   (operation encryption-test (added-listener (enc "dh" gy gy dhkey))
     (enc "check" n (enc "dh" gy gy dhkey)) (1 3))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -2264,6 +2334,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 4 0 init 4)
     (enc "check" n (enc "dh" gx gy dhkey)) (1 3))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -2295,6 +2366,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand init 4)
     (enc "check" n (enc "dh" gx gy dhkey)) (1 3))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -2330,6 +2402,7 @@
   (uniq-orig n)
   (operation encryption-test (added-listener (enc "dh" gx gy dhkey))
     (enc "check" n (enc "dh" gx gy dhkey)) (1 3))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -2359,6 +2432,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 3 2 ca 1) (enc gy b (privk ca))
     (0 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -2390,6 +2464,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
     (0 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -2423,6 +2498,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 4 2 ca 1)
     (enc gy a (privk ca-0)) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -2458,6 +2534,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy a (privk ca-0))
     (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -2494,6 +2571,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 4 2 ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -2507,6 +2585,8 @@
   (label 83)
   (parent 76)
   (seen 79)
+  (seen-ops
+    (79 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -2524,6 +2604,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 4 3 ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -2557,6 +2638,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -2592,6 +2674,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 2 ca 1)
     (enc gx a-0 (privk ca-0)) (4 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
       (recv
@@ -2627,6 +2710,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 3 ca 1)
     (enc gx a-0 (privk ca-0)) (4 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -2663,6 +2747,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1)
     (enc gx a-0 (privk ca-0)) (4 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -2700,6 +2785,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 4 2 ca 1)
     (enc gy b-0 (privk ca)) (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -2735,6 +2821,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy b-0 (privk ca))
     (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -2771,6 +2858,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 2 ca 1)
     (enc gy b-0 (privk ca-0)) (3 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -2807,6 +2895,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 4 ca 1)
     (enc gy b-0 (privk ca-0)) (3 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -2826,6 +2915,10 @@
   (label 92)
   (parent 82)
   (seen 110)
+  (seen-ops
+    (110
+      (operation encryption-test (displaced 5 4 ca 1)
+        (enc gy b (privk ca-0)) (0 0)) (strand-map 0 1 2 3 4)))
   (unrealized (0 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -2846,6 +2939,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1)
     (enc gy b-0 (privk ca-0)) (3 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -2884,6 +2978,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 2 ca 1)
     (enc gy b-0 (privk ca)) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
       (recv
@@ -2919,6 +3014,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 3 ca 1)
     (enc gy b-0 (privk ca)) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
       (recv
@@ -2936,6 +3032,10 @@
   (label 95)
   (parent 86)
   (seen 118)
+  (seen-ops
+    (118
+      (operation encryption-test (displaced 5 2 ca 1)
+        (enc gy a (privk ca)) (0 0)) (strand-map 0 1 2 3 4)))
   (unrealized (0 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -2956,6 +3056,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy b-0 (privk ca))
     (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
       (recv
@@ -2992,6 +3093,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 2 ca 1)
     (enc gy b-0 (privk ca)) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -3027,6 +3129,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 3 ca 1)
     (enc gy b-0 (privk ca)) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -3044,6 +3147,10 @@
   (label 98)
   (parent 87)
   (seen 127)
+  (seen-ops
+    (127
+      (operation encryption-test (displaced 5 2 ca 1)
+        (enc gx a (privk ca)) (0 0)) (strand-map 0 1 2 3 4)))
   (unrealized (0 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -3064,6 +3171,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy b-0 (privk ca))
     (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -3101,6 +3209,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 3 ca 1)
     (enc gy b-0 (privk ca-0)) (4 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -3139,6 +3248,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 2 ca 1)
     (enc gy b-0 (privk ca-0)) (4 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -3158,6 +3268,10 @@
   (label 101)
   (parent 88)
   (seen 137)
+  (seen-ops
+    (137
+      (operation encryption-test (displaced 6 2 ca 1)
+        (enc gx a-0 (privk ca)) (0 0)) (strand-map 0 1 2 3 4 5)))
   (unrealized (0 0))
   (comment "4 in cohort - 3 not yet seen"))
 
@@ -3178,6 +3292,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 5 ca 1)
     (enc gy b-0 (privk ca-0)) (4 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -3198,6 +3313,10 @@
   (label 102)
   (parent 88)
   (seen 138)
+  (seen-ops
+    (138
+      (operation encryption-test (displaced 6 5 ca 1)
+        (enc gx a-0 (privk ca-0)) (0 0)) (strand-map 0 1 2 3 4 5)))
   (unrealized (0 0))
   (comment "4 in cohort - 3 not yet seen"))
 
@@ -3219,6 +3338,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1)
     (enc gy b-0 (privk ca-0)) (4 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -3257,6 +3377,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 4 2 ca 1) (enc gy b (privk ca))
     (0 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -3295,6 +3416,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
     (0 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -3334,6 +3456,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 2 ca 1) (enc gy b (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -3373,6 +3496,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 4 ca 1)
     (enc gy b-0 (privk ca)) (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -3410,6 +3534,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -3449,6 +3574,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 2 ca 1) (enc gy b (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -3488,6 +3614,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 4 ca 1) (enc gy b (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
       (recv
@@ -3528,6 +3655,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -3567,6 +3695,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 2 ca 1) (enc gy b (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -3608,6 +3737,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -3649,6 +3779,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 4 ca 1)
     (enc gy b-0 (privk ca-0)) (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
       (recv
@@ -3689,6 +3820,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 2 ca 1) (enc gy b (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -3731,6 +3863,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 5 ca 1)
     (enc gy b-0 (privk ca-0)) (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -3769,6 +3902,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -3811,6 +3945,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 2 ca 1) (enc gy a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -3828,6 +3963,8 @@
   (label 118)
   (parent 94)
   (seen 104)
+  (seen-ops
+    (104 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3847,6 +3984,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 3 ca 1) (enc gy a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
       (recv
@@ -3886,6 +4024,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
       (recv
@@ -3925,6 +4064,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 3 ca 1) (enc gy a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
       (recv
@@ -3964,6 +4104,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
       (recv
@@ -4004,6 +4145,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 3 ca 1) (enc gy a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
       (recv
@@ -4044,6 +4186,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 2 ca 1) (enc gy a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -4062,6 +4205,9 @@
   (label 124)
   (parent 96)
   (seen 106)
+  (seen-ops
+    (106 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4082,6 +4228,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 5 ca 1) (enc gy a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gy b-0 (privk ca)))
       (send (cat gy (enc gy b-0 (privk ca))))
@@ -4122,6 +4269,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gy a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
       (recv
@@ -4161,6 +4309,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 2 ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -4196,6 +4345,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 3 ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -4235,6 +4385,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -4274,6 +4425,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 5 3 ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -4313,6 +4465,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -4353,6 +4506,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 3 ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -4393,6 +4547,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 2 ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -4430,6 +4585,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 5 ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gy b-0 (privk ca)))
       (send (cat gy (enc gy b-0 (privk ca))))
@@ -4471,6 +4627,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -4511,6 +4668,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 3 ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -4552,6 +4710,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 2 ca 1)
     (enc gx a-0 (privk ca)) (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gx b (privk ca))) (send (cat gx (enc gx b (privk ca))))
       (recv
@@ -4570,6 +4729,9 @@
   (label 137)
   (parent 100)
   (seen 109)
+  (seen-ops
+    (109 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4590,6 +4752,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 5 ca 1)
     (enc gx a-0 (privk ca)) (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -4631,6 +4794,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -4672,6 +4836,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 3 ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -4713,6 +4878,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 5 ca 1)
     (enc gx a-0 (privk ca)) (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -4754,6 +4920,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -4795,6 +4962,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 3 ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -4837,6 +5005,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 6 2 ca 1)
     (enc gx a-0 (privk ca)) (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gx b (privk ca))) (send (cat gx (enc gx b (privk ca))))
       (recv
@@ -4856,6 +5025,9 @@
   (label 144)
   (parent 102)
   (seen 112)
+  (seen-ops
+    (112 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4877,6 +5049,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -4920,6 +5093,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 7 3 ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -4964,6 +5138,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 7 2 ca 1)
     (enc gx a-0 (privk ca)) (0 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -4984,6 +5159,9 @@
   (label 147)
   (parent 103)
   (seen 115)
+  (seen-ops
+    (115 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5 6)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -5005,6 +5183,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 7 5 ca 1)
     (enc gx a-0 (privk ca-0)) (0 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -5046,6 +5225,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 7 6 ca 1)
     (enc gx a-0 (privk ca-0)) (0 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc gy b-0 (privk ca)))
       (send (cat gy (enc gy b-0 (privk ca))))
@@ -5087,6 +5267,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
     (0 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
       (recv
@@ -5128,6 +5309,7 @@
   (non-orig dhkey (invk gy) (privk ca))
   (uniq-orig n)
   (operation generalization weakened ((4 0) (3 2)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -5146,6 +5328,9 @@
   (label 151)
   (parent 107)
   (seen 105)
+  (seen-ops
+    (105 (operation generalization weakened ((4 0) (1 3)))
+      (strand-map 0 1 2 3 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -5165,6 +5350,7 @@
   (non-orig dhkey (invk gy) (privk ca))
   (uniq-orig n)
   (operation generalization weakened ((5 0) (3 2)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -5183,6 +5369,9 @@
   (label 152)
   (parent 116)
   (seen 111)
+  (seen-ops
+    (111 (operation generalization weakened ((5 0) (1 3)))
+      (strand-map 0 1 2 3 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -5202,6 +5391,7 @@
   (non-orig dhkey (invk gy) (privk ca))
   (uniq-orig n)
   (operation generalization weakened ((5 0) (4 2)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gy b-0 (privk ca)))
       (send (cat gy (enc gy b-0 (privk ca))))
@@ -5222,6 +5412,9 @@
   (label 153)
   (parent 125)
   (seen 122)
+  (seen-ops
+    (122 (operation generalization weakened ((5 0) (1 3)))
+      (strand-map 0 1 2 3 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -5240,6 +5433,7 @@
   (non-orig dhkey (invk gy) (privk ca))
   (uniq-orig n)
   (operation generalization weakened ((3 0) (1 1)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -5275,6 +5469,7 @@
   (non-orig dhkey (invk gy) (privk ca))
   (uniq-orig n)
   (operation generalization weakened ((3 0) (1 1)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -5311,6 +5506,7 @@
   (non-orig dhkey (invk gy) (privk ca))
   (uniq-orig n)
   (operation generalization weakened ((5 0) (4 2)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gy b-0 (privk ca)))
       (send (cat gy (enc gy b-0 (privk ca))))
@@ -5332,6 +5528,9 @@
   (label 156)
   (parent 134)
   (seen 131)
+  (seen-ops
+    (131 (operation generalization weakened ((5 0) (1 3)))
+      (strand-map 0 1 2 3 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -5352,6 +5551,7 @@
   (non-orig dhkey (invk gy) (privk ca))
   (uniq-orig n)
   (operation generalization weakened ((6 0) (4 2)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc gy b-0 (privk ca)))
       (send (cat gy (enc gy b-0 (privk ca))))
@@ -5372,6 +5572,9 @@
   (label 157)
   (parent 149)
   (seen 139)
+  (seen-ops
+    (139 (operation generalization weakened ((6 0) (1 3)))
+      (strand-map 0 1 2 3 4 5 6)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -5390,6 +5593,7 @@
   (non-orig dhkey (invk gy) (privk ca))
   (uniq-orig n)
   (operation generalization weakened ((3 0) (0 2)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
@@ -5407,6 +5611,9 @@
   (label 158)
   (parent 154)
   (seen 109)
+  (seen-ops
+    (109 (operation generalization separated b-0)
+      (strand-map 0 1 2 4 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -5426,6 +5633,7 @@
   (non-orig dhkey (invk gy) (privk ca))
   (uniq-orig n)
   (operation generalization weakened ((3 0) (0 2)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
       (recv
diff --git a/tst/dh-ca_hack_shapes.tst b/tst/dh-ca_hack_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/dh-ca_hack_shapes.tst
@@ -0,0 +1,2727 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald dhca (algebra basic) (bound 12))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/dh-ca_hack.scm")
+
+(comment "Strand count bounded at 12")
+
+(defprotocol dhca basic
+  (defrole init
+    (vars (gx h akey) (dhkey skey) (a b ca name) (n text))
+    (trace (recv (enc gx a (privk ca)))
+      (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    (non-orig dhkey (privk ca)))
+  (defrole resp
+    (vars (gy h akey) (dhkey skey) (a b ca name) (n text))
+    (trace (recv (enc gy b (privk ca)))
+      (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    (non-orig dhkey (privk ca)))
+  (defrole ca
+    (vars (subject ca name) (gz akey))
+    (trace (send (enc gz subject (privk ca))))
+    (non-orig (invk gz)))
+  (defrole CDHcalc1
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gx (invk gy))) (send (enc "dh" gx gy dhkey))))
+  (defrole CDHcalc2
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gy (invk gx))) (send (enc "dh" gx gy dhkey))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx h akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h h) (a a) (b b)
+    (ca ca))
+  (non-orig dhkey (privk ca))
+  (comment
+    "Full initiator point-of-view.  No need to make extra assumptions.")
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey)))))
+  (label 0)
+  (unrealized (0 0) (0 2))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy gx) (h gx) (a a) (b a)
+    (ca ca))
+  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2)))
+  (non-orig dhkey (invk gx) (privk ca))
+  (operation encryption-test (displaced 3 1 ca 1)
+    (enc gx a-0 (privk ca)) (2 1))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a (privk ca))))
+    ((recv (enc gx a (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))))
+  (label 13)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((gx gx) (h gx) (dhkey dhkey) (a a) (b a) (ca ca) (n n))))
+  (origs))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a ca a-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy gx) (h gx) (a a-0) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a-0) (ca ca))
+  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2)) ((3 0) (2 1)))
+  (non-orig dhkey (invk gx) (privk ca))
+  (operation encryption-test (added-strand ca 1) (enc gx a-0 (privk ca))
+    (2 1))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a (privk ca))))
+    ((recv (enc gx a (privk ca)))
+      (recv (cat gx (enc gx a-0 (privk ca))))
+      (send
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey)))))
+    ((send (enc gx a-0 (privk ca)))))
+  (label 14)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((gx gx) (h gx) (dhkey dhkey) (a a) (b a) (ca ca) (n n))))
+  (origs))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a ca b name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject b) (ca ca))
+  (precedes ((1 0) (0 0)) ((1 0) (2 1)) ((2 2) (0 2)) ((3 0) (2 0)))
+  (non-orig dhkey (invk gx) (privk ca))
+  (operation encryption-test (displaced 4 1 ca 1)
+    (enc gx a-0 (privk ca-0)) (2 1))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a (privk ca))))
+    ((recv (enc gx b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey)))))
+    ((send (enc gx b (privk ca)))))
+  (label 15)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((gx gx) (h gx) (dhkey dhkey) (a a) (b a) (ca ca) (n n))))
+  (origs))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a ca b ca-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy gx) (h gx) (a b) (b b)
+    (ca ca-0))
+  (defstrand ca 1 (gz gx) (subject b) (ca ca-0))
+  (precedes ((1 0) (0 0)) ((2 2) (0 2)) ((3 0) (2 0)))
+  (non-orig dhkey (invk gx) (privk ca) (privk ca-0))
+  (operation encryption-test (displaced 4 3 ca 1)
+    (enc gx a-0 (privk ca-0)) (2 1))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a (privk ca))))
+    ((recv (enc gx b (privk ca-0)))
+      (recv (cat gx (enc gx b (privk ca-0))))
+      (send
+        (cat gx (enc gx b (privk ca-0))
+          (enc n (enc "dh" gx gx dhkey)))))
+    ((send (enc gx b (privk ca-0)))))
+  (label 16)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((gx gx) (h gx) (dhkey dhkey) (a a) (b a) (ca ca) (n n))))
+  (origs))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a ca a-0 b ca-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy gx) (h gx) (a a-0) (b b)
+    (ca ca-0))
+  (defstrand ca 1 (gz gx) (subject b) (ca ca-0))
+  (defstrand ca 1 (gz gx) (subject a-0) (ca ca-0))
+  (precedes ((1 0) (0 0)) ((2 2) (0 2)) ((3 0) (2 0)) ((4 0) (2 1)))
+  (non-orig dhkey (invk gx) (privk ca) (privk ca-0))
+  (operation encryption-test (added-strand ca 1)
+    (enc gx a-0 (privk ca-0)) (2 1))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a (privk ca))))
+    ((recv (enc gx b (privk ca-0)))
+      (recv (cat gx (enc gx a-0 (privk ca-0))))
+      (send
+        (cat gx (enc gx b (privk ca-0))
+          (enc n (enc "dh" gx gx dhkey)))))
+    ((send (enc gx b (privk ca-0)))) ((send (enc gx a-0 (privk ca-0)))))
+  (label 17)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((gx gx) (h gx) (dhkey dhkey) (a a) (b a) (ca ca) (n n))))
+  (origs))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand ca 1 (gz gx) (subject b) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy gx) (h gx) (a a) (b a)
+    (ca ca))
+  (precedes ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (0 2)) ((3 2) (0 2)))
+  (non-orig dhkey (invk gx) (privk ca))
+  (operation encryption-test (displaced 4 1 ca 1)
+    (enc gx a-0 (privk ca)) (3 1))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a (privk ca)))) ((send (enc gx b (privk ca))))
+    ((recv (enc gx a (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))))
+  (label 18)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((gx gx) (h gx) (dhkey dhkey) (a a) (b b) (ca ca) (n n))))
+  (origs))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand ca 1 (gz gx) (subject b) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy gx) (h gx) (a b) (b a)
+    (ca ca))
+  (precedes ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (3 1)) ((3 2) (0 2)))
+  (non-orig dhkey (invk gx) (privk ca))
+  (operation encryption-test (displaced 4 2 ca 1)
+    (enc gx a-0 (privk ca)) (3 1))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a (privk ca)))) ((send (enc gx b (privk ca))))
+    ((recv (enc gx a (privk ca))) (recv (cat gx (enc gx b (privk ca))))
+      (send
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))))
+  (label 19)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((gx gx) (h gx) (dhkey dhkey) (a a) (b b) (ca ca) (n n))))
+  (origs))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a b ca a-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand ca 1 (gz gx) (subject b) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy gx) (h gx) (a a-0) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a-0) (ca ca))
+  (precedes ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (0 2)) ((3 2) (0 2))
+    ((4 0) (3 1)))
+  (non-orig dhkey (invk gx) (privk ca))
+  (operation encryption-test (added-strand ca 1) (enc gx a-0 (privk ca))
+    (3 1))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a (privk ca)))) ((send (enc gx b (privk ca))))
+    ((recv (enc gx a (privk ca)))
+      (recv (cat gx (enc gx a-0 (privk ca))))
+      (send
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey)))))
+    ((send (enc gx a-0 (privk ca)))))
+  (label 20)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((gx gx) (h gx) (dhkey dhkey) (a a) (b b) (ca ca) (n n))))
+  (origs))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx h akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand ca 1 (gz h) (subject b) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy h) (h gx) (a a) (b b)
+    (ca ca))
+  (precedes ((1 0) (0 0)) ((1 0) (3 1)) ((2 0) (3 0)) ((3 2) (0 2)))
+  (non-orig dhkey (invk gx) (invk h) (privk ca))
+  (operation encryption-test (displaced 4 1 ca 1)
+    (enc gx a-0 (privk ca)) (3 1))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    ((send (enc gx a (privk ca)))) ((send (enc h b (privk ca))))
+    ((recv (enc h b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))))
+  (label 21)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((gx gx) (h h) (dhkey dhkey) (a a) (b b) (ca ca) (n n))))
+  (origs))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (h akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz h) (subject a) (ca ca))
+  (defstrand ca 1 (gz h) (subject b) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy h) (h h) (a b) (b b)
+    (ca ca))
+  (precedes ((1 0) (0 0)) ((2 0) (3 0)) ((3 2) (0 2)))
+  (non-orig dhkey (invk h) (privk ca))
+  (operation encryption-test (displaced 4 2 ca 1)
+    (enc gx a-0 (privk ca)) (3 1))
+  (traces
+    ((recv (enc h a (privk ca))) (send (cat h (enc h a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" h h dhkey))))
+      (send (enc "check" n (enc "dh" h h dhkey))))
+    ((send (enc h a (privk ca)))) ((send (enc h b (privk ca))))
+    ((recv (enc h b (privk ca))) (recv (cat h (enc h b (privk ca))))
+      (send (cat h (enc h b (privk ca)) (enc n (enc "dh" h h dhkey))))))
+  (label 22)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((gx h) (h h) (dhkey dhkey) (a a) (b b) (ca ca) (n n))))
+  (origs))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx h akey) (a b ca a-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand ca 1 (gz h) (subject b) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy h) (h gx) (a a-0) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a-0) (ca ca))
+  (precedes ((1 0) (0 0)) ((2 0) (3 0)) ((3 2) (0 2)) ((4 0) (3 1)))
+  (non-orig dhkey (invk gx) (invk h) (privk ca))
+  (operation encryption-test (added-strand ca 1) (enc gx a-0 (privk ca))
+    (3 1))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    ((send (enc gx a (privk ca)))) ((send (enc h b (privk ca))))
+    ((recv (enc h b (privk ca))) (recv (cat gx (enc gx a-0 (privk ca))))
+      (send (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey)))))
+    ((send (enc gx a-0 (privk ca)))))
+  (label 23)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((gx gx) (h h) (dhkey dhkey) (a a) (b b) (ca ca) (n n))))
+  (origs))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (h akey) (a b ca b-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz h) (subject a) (ca ca))
+  (defstrand ca 1 (gz h) (subject b) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy h) (h h) (a b) (b b-0)
+    (ca ca))
+  (defstrand ca 1 (gz h) (subject b-0) (ca ca))
+  (precedes ((1 0) (0 0)) ((2 0) (3 1)) ((3 2) (0 2)) ((4 0) (3 0)))
+  (non-orig dhkey (invk h) (privk ca))
+  (operation encryption-test (displaced 5 2 ca 1)
+    (enc gx a-0 (privk ca-0)) (3 1))
+  (traces
+    ((recv (enc h a (privk ca))) (send (cat h (enc h a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" h h dhkey))))
+      (send (enc "check" n (enc "dh" h h dhkey))))
+    ((send (enc h a (privk ca)))) ((send (enc h b (privk ca))))
+    ((recv (enc h b-0 (privk ca))) (recv (cat h (enc h b (privk ca))))
+      (send
+        (cat h (enc h b-0 (privk ca)) (enc n (enc "dh" h h dhkey)))))
+    ((send (enc h b-0 (privk ca)))))
+  (label 24)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((gx h) (h h) (dhkey dhkey) (a a) (b b) (ca ca) (n n))))
+  (origs))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx h akey) (a b ca b-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand ca 1 (gz h) (subject b) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy h) (h gx) (a a) (b b-0)
+    (ca ca))
+  (defstrand ca 1 (gz h) (subject b-0) (ca ca))
+  (precedes ((1 0) (0 0)) ((1 0) (3 1)) ((2 0) (0 2)) ((3 2) (0 2))
+    ((4 0) (3 0)))
+  (non-orig dhkey (invk gx) (invk h) (privk ca))
+  (operation encryption-test (displaced 5 1 ca 1)
+    (enc gx a-0 (privk ca-0)) (3 1))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    ((send (enc gx a (privk ca)))) ((send (enc h b (privk ca))))
+    ((recv (enc h b-0 (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat h (enc h b-0 (privk ca)) (enc n (enc "dh" gx h dhkey)))))
+    ((send (enc h b-0 (privk ca)))))
+  (label 25)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((gx gx) (h h) (dhkey dhkey) (a a) (b b) (ca ca) (n n))))
+  (origs))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (h akey) (a b ca b-0 ca-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz h) (subject a) (ca ca))
+  (defstrand ca 1 (gz h) (subject b) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy h) (h h) (a b-0) (b b-0)
+    (ca ca-0))
+  (defstrand ca 1 (gz h) (subject b-0) (ca ca-0))
+  (precedes ((1 0) (0 0)) ((2 0) (0 2)) ((3 2) (0 2)) ((4 0) (3 0)))
+  (non-orig dhkey (invk h) (privk ca) (privk ca-0))
+  (operation encryption-test (displaced 5 4 ca 1)
+    (enc gx a-0 (privk ca-0)) (3 1))
+  (traces
+    ((recv (enc h a (privk ca))) (send (cat h (enc h a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" h h dhkey))))
+      (send (enc "check" n (enc "dh" h h dhkey))))
+    ((send (enc h a (privk ca)))) ((send (enc h b (privk ca))))
+    ((recv (enc h b-0 (privk ca-0)))
+      (recv (cat h (enc h b-0 (privk ca-0))))
+      (send
+        (cat h (enc h b-0 (privk ca-0)) (enc n (enc "dh" h h dhkey)))))
+    ((send (enc h b-0 (privk ca-0)))))
+  (label 26)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((gx h) (h h) (dhkey dhkey) (a a) (b b) (ca ca) (n n))))
+  (origs))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx h akey) (a b ca a-0 b-0 ca-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand ca 1 (gz h) (subject b) (ca ca))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gy h) (h gx) (a a-0) (b b-0)
+    (ca ca-0))
+  (defstrand ca 1 (gz h) (subject b-0) (ca ca-0))
+  (defstrand ca 1 (gz gx) (subject a-0) (ca ca-0))
+  (precedes ((1 0) (0 0)) ((2 0) (0 2)) ((3 2) (0 2)) ((4 0) (3 0))
+    ((5 0) (3 1)))
+  (non-orig dhkey (invk gx) (invk h) (privk ca) (privk ca-0))
+  (operation encryption-test (added-strand ca 1)
+    (enc gx a-0 (privk ca-0)) (3 1))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    ((send (enc gx a (privk ca)))) ((send (enc h b (privk ca))))
+    ((recv (enc h b-0 (privk ca-0)))
+      (recv (cat gx (enc gx a-0 (privk ca-0))))
+      (send
+        (cat h (enc h b-0 (privk ca-0)) (enc n (enc "dh" gx h dhkey)))))
+    ((send (enc h b-0 (privk ca-0))))
+    ((send (enc gx a-0 (privk ca-0)))))
+  (label 27)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((gx gx) (h h) (dhkey dhkey) (a a) (b b) (ca ca) (n n))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol dhca basic
+  (defrole init
+    (vars (gx h akey) (dhkey skey) (a b ca name) (n text))
+    (trace (recv (enc gx a (privk ca)))
+      (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    (non-orig dhkey (privk ca)))
+  (defrole resp
+    (vars (gy h akey) (dhkey skey) (a b ca name) (n text))
+    (trace (recv (enc gy b (privk ca)))
+      (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    (non-orig dhkey (privk ca)))
+  (defrole ca
+    (vars (subject ca name) (gz akey))
+    (trace (send (enc gz subject (privk ca))))
+    (non-orig (invk gz)))
+  (defrole CDHcalc1
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gx (invk gy))) (send (enc "dh" gx gy dhkey))))
+  (defrole CDHcalc2
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gy (invk gx))) (send (enc "dh" gx gy dhkey))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (non-orig dhkey (privk ca))
+  (uniq-orig n)
+  (comment "Full responder point of view with freshly chosen n")
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey)))))
+  (label 28)
+  (unrealized (0 0) (0 1) (0 3))
+  (origs (n (0 2)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 3) (0 3)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 3 1 ca 1)
+    (enc gy b-0 (privk ca)) (2 2))
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey)))))
+  (label 41)
+  (parent 28)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (gy gy) (h gy) (dhkey dhkey) (a b) (b b) (ca ca))))
+  (origs (n (0 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca b-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b-0)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 3) (0 3))
+    ((3 0) (2 2)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gy b-0 (privk ca))
+    (2 2))
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b-0 (privk ca)))))
+  (label 42)
+  (parent 28)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (gy gy) (h gy) (dhkey dhkey) (a b) (b b) (ca ca))))
+  (origs (n (0 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca a name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((2 3) (0 3)) ((3 0) (2 0)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 4 1 ca 1)
+    (enc gy b-0 (privk ca-0)) (2 2))
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy a (privk ca)))))
+  (label 43)
+  (parent 28)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (gy gy) (h gy) (dhkey dhkey) (a b) (b b) (ca ca))))
+  (origs (n (0 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca a ca-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b a)
+    (ca ca-0))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca-0))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((2 3) (0 3)) ((3 0) (2 0)))
+  (non-orig dhkey (invk gy) (privk ca) (privk ca-0))
+  (uniq-orig n)
+  (operation encryption-test (displaced 4 3 ca 1)
+    (enc gy b-0 (privk ca-0)) (2 2))
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy a (privk ca-0)))
+      (send (cat gy (enc gy a (privk ca-0))))
+      (recv
+        (cat gy (enc gy a (privk ca-0)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy a (privk ca-0)))))
+  (label 44)
+  (parent 28)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (gy gy) (h gy) (dhkey dhkey) (a b) (b b) (ca ca))))
+  (origs (n (0 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca a b-0 ca-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b b-0)
+    (ca ca-0))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca-0))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca-0))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((2 3) (0 3)) ((3 0) (2 0))
+    ((4 0) (2 2)))
+  (non-orig dhkey (invk gy) (privk ca) (privk ca-0))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1)
+    (enc gy b-0 (privk ca-0)) (2 2))
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy a (privk ca-0)))
+      (send (cat gy (enc gy a (privk ca-0))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca-0))
+          (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy a (privk ca-0)))) ((send (enc gy b-0 (privk ca-0)))))
+  (label 45)
+  (parent 28)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (gy gy) (h gy) (dhkey dhkey) (a b) (b b) (ca ca))))
+  (origs (n (0 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (a b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (0 1))
+    ((3 3) (0 3)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 4 1 ca 1)
+    (enc gy b-0 (privk ca)) (3 2))
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gy a (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey)))))
+  (label 46)
+  (parent 28)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (gy gy) (h gy) (dhkey dhkey) (a a) (b b) (ca ca))))
+  (origs (n (0 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (a b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b a)
+    (ca ca))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (0 1))
+    ((3 3) (0 3)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 4 2 ca 1)
+    (enc gy b-0 (privk ca)) (3 2))
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gy a (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy a (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey)))))
+  (label 47)
+  (parent 28)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (gy gy) (h gy) (dhkey dhkey) (a a) (b b) (ca ca))))
+  (origs (n (0 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (a b ca b-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b-0)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (0 1))
+    ((3 3) (0 3)) ((4 0) (3 2)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gy b-0 (privk ca))
+    (3 2))
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gy a (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b-0 (privk ca)))))
+  (label 48)
+  (parent 28)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (gy gy) (h gy) (dhkey dhkey) (a a) (b b) (ca ca))))
+  (origs (n (0 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz h) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h gy) (a a) (b b)
+    (ca ca))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((2 0) (0 1)) ((2 0) (3 0))
+    ((3 3) (0 3)))
+  (non-orig dhkey (invk gy) (invk h) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 4 1 ca 1)
+    (enc gy b-0 (privk ca)) (3 2))
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc h a (privk ca))))
+    ((recv (enc h a (privk ca))) (send (cat h (enc h a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (send (enc "check" n (enc "dh" h gy dhkey)))))
+  (label 49)
+  (parent 28)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (gy gy) (h h) (dhkey dhkey) (a a) (b b) (ca ca))))
+  (origs (n (0 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (h akey) (a b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy h) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz h) (subject b) (ca ca))
+  (defstrand ca 1 (gz h) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h h) (a a) (b a)
+    (ca ca))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((2 0) (0 1)) ((2 0) (3 0))
+    ((3 3) (0 3)))
+  (non-orig dhkey (invk h) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 4 2 ca 1)
+    (enc gy b-0 (privk ca)) (3 2))
+  (traces
+    ((recv (enc h b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send (cat h (enc h b (privk ca)) (enc n (enc "dh" h h dhkey))))
+      (recv (enc "check" n (enc "dh" h h dhkey))))
+    ((send (enc h b (privk ca)))) ((send (enc h a (privk ca))))
+    ((recv (enc h a (privk ca))) (send (cat h (enc h a (privk ca))))
+      (recv (cat h (enc h a (privk ca)) (enc n (enc "dh" h h dhkey))))
+      (send (enc "check" n (enc "dh" h h dhkey)))))
+  (label 50)
+  (parent 28)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (gy h) (h h) (dhkey dhkey) (a a) (b b) (ca ca))))
+  (origs (n (0 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca b-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz h) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h gy) (a a) (b b-0)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((2 0) (0 1)) ((2 0) (3 0))
+    ((3 3) (0 3)) ((4 0) (3 2)))
+  (non-orig dhkey (invk gy) (invk h) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gy b-0 (privk ca))
+    (3 2))
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc h a (privk ca))))
+    ((recv (enc h a (privk ca))) (send (cat h (enc h a (privk ca))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (send (enc "check" n (enc "dh" h gy dhkey))))
+    ((send (enc gy b-0 (privk ca)))))
+  (label 51)
+  (parent 28)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (gy gy) (h h) (dhkey dhkey) (a a) (b b) (ca ca))))
+  (origs (n (0 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (h akey) (a b ca a-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy h) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz h) (subject b) (ca ca))
+  (defstrand ca 1 (gz h) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h h) (a a-0) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz h) (subject a-0) (ca ca))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((2 0) (0 1)) ((3 3) (0 3))
+    ((4 0) (3 0)))
+  (non-orig dhkey (invk h) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 5 2 ca 1)
+    (enc gy b-0 (privk ca-0)) (3 2))
+  (traces
+    ((recv (enc h b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send (cat h (enc h b (privk ca)) (enc n (enc "dh" h h dhkey))))
+      (recv (enc "check" n (enc "dh" h h dhkey))))
+    ((send (enc h b (privk ca)))) ((send (enc h a (privk ca))))
+    ((recv (enc h a-0 (privk ca))) (send (cat h (enc h a-0 (privk ca))))
+      (recv (cat h (enc h a (privk ca)) (enc n (enc "dh" h h dhkey))))
+      (send (enc "check" n (enc "dh" h h dhkey))))
+    ((send (enc h a-0 (privk ca)))))
+  (label 52)
+  (parent 28)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (gy h) (h h) (dhkey dhkey) (a a) (b b) (ca ca))))
+  (origs (n (0 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca a-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz h) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h gy) (a a-0) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz h) (subject a-0) (ca ca))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((2 0) (0 1)) ((3 3) (0 3))
+    ((4 0) (3 0)))
+  (non-orig dhkey (invk gy) (invk h) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 5 1 ca 1)
+    (enc gy b-0 (privk ca-0)) (3 2))
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc h a (privk ca))))
+    ((recv (enc h a-0 (privk ca))) (send (cat h (enc h a-0 (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (send (enc "check" n (enc "dh" h gy dhkey))))
+    ((send (enc h a-0 (privk ca)))))
+  (label 53)
+  (parent 28)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (gy gy) (h h) (dhkey dhkey) (a a) (b b) (ca ca))))
+  (origs (n (0 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (h akey) (a b ca a-0 ca-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy h) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz h) (subject b) (ca ca))
+  (defstrand ca 1 (gz h) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h h) (a a-0) (b a-0)
+    (ca ca-0))
+  (defstrand ca 1 (gz h) (subject a-0) (ca ca-0))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((2 0) (0 1)) ((3 3) (0 3))
+    ((4 0) (3 0)))
+  (non-orig dhkey (invk h) (privk ca) (privk ca-0))
+  (uniq-orig n)
+  (operation encryption-test (displaced 5 4 ca 1)
+    (enc gy b-0 (privk ca-0)) (3 2))
+  (traces
+    ((recv (enc h b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send (cat h (enc h b (privk ca)) (enc n (enc "dh" h h dhkey))))
+      (recv (enc "check" n (enc "dh" h h dhkey))))
+    ((send (enc h b (privk ca)))) ((send (enc h a (privk ca))))
+    ((recv (enc h a-0 (privk ca-0)))
+      (send (cat h (enc h a-0 (privk ca-0))))
+      (recv
+        (cat h (enc h a-0 (privk ca-0)) (enc n (enc "dh" h h dhkey))))
+      (send (enc "check" n (enc "dh" h h dhkey))))
+    ((send (enc h a-0 (privk ca-0)))))
+  (label 54)
+  (parent 28)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (gy h) (h h) (dhkey dhkey) (a a) (b b) (ca ca))))
+  (origs (n (0 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca a-0 b-0 ca-0 name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz h) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx h) (h gy) (a a-0) (b b-0)
+    (ca ca-0))
+  (defstrand ca 1 (gz h) (subject a-0) (ca ca-0))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca-0))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((2 0) (0 1)) ((3 3) (0 3))
+    ((4 0) (3 0)) ((5 0) (3 2)))
+  (non-orig dhkey (invk gy) (invk h) (privk ca) (privk ca-0))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1)
+    (enc gy b-0 (privk ca-0)) (3 2))
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc h a (privk ca))))
+    ((recv (enc h a-0 (privk ca-0)))
+      (send (cat h (enc h a-0 (privk ca-0))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca-0))
+          (enc n (enc "dh" h gy dhkey))))
+      (send (enc "check" n (enc "dh" h gy dhkey))))
+    ((send (enc h a-0 (privk ca-0))))
+    ((send (enc gy b-0 (privk ca-0)))))
+  (label 55)
+  (parent 28)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (gy gy) (h h) (dhkey dhkey) (a a) (b b) (ca ca))))
+  (origs (n (0 2))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhca basic
+  (defrole init
+    (vars (gx h akey) (dhkey skey) (a b ca name) (n text))
+    (trace (recv (enc gx a (privk ca)))
+      (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    (non-orig dhkey (privk ca)))
+  (defrole resp
+    (vars (gy h akey) (dhkey skey) (a b ca name) (n text))
+    (trace (recv (enc gy b (privk ca)))
+      (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    (non-orig dhkey (privk ca)))
+  (defrole ca
+    (vars (subject ca name) (gz akey))
+    (trace (send (enc gz subject (privk ca))))
+    (non-orig (invk gz)))
+  (defrole CDHcalc1
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gx (invk gy))) (send (enc "dh" gx gy dhkey))))
+  (defrole CDHcalc2
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gy (invk gx))) (send (enc "dh" gx gy dhkey))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy h akey) (a b ca name))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h h) (a a) (b b)
+    (ca ca))
+  (deflistener n)
+  (non-orig dhkey (privk ca))
+  (uniq-orig n)
+  (comment "Full responder point of view with freshly chosen n")
+  (traces
+    ((recv (enc gy b (privk ca))) (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey)))) ((recv n) (send n)))
+  (label 56)
+  (unrealized (0 0) (0 1) (0 3) (1 0))
+  (preskeleton)
+  (origs (n (0 2)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol dhca basic
+  (defrole init
+    (vars (gx h akey) (dhkey skey) (a b ca name) (n text))
+    (trace (recv (enc gx a (privk ca)))
+      (send (cat gx (enc gx a (privk ca))))
+      (recv (cat h (enc h b (privk ca)) (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    (non-orig dhkey (privk ca)))
+  (defrole resp
+    (vars (gy h akey) (dhkey skey) (a b ca name) (n text))
+    (trace (recv (enc gy b (privk ca)))
+      (recv (cat h (enc h a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    (non-orig dhkey (privk ca)))
+  (defrole ca
+    (vars (subject ca name) (gz akey))
+    (trace (send (enc gz subject (privk ca))))
+    (non-orig (invk gz)))
+  (defrole CDHcalc1
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gx (invk gy))) (send (enc "dh" gx gy dhkey))))
+  (defrole CDHcalc2
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gy (invk gx))) (send (enc "dh" gx gy dhkey))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (non-orig dhkey (privk ca))
+  (uniq-orig n)
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey)))))
+  (label 68)
+  (unrealized (0 0) (0 2) (1 0) (1 1) (1 3))
+  (preskeleton)
+  (origs (n (1 2)))
+  (comment "Not a skeleton"))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (precedes ((0 3) (1 3)) ((1 2) (0 2)) ((2 0) (0 0)) ((2 0) (1 0)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 3 2 ca 1) (enc gy b (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca)))))
+  (label 79)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a b) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (precedes ((0 3) (1 3)) ((1 2) (0 2)) ((2 0) (1 0)) ((3 0) (0 0)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gy b (privk ca)))))
+  (label 80)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a b) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (precedes ((0 3) (1 3)) ((1 2) (0 2)) ((2 0) (1 0)) ((3 0) (0 0))
+    ((3 0) (1 1)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 4 3 ca 1) (enc gx a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca)))))
+  (label 84)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (precedes ((0 3) (1 3)) ((1 2) (0 2)) ((2 0) (1 0)) ((3 0) (1 1))
+    ((4 0) (0 0)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((send (enc gx a (privk ca)))))
+  (label 85)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (3 2)) ((2 0) (0 0)) ((2 0) (1 0))
+    ((2 0) (3 0)) ((3 3) (1 3)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 4 2 ca 1) (enc gy b (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey)))))
+  (label 104)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a b) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (3 2)) ((2 0) (1 0)) ((2 0) (3 0))
+    ((3 3) (1 3)) ((4 0) (0 0)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca)))))
+  (label 105)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a b) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca b-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b-0)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (3 2)) ((2 0) (0 0)) ((2 0) (1 0))
+    ((2 0) (3 0)) ((3 3) (1 3)) ((4 0) (3 2)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 5 2 ca 1) (enc gy b (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b-0 (privk ca)))))
+  (label 106)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a b) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca b-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b-0)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (3 2)) ((2 0) (1 0)) ((2 0) (3 0))
+    ((3 3) (1 3)) ((4 0) (3 2)) ((5 0) (0 0)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b-0 (privk ca)))) ((send (enc gy b (privk ca)))))
+  (label 108)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a b) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca a name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (3 2)) ((2 0) (0 0)) ((2 0) (1 0))
+    ((3 3) (1 3)) ((4 0) (3 0)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 5 2 ca 1) (enc gy b (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy a (privk ca)))))
+  (label 109)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a b) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (ca a name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b a)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a a) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (3 2)) ((2 0) (1 0)) ((3 3) (1 3))
+    ((4 0) (0 0)) ((4 0) (3 0)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 5 4 ca 1) (enc gy b (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
+      (recv
+        (cat gy (enc gy a (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy a (privk ca))) (recv (cat gy (enc gy a (privk ca))))
+      (send
+        (cat gy (enc gy a (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy a (privk ca))))
+    ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
+      (recv
+        (cat gy (enc gy a (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy a (privk ca)))))
+  (label 110)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b a) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca a name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (3 2)) ((2 0) (1 0)) ((3 3) (1 3))
+    ((4 0) (3 0)) ((5 0) (0 0)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy a (privk ca)))) ((send (enc gy b (privk ca)))))
+  (label 111)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a b) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca a ca-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b a)
+    (ca ca-0))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca-0))
+  (precedes ((1 2) (0 2)) ((1 2) (3 2)) ((2 0) (0 0)) ((2 0) (1 0))
+    ((3 3) (1 3)) ((4 0) (3 0)))
+  (non-orig dhkey (invk gy) (privk ca) (privk ca-0))
+  (uniq-orig n)
+  (operation encryption-test (displaced 5 2 ca 1) (enc gy b (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy a (privk ca-0)))
+      (send (cat gy (enc gy a (privk ca-0))))
+      (recv
+        (cat gy (enc gy a (privk ca-0)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy a (privk ca-0)))))
+  (label 112)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a b) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca a ca-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b a)
+    (ca ca-0))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca-0))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (3 2)) ((2 0) (1 0)) ((3 3) (1 3))
+    ((4 0) (3 0)) ((5 0) (0 0)))
+  (non-orig dhkey (invk gy) (privk ca) (privk ca-0))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy a (privk ca-0)))
+      (send (cat gy (enc gy a (privk ca-0))))
+      (recv
+        (cat gy (enc gy a (privk ca-0)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy a (privk ca-0)))) ((send (enc gy b (privk ca)))))
+  (label 113)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a b) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b a)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a a) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (3 2)) ((2 0) (1 0)) ((3 3) (1 3))
+    ((4 0) (0 0)) ((4 0) (3 0)) ((5 0) (3 2)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 6 4 ca 1)
+    (enc gy b-0 (privk ca-0)) (0 0))
+  (traces
+    ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
+      (recv
+        (cat gy (enc gy a (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy a (privk ca))) (recv (cat gy (enc gy a (privk ca))))
+      (send
+        (cat gy (enc gy a (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy a (privk ca))))
+    ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy a (privk ca)))) ((send (enc gy b (privk ca)))))
+  (label 114)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b a) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca a b-0 ca-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b b-0)
+    (ca ca-0))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca-0))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca-0))
+  (precedes ((1 2) (0 2)) ((1 2) (3 2)) ((2 0) (0 0)) ((2 0) (1 0))
+    ((3 3) (1 3)) ((4 0) (3 0)) ((5 0) (3 2)))
+  (non-orig dhkey (invk gy) (privk ca) (privk ca-0))
+  (uniq-orig n)
+  (operation encryption-test (displaced 6 2 ca 1) (enc gy b (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy a (privk ca-0)))
+      (send (cat gy (enc gy a (privk ca-0))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca-0))
+          (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy a (privk ca-0)))) ((send (enc gy b-0 (privk ca-0)))))
+  (label 115)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a b) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca a b-0 ca-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b b-0)
+    (ca ca-0))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca-0))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca-0))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (3 2)) ((2 0) (1 0)) ((3 3) (1 3))
+    ((4 0) (3 0)) ((5 0) (3 2)) ((6 0) (0 0)))
+  (non-orig dhkey (invk gy) (privk ca) (privk ca-0))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gy b (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca))))
+    ((recv (enc gy a (privk ca-0)))
+      (send (cat gy (enc gy a (privk ca-0))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca-0))
+          (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy a (privk ca-0)))) ((send (enc gy b-0 (privk ca-0))))
+    ((send (enc gy b (privk ca)))))
+  (label 117)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a b) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((2 0) (4 0))
+    ((3 0) (0 0)) ((3 0) (1 1)) ((4 3) (1 3)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 5 3 ca 1) (enc gy a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gy a (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey)))))
+  (label 119)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((2 0) (4 0))
+    ((3 0) (1 1)) ((4 3) (1 3)) ((5 0) (0 0)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gy a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gy a (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy a (privk ca)))))
+  (label 120)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b a)
+    (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((2 0) (4 0))
+    ((3 0) (0 0)) ((3 0) (1 1)) ((4 3) (1 3)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 5 3 ca 1) (enc gy a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gy a (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy a (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey)))))
+  (label 121)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((2 0) (4 0))
+    ((3 0) (1 1)) ((4 3) (1 3)) ((5 0) (0 0)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gy a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gy a (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy a (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy a (privk ca)))))
+  (label 122)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (a b ca b-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b-0)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((2 0) (4 0))
+    ((3 0) (0 0)) ((3 0) (1 1)) ((4 3) (1 3)) ((5 0) (4 2)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 6 3 ca 1) (enc gy a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gy a (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b-0 (privk ca)))))
+  (label 123)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (a b ca b-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b-0)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca))
+  (defstrand ca 1 (gz gy) (subject a) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((2 0) (4 0))
+    ((3 0) (1 1)) ((4 3) (1 3)) ((5 0) (4 2)) ((6 0) (0 0)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gy a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gy a (privk ca))) (send (cat gy (enc gy a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gy a (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b-0 (privk ca)))) ((send (enc gy a (privk ca)))))
+  (label 126)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (0 0))
+    ((3 0) (1 1)) ((3 0) (4 0)) ((4 3) (1 3)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 5 3 ca 1) (enc gx a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey)))))
+  (label 128)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (1 1))
+    ((3 0) (4 0)) ((4 3) (1 3)) ((5 0) (0 0)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gx a (privk ca)))))
+  (label 129)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b a)
+    (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (0 0))
+    ((3 0) (1 1)) ((3 0) (4 0)) ((4 3) (1 3)))
+  (non-orig dhkey (invk gx) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 5 3 ca 1) (enc gx a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((recv (enc gx b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (recv (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey)))))
+  (label 130)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gx) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a b ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (1 1))
+    ((3 0) (4 0)) ((4 3) (1 3)) ((5 0) (0 0)))
+  (non-orig dhkey (invk gx) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((recv (enc gx b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (recv (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a (privk ca)))))
+  (label 131)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gx) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca b-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b-0)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (0 0))
+    ((3 0) (1 1)) ((3 0) (4 0)) ((4 3) (1 3)) ((5 0) (4 2)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 6 3 ca 1) (enc gx a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b-0 (privk ca)))))
+  (label 132)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca b-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b-0)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (1 1))
+    ((3 0) (4 0)) ((4 3) (1 3)) ((5 0) (4 2)) ((6 0) (0 0)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b-0 (privk ca)))) ((send (enc gx a (privk ca)))))
+  (label 135)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a b ca a-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a-0) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a-0) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (0 0))
+    ((3 0) (1 1)) ((4 3) (1 3)) ((5 0) (4 0)))
+  (non-orig dhkey (invk gx) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 6 3 ca 1) (enc gx a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((recv (enc gx b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (recv (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a-0 (privk ca)))
+      (send (cat gx (enc gx a-0 (privk ca))))
+      (recv
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a-0 (privk ca)))))
+  (label 136)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gx) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (b ca a name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (1 1))
+    ((4 3) (1 3)) ((5 0) (0 0)) ((5 0) (4 0)))
+  (non-orig dhkey (invk gx) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 6 5 ca 1)
+    (enc gx a-0 (privk ca)) (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((recv (enc gx b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (recv (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a (privk ca)))))
+  (label 138)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gx) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a b ca a-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a-0) (b a)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a-0) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (1 1))
+    ((4 3) (1 3)) ((5 0) (4 0)) ((6 0) (0 0)))
+  (non-orig dhkey (invk gx) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((recv (enc gx b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (recv (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a-0 (privk ca)))
+      (send (cat gx (enc gx a-0 (privk ca))))
+      (recv
+        (cat gx (enc gx a (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a-0 (privk ca)))) ((send (enc gx a (privk ca)))))
+  (label 139)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gx) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca a-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a-0) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a-0) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (0 0))
+    ((3 0) (1 1)) ((4 3) (1 3)) ((5 0) (4 0)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 6 3 ca 1) (enc gx a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a-0 (privk ca)))
+      (send (cat gx (enc gx a-0 (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gx a-0 (privk ca)))))
+  (label 140)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (b ca a name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (1 1))
+    ((4 3) (1 3)) ((5 0) (0 0)) ((5 0) (4 0)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 6 5 ca 1)
+    (enc gx a-0 (privk ca)) (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gx a (privk ca)))))
+  (label 141)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca a-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a-0) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a-0) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (1 1))
+    ((4 3) (1 3)) ((5 0) (4 0)) ((6 0) (0 0)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a-0 (privk ca)))
+      (send (cat gx (enc gx a-0 (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gx a-0 (privk ca)))) ((send (enc gx a (privk ca)))))
+  (label 142)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a b ca a-0 ca-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a-0) (b a-0)
+    (ca ca-0))
+  (defstrand ca 1 (gz gx) (subject a-0) (ca ca-0))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (0 0))
+    ((3 0) (1 1)) ((4 3) (1 3)) ((5 0) (4 0)))
+  (non-orig dhkey (invk gx) (privk ca) (privk ca-0))
+  (uniq-orig n)
+  (operation encryption-test (displaced 6 3 ca 1) (enc gx a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((recv (enc gx b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (recv (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a-0 (privk ca-0)))
+      (send (cat gx (enc gx a-0 (privk ca-0))))
+      (recv
+        (cat gx (enc gx a-0 (privk ca-0))
+          (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a-0 (privk ca-0)))))
+  (label 143)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gx) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx akey) (a b ca a-0 ca-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gx) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gx) (a a-0) (b a-0)
+    (ca ca-0))
+  (defstrand ca 1 (gz gx) (subject a-0) (ca ca-0))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (1 1))
+    ((4 3) (1 3)) ((5 0) (4 0)) ((6 0) (0 0)))
+  (non-orig dhkey (invk gx) (privk ca) (privk ca-0))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((recv (enc gx b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gx (enc gx b (privk ca)) (enc n (enc "dh" gx gx dhkey))))
+      (recv (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a-0 (privk ca-0)))
+      (send (cat gx (enc gx a-0 (privk ca-0))))
+      (recv
+        (cat gx (enc gx a-0 (privk ca-0))
+          (enc n (enc "dh" gx gx dhkey))))
+      (send (enc "check" n (enc "dh" gx gx dhkey))))
+    ((send (enc gx a-0 (privk ca-0)))) ((send (enc gx a (privk ca)))))
+  (label 145)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gx) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca a-0 b-0 ca-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a-0) (b b-0)
+    (ca ca-0))
+  (defstrand ca 1 (gz gx) (subject a-0) (ca ca-0))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca-0))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (0 0))
+    ((3 0) (1 1)) ((4 3) (1 3)) ((5 0) (4 0)) ((6 0) (4 2)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca) (privk ca-0))
+  (uniq-orig n)
+  (operation encryption-test (displaced 7 3 ca 1) (enc gx a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a-0 (privk ca-0)))
+      (send (cat gx (enc gx a-0 (privk ca-0))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca-0))
+          (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gx a-0 (privk ca-0))))
+    ((send (enc gy b-0 (privk ca-0)))))
+  (label 146)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (b a b-0 ca name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b-0)
+    (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (1 1))
+    ((4 3) (1 3)) ((5 0) (0 0)) ((5 0) (4 0)) ((6 0) (4 2)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation encryption-test (displaced 7 5 ca 1)
+    (enc gx a-0 (privk ca-0)) (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gx a (privk ca)))) ((send (enc gy b-0 (privk ca)))))
+  (label 148)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gx gy akey) (a b ca a-0 b-0 ca-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gx) (a a) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gx) (h gy) (a a-0) (b b-0)
+    (ca ca-0))
+  (defstrand ca 1 (gz gx) (subject a-0) (ca ca-0))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca-0))
+  (defstrand ca 1 (gz gx) (subject a) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (1 0)) ((3 0) (1 1))
+    ((4 3) (1 3)) ((5 0) (4 0)) ((6 0) (4 2)) ((7 0) (0 0)))
+  (non-orig dhkey (invk gx) (invk gy) (privk ca) (privk ca-0))
+  (uniq-orig n)
+  (operation encryption-test (added-strand ca 1) (enc gx a (privk ca))
+    (0 0))
+  (traces
+    ((recv (enc gx a (privk ca))) (send (cat gx (enc gx a (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gx (enc gx a (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gx a (privk ca))))
+    ((recv (enc gx a-0 (privk ca-0)))
+      (send (cat gx (enc gx a-0 (privk ca-0))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca-0))
+          (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send (enc gx a-0 (privk ca-0))))
+    ((send (enc gy b-0 (privk ca-0)))) ((send (enc gx a (privk ca)))))
+  (label 150)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a a) (b b) (ca ca) (gx gx) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(defskeleton dhca
+  (vars (dhkey skey) (n text) (gy akey) (b ca b-0 name))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand resp 4 (dhkey dhkey) (n n) (gy gy) (h gy) (a b) (b b)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand ca 1 (gz gy) (subject b) (ca ca))
+  (defstrand init 4 (dhkey dhkey) (n n) (gx gy) (h gy) (a b) (b b-0)
+    (ca ca))
+  (defstrand ca 1 (gz gy) (subject b-0) (ca ca))
+  (precedes ((1 2) (0 2)) ((1 2) (4 2)) ((2 0) (0 0)) ((2 0) (1 0))
+    ((3 0) (4 0)) ((4 3) (1 3)) ((5 0) (4 2)))
+  (non-orig dhkey (invk gy) (privk ca))
+  (uniq-orig n)
+  (operation generalization weakened ((3 0) (0 2)))
+  (traces
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((recv (enc gy b (privk ca))) (recv (cat gy (enc gy b (privk ca))))
+      (send
+        (cat gy (enc gy b (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (recv (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b (privk ca)))) ((send (enc gy b (privk ca))))
+    ((recv (enc gy b (privk ca))) (send (cat gy (enc gy b (privk ca))))
+      (recv
+        (cat gy (enc gy b-0 (privk ca)) (enc n (enc "dh" gy gy dhkey))))
+      (send (enc "check" n (enc "dh" gy gy dhkey))))
+    ((send (enc gy b-0 (privk ca)))))
+  (label 159)
+  (parent 68)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((a b) (b b) (ca ca) (gx gy) (gy gy) (n n) (dhkey dhkey))))
+  (origs (n (1 2))))
+
+(comment "Nothing left to do")
diff --git a/tst/dh_encrypt_hack.tst b/tst/dh_encrypt_hack.tst
--- a/tst/dh_encrypt_hack.tst
+++ b/tst/dh_encrypt_hack.tst
@@ -1,6 +1,6 @@
 (herald dhencrypt (algebra basic))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/dh_encrypt_hack.scm")
 
 (defprotocol dhencrypt basic
@@ -52,6 +52,7 @@
   (uniq-orig n h)
   (operation encryption-test (added-strand resp 2)
     (enc n (enc "dh" gx h dhkey)) (0 1))
+  (strand-map 0)
   (traces
     ((send gx) (recv (cat h (enc n (enc "dh" gx h dhkey))))
       (send (enc "check" n (enc "dh" gx h dhkey))))
@@ -71,6 +72,7 @@
   (non-orig dhkey (invk gx))
   (operation encryption-test (added-listener (enc "dh" gx h dhkey))
     (enc n (enc "dh" gx h dhkey)) (0 1))
+  (strand-map 0)
   (traces
     ((send gx) (recv (cat h (enc n (enc "dh" gx h dhkey))))
       (send (enc "check" n (enc "dh" gx h dhkey))))
@@ -89,6 +91,7 @@
   (non-orig dhkey (invk gx))
   (operation encryption-test (added-strand CDHcalc1 2)
     (enc "dh" gx h dhkey) (1 0))
+  (strand-map 0 1)
   (traces
     ((send gx) (recv (cat h (enc n (enc "dh" gx h dhkey))))
       (send (enc "check" n (enc "dh" gx h dhkey))))
@@ -106,6 +109,7 @@
   (precedes ((1 1) (0 1)))
   (non-orig dhkey (invk gx))
   (operation generalization deleted (1 0))
+  (strand-map 0 2)
   (traces
     ((send gx) (recv (cat h (enc n (enc "dh" gx h dhkey))))
       (send (enc "check" n (enc "dh" gx h dhkey))))
@@ -169,6 +173,7 @@
   (uniq-orig n gy)
   (operation encryption-test (added-strand init 3)
     (enc "check" n (enc "dh" h gy dhkey)) (0 2))
+  (strand-map 0)
   (traces
     ((recv h) (send (cat gy (enc n (enc "dh" h gy dhkey))))
       (recv (enc "check" n (enc "dh" h gy dhkey))))
@@ -190,6 +195,7 @@
   (uniq-orig n gy)
   (operation encryption-test (added-listener (enc "dh" h gy dhkey))
     (enc "check" n (enc "dh" h gy dhkey)) (0 2))
+  (strand-map 0)
   (traces
     ((recv h) (send (cat gy (enc n (enc "dh" h gy dhkey))))
       (recv (enc "check" n (enc "dh" h gy dhkey))))
@@ -209,6 +215,7 @@
   (uniq-orig n gy)
   (operation encryption-test (added-strand CDHcalc2 2)
     (enc "dh" h gy dhkey) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv h) (send (cat gy (enc n (enc "dh" h gy dhkey))))
       (recv (enc "check" n (enc "dh" h gy dhkey))))
@@ -227,6 +234,7 @@
   (non-orig dhkey (invk gy))
   (uniq-orig n gy)
   (operation generalization deleted (1 0))
+  (strand-map 0 2)
   (traces
     ((recv h) (send (cat gy (enc n (enc "dh" h gy dhkey))))
       (recv (enc "check" n (enc "dh" h gy dhkey))))
@@ -309,6 +317,7 @@
   (uniq-orig n gy)
   (operation encryption-test (displaced 0 2 init 3)
     (enc "check" n (enc "dh" gx gy dhkey)) (1 2))
+  (strand-map 1 0)
   (traces
     ((recv gx) (send (cat gy (enc n (enc "dh" gx gy dhkey))))
       (recv (enc "check" n (enc "dh" gx gy dhkey))))
@@ -331,6 +340,7 @@
   (uniq-orig n gy)
   (operation encryption-test (added-strand init 3)
     (enc "check" n (enc "dh" gx gy dhkey-0)) (1 2))
+  (strand-map 0 1)
   (traces ((send gx) (recv (cat gy (enc n (enc "dh" gx gy dhkey)))))
     ((recv gx) (send (cat gy (enc n (enc "dh" gx gy dhkey-0))))
       (recv (enc "check" n (enc "dh" gx gy dhkey-0))))
@@ -351,6 +361,7 @@
   (uniq-orig n gy)
   (operation encryption-test (added-listener (enc "dh" gx gy dhkey-0))
     (enc "check" n (enc "dh" gx gy dhkey-0)) (1 2))
+  (strand-map 0 1)
   (traces ((send gx) (recv (cat gy (enc n (enc "dh" gx gy dhkey)))))
     ((recv gx) (send (cat gy (enc n (enc "dh" gx gy dhkey-0))))
       (recv (enc "check" n (enc "dh" gx gy dhkey-0))))
@@ -371,6 +382,7 @@
   (uniq-orig n gy)
   (operation encryption-test (displaced 3 1 resp 2)
     (enc n (enc "dh" gx gy dhkey-0)) (0 1))
+  (strand-map 0 1 2)
   (traces ((send gx) (recv (cat gy (enc n (enc "dh" gx gy dhkey)))))
     ((recv gx) (send (cat gy (enc n (enc "dh" gx gy dhkey))))
       (recv (enc "check" n (enc "dh" gx gy dhkey))))
@@ -394,6 +406,7 @@
   (uniq-orig n gy)
   (operation encryption-test (added-listener (enc "dh" gx gy dhkey))
     (enc n (enc "dh" gx gy dhkey)) (0 1))
+  (strand-map 0 1 2)
   (traces ((send gx) (recv (cat gy (enc n (enc "dh" gx gy dhkey)))))
     ((recv gx) (send (cat gy (enc n (enc "dh" gx gy dhkey-0))))
       (recv (enc "check" n (enc "dh" gx gy dhkey-0))))
diff --git a/tst/dh_encrypt_hack_shapes.tst b/tst/dh_encrypt_hack_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/dh_encrypt_hack_shapes.tst
@@ -0,0 +1,260 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald dhencrypt (algebra basic))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/dh_encrypt_hack.scm")
+
+(defprotocol dhencrypt basic
+  (defrole init
+    (vars (gx h akey) (dhkey skey) (n text))
+    (trace (send gx) (recv (cat h (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    (non-orig dhkey (invk gx)))
+  (defrole resp
+    (vars (h gy akey) (dhkey skey) (n text))
+    (trace (recv h) (send (cat gy (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    (non-orig dhkey (invk gy))
+    (uniq-orig n gy))
+  (defrole CDHcalc1
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gx (invk gy))) (send (enc "dh" gx gy dhkey))))
+  (defrole CDHcalc2
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gy (invk gx))) (send (enc "dh" gx gy dhkey))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Diffie-hellman key exchange followed by an encrypted-nonce challenge/response"))
+
+(defskeleton dhencrypt
+  (vars (dhkey skey) (n text) (gx h akey))
+  (defstrand init 3 (dhkey dhkey) (n n) (gx gx) (h h))
+  (non-orig dhkey (invk gx))
+  (comment "Initiator full point of view")
+  (traces
+    ((send gx) (recv (cat h (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhencrypt
+  (vars (dhkey skey) (n text) (gx h akey))
+  (defstrand init 3 (dhkey dhkey) (n n) (gx gx) (h h))
+  (defstrand resp 2 (dhkey dhkey) (n n) (h gx) (gy h))
+  (precedes ((1 1) (0 1)))
+  (non-orig dhkey (invk gx) (invk h))
+  (uniq-orig n h)
+  (operation encryption-test (added-strand resp 2)
+    (enc n (enc "dh" gx h dhkey)) (0 1))
+  (traces
+    ((send gx) (recv (cat h (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    ((recv gx) (send (cat h (enc n (enc "dh" gx h dhkey))))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((gx gx) (h h) (dhkey dhkey) (n n))))
+  (origs (h (1 1)) (n (1 1))))
+
+(defskeleton dhencrypt
+  (vars (dhkey skey) (n text) (gx h akey))
+  (defstrand init 3 (dhkey dhkey) (n n) (gx gx) (h h))
+  (defstrand CDHcalc1 2 (dhkey dhkey) (gx gx) (gy h))
+  (precedes ((1 1) (0 1)))
+  (non-orig dhkey (invk gx))
+  (operation generalization deleted (1 0))
+  (traces
+    ((send gx) (recv (cat h (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    ((recv (cat gx (invk h))) (send (enc "dh" gx h dhkey))))
+  (label 4)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((gx gx) (h h) (dhkey dhkey) (n n))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol dhencrypt basic
+  (defrole init
+    (vars (gx h akey) (dhkey skey) (n text))
+    (trace (send gx) (recv (cat h (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    (non-orig dhkey (invk gx)))
+  (defrole resp
+    (vars (h gy akey) (dhkey skey) (n text))
+    (trace (recv h) (send (cat gy (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    (non-orig dhkey (invk gy))
+    (uniq-orig n gy))
+  (defrole CDHcalc1
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gx (invk gy))) (send (enc "dh" gx gy dhkey))))
+  (defrole CDHcalc2
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gy (invk gx))) (send (enc "dh" gx gy dhkey))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Diffie-hellman key exchange followed by an encrypted-nonce challenge/response"))
+
+(defskeleton dhencrypt
+  (vars (dhkey skey) (n text) (gy h akey))
+  (defstrand resp 3 (dhkey dhkey) (n n) (h h) (gy gy))
+  (non-orig dhkey (invk gy))
+  (uniq-orig n gy)
+  (comment "Responder full point of view")
+  (traces
+    ((recv h) (send (cat gy (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey)))))
+  (label 5)
+  (unrealized (0 2))
+  (origs (n (0 1)) (gy (0 1)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhencrypt
+  (vars (dhkey skey) (n text) (gy h akey))
+  (defstrand resp 3 (dhkey dhkey) (n n) (h h) (gy gy))
+  (defstrand init 3 (dhkey dhkey) (n n) (gx h) (h gy))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig dhkey (invk gy) (invk h))
+  (uniq-orig n gy)
+  (operation encryption-test (added-strand init 3)
+    (enc "check" n (enc "dh" h gy dhkey)) (0 2))
+  (traces
+    ((recv h) (send (cat gy (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    ((send h) (recv (cat gy (enc n (enc "dh" h gy dhkey))))
+      (send (enc "check" n (enc "dh" h gy dhkey)))))
+  (label 6)
+  (parent 5)
+  (realized)
+  (shape)
+  (maps ((0) ((gy gy) (h h) (dhkey dhkey) (n n))))
+  (origs (n (0 1)) (gy (0 1))))
+
+(defskeleton dhencrypt
+  (vars (dhkey skey) (n text) (gy h akey))
+  (defstrand resp 3 (dhkey dhkey) (n n) (h h) (gy gy))
+  (defstrand CDHcalc2 2 (dhkey dhkey) (gx h) (gy gy))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
+  (non-orig dhkey (invk gy))
+  (uniq-orig n gy)
+  (operation generalization deleted (1 0))
+  (traces
+    ((recv h) (send (cat gy (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    ((recv (cat gy (invk h))) (send (enc "dh" h gy dhkey))))
+  (label 9)
+  (parent 5)
+  (realized)
+  (shape)
+  (maps ((0) ((gy gy) (h h) (dhkey dhkey) (n n))))
+  (origs (n (0 1)) (gy (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhencrypt basic
+  (defrole init
+    (vars (gx h akey) (dhkey skey) (n text))
+    (trace (send gx) (recv (cat h (enc n (enc "dh" gx h dhkey))))
+      (send (enc "check" n (enc "dh" gx h dhkey))))
+    (non-orig dhkey (invk gx)))
+  (defrole resp
+    (vars (h gy akey) (dhkey skey) (n text))
+    (trace (recv h) (send (cat gy (enc n (enc "dh" h gy dhkey))))
+      (recv (enc "check" n (enc "dh" h gy dhkey))))
+    (non-orig dhkey (invk gy))
+    (uniq-orig n gy))
+  (defrole CDHcalc1
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gx (invk gy))) (send (enc "dh" gx gy dhkey))))
+  (defrole CDHcalc2
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gy (invk gx))) (send (enc "dh" gx gy dhkey))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Diffie-hellman key exchange followed by an encrypted-nonce challenge/response"))
+
+(defskeleton dhencrypt
+  (vars (dhkey dhkey-0 skey) (n text) (gx gy akey))
+  (defstrand init 2 (dhkey dhkey) (n n) (gx gx) (h gy))
+  (defstrand resp 3 (dhkey dhkey-0) (n n) (h gx) (gy gy))
+  (non-orig dhkey dhkey-0 (invk gx) (invk gy))
+  (uniq-orig n gy)
+  (comment
+    "Point of view where the natural result should be the only shape")
+  (traces ((send gx) (recv (cat gy (enc n (enc "dh" gx gy dhkey)))))
+    ((recv gx) (send (cat gy (enc n (enc "dh" gx gy dhkey-0))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey-0)))))
+  (label 10)
+  (unrealized (0 1) (1 2))
+  (preskeleton)
+  (origs (n (1 1)) (gy (1 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton dhencrypt
+  (vars (dhkey skey) (n text) (gx gy akey))
+  (defstrand resp 3 (dhkey dhkey) (n n) (h gx) (gy gy))
+  (defstrand init 3 (dhkey dhkey) (n n) (gx gx) (h gy))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig dhkey (invk gx) (invk gy))
+  (uniq-orig n gy)
+  (operation encryption-test (displaced 0 2 init 3)
+    (enc "check" n (enc "dh" gx gy dhkey)) (1 2))
+  (traces
+    ((recv gx) (send (cat gy (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send gx) (recv (cat gy (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey)))))
+  (label 12)
+  (parent 10)
+  (realized)
+  (shape)
+  (maps ((1 0) ((gx gx) (gy gy) (n n) (dhkey dhkey) (dhkey-0 dhkey))))
+  (origs (n (0 1)) (gy (0 1))))
+
+(defskeleton dhencrypt
+  (vars (dhkey skey) (n text) (gx gy akey))
+  (defstrand init 2 (dhkey dhkey) (n n) (gx gx) (h gy))
+  (defstrand resp 3 (dhkey dhkey) (n n) (h gx) (gy gy))
+  (defstrand init 3 (dhkey dhkey) (n n) (gx gx) (h gy))
+  (precedes ((1 1) (0 1)) ((1 1) (2 1)) ((2 2) (1 2)))
+  (non-orig dhkey (invk gx) (invk gy))
+  (uniq-orig n gy)
+  (operation encryption-test (displaced 3 1 resp 2)
+    (enc n (enc "dh" gx gy dhkey-0)) (0 1))
+  (traces ((send gx) (recv (cat gy (enc n (enc "dh" gx gy dhkey)))))
+    ((recv gx) (send (cat gy (enc n (enc "dh" gx gy dhkey))))
+      (recv (enc "check" n (enc "dh" gx gy dhkey))))
+    ((send gx) (recv (cat gy (enc n (enc "dh" gx gy dhkey))))
+      (send (enc "check" n (enc "dh" gx gy dhkey)))))
+  (label 15)
+  (parent 10)
+  (realized)
+  (shape)
+  (maps ((0 1) ((gx gx) (gy gy) (n n) (dhkey dhkey) (dhkey-0 dhkey))))
+  (origs (gy (1 1)) (n (1 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/dh_group_sig.scm b/tst/dh_group_sig.scm
--- a/tst/dh_group_sig.scm
+++ b/tst/dh_group_sig.scm
@@ -1,86 +1,70 @@
-(herald "Signed group DH exchange (improved version)" (algebra diffie-hellman)
-	(limit 100)
-	;(limit 20000) (bound 25)
-	)
+(herald "Signed group DH exchange (improved version)"
+	(algebra diffie-hellman)
+	(limit 100))
 
-;;; This is not a very convincing protocol in my mind.  -- JDG
 
+
 (defprotocol dh_sig diffie-hellman
   (defrole group-init
     (vars (alpha rndx) (group text) (group-dist chan))
     (trace
-     (send group-dist (cat "Group id" group (exp (gen) alpha))))
+     (send group-dist (cat "Group id" group
+			   (exp (gen) alpha))))
     (uniq-gen alpha)
     (conf group-dist))
+  
   (defrole init
-    (vars (x rndx) (y expt) (g base) (group text) (a b name) (group-dist chan))
+    (vars (x rndx) (y expt) (alpha expt) (group na nb text)
+	  (a b name) (group-dist chan))
     (trace
-     (recv group-dist (cat "Group id" group g))
-     (send (enc (exp g x) (privk a)))
-     (recv (enc a  (exp g y) (exp g x) (privk b)))
-     (send (enc "final" b (exp g y) (exp g x) (privk a))))
-    (uniq-gen x)
+     (recv group-dist (cat "Group id" group
+			   (exp (gen) alpha)))
+     (send (enc (exp (exp (gen) alpha) x)
+		(privk a)))
+     (recv (enc a (exp (exp (gen) alpha) y)
+		(exp (exp (gen) alpha) x)
+		(privk b)))
+     (send (enc "final" b na
+		(exp (exp (gen) alpha) y)
+		(exp (exp (gen) alpha) x)
+		(privk a)))
+     (recv (enc na nb
+		(exp (exp (exp (gen) alpha) y)
+		     x)))
+     (send nb))
+    (uniq-gen na x)
     (auth group-dist))
+
   (defrole resp
-    (vars (y rndx) (x expt) (g base) (group text) (a b name) (group-dist chan))
+    (vars (y rndx) (x expt) (alpha expt) (group na nb text)
+	  (a b name) (group-dist chan))
     (trace
-     (recv group-dist (cat "Group id" group g))
-     (recv (enc (exp g x) (privk a)))
-     (send (enc a (exp g y) (exp g x) (privk b)))
-     (recv (enc "final" b (exp g y) (exp g x) (privk a))))
-    (uniq-gen y)
-    (auth group-dist))
-)
+     (recv group-dist (cat "Group id" group
+			   (exp (gen) alpha)))
+     (recv (enc (exp (exp (gen) alpha) x)
+		(privk a)))
+     (send (enc a (exp (exp (gen) alpha) y)
+		(exp (exp (gen) alpha) x)
+		(privk b)))
+     (recv (enc "final" b na
+		(exp (exp (gen) alpha) y)
+		(exp (exp (gen) alpha) x)
+		(privk a)))
+     (send (enc na nb
+		(exp (exp (exp (gen) alpha) x)
+		     y)))
+     (recv nb))
+    (uniq-gen nb y)
+    (auth group-dist)))
 
 (defskeleton dh_sig
   (vars (a b name))
-  (defstrand init 4 (a a) (b b))
-  (non-orig (privk b) (privk a))
-)
+  (defstrand init 6 (a a) (b b))
+  (non-orig (privk b) (privk a)))
 
 (defskeleton dh_sig
   (vars (a b name))
-  (defstrand resp 4 (a a) (b b))
-  (non-orig (privk a) (privk b))
-)
+  (defstrand resp 6 (a a) (b b))
+  (non-orig (privk a) (privk b)))
 
-(defprotocol dh_sig2 diffie-hellman
-  (defrole group-init
-    (vars (alpha rndx) (group text) (group-dist chan))
-    (trace
-     (send group-dist (cat "Group id" group (exp (gen) alpha))))
-    (uniq-gen alpha)
-    (conf group-dist))
-  (defrole init
-    (vars (x rndx) (y expt) (g base) (n group text) (a b name) (group-dist chan))
-    (trace
-     (recv group-dist (cat "Group id" group g))
-     (send (enc (exp g x) (privk a)))
-     (recv (enc a (exp g y) (exp g x) (privk b)))
-     (send (enc n b (exp g (mul x y))))
-     (recv n))
-    (uniq-gen x n)
-    (auth group-dist))
-  (defrole resp
-    (vars (y rndx) (x expt) (g base) (n group text) (a b name) (group-dist chan))
-    (trace
-     (recv group-dist (cat "Group id" group g))
-     (recv (enc (exp g x) (privk a)))
-     (send (enc a (exp g y) (exp g x) (privk b)))
-     (recv (enc n b (exp g (mul x y))))
-     (send n))
-    (uniq-gen y)
-    (auth group-dist))
-)
 
-(defskeleton dh_sig2
-  (vars (a b name))
-  (defstrand init 5 (a a) (b b))
-  (non-orig (privk b) (privk a))
-)
-
-(defskeleton dh_sig2
-  (vars (a b name))
-  (defstrand resp 5 (a a) (b b))
-  (non-orig (privk a) (privk b))
-)
diff --git a/tst/dh_group_sig.tst b/tst/dh_group_sig.tst
--- a/tst/dh_group_sig.tst
+++ b/tst/dh_group_sig.tst
@@ -1,2802 +1,1457 @@
 (herald "Signed group DH exchange (improved version)"
   (algebra diffie-hellman) (limit 100))
 
-(comment "CPSA 4.4.3")
-(comment "All input read from tst/dh_group_sig.scm")
-(comment "Step count limited to 100")
-
-(defprotocol dh_sig diffie-hellman
-  (defrole group-init
-    (vars (alpha rndx) (group text) (group-dist chan))
-    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
-    (uniq-gen alpha)
-    (conf group-dist))
-  (defrole init
-    (vars (x rndx) (y expt) (g base) (group text) (a b name)
-      (group-dist chan))
-    (trace (recv group-dist (cat "Group id" group g))
-      (send (enc (exp g x) (privk a)))
-      (recv (enc a (exp g y) (exp g x) (privk b)))
-      (send (enc "final" b (exp g y) (exp g x) (privk a))))
-    (uniq-gen x)
-    (auth group-dist))
-  (defrole resp
-    (vars (y rndx) (x expt) (g base) (group text) (a b name)
-      (group-dist chan))
-    (trace (recv group-dist (cat "Group id" group g))
-      (recv (enc (exp g x) (privk a)))
-      (send (enc a (exp g y) (exp g x) (privk b)))
-      (recv (enc "final" b (exp g y) (exp g x) (privk a))))
-    (uniq-gen y)
-    (absent (y x))
-    (auth group-dist))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton dh_sig
-  (vars (group text) (a b name) (g base) (group-dist chan) (x rndx)
-    (y expt))
-  (defstrand init 4 (group group) (a a) (b b) (g g)
-    (group-dist group-dist) (x x) (y y))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (auth group-dist)
-  (traces
-    ((recv group-dist (cat "Group id" group g))
-      (send (enc (exp g x) (privk a)))
-      (recv (enc a (exp g y) (exp g x) (privk b)))
-      (send (enc "final" b (exp g y) (exp g x) (privk a)))))
-  (label 0)
-  (unrealized (0 0) (0 2))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group text) (a b name) (group-dist chan) (x rndx) (y expt)
-    (alpha rndx))
-  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x alpha)
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist (cat "Group id" group (exp (gen) alpha))) (0 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))
-      (send
-        (enc "final" b (exp (gen) (mul y alpha))
-          (exp (gen) (mul x alpha)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha)))))
-  (label 1)
-  (parent 0)
-  (unrealized (0 2))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (alpha x y rndx) (x-0 expt))
-  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x) (y (mul x y (rec x-0))))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a) (b b)
-    (g (exp (gen) (mul alpha x (rec x-0)))) (group-dist group-dist-0)
-    (y y) (x x-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen alpha x y)
-  (absent (y x-0))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation encryption-test (added-strand resp 3)
-    (enc a (exp (gen) (mul alpha x y (rec x-0)))
-      (exp (gen) (mul alpha x)) (privk b)) (0 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul alpha x y (rec x-0)))
-          (exp (gen) (mul alpha x)) (privk b)))
-      (send
-        (enc "final" b (exp (gen) (mul alpha x y (rec x-0)))
-          (exp (gen) (mul alpha x)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul alpha x (rec x-0)))))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul alpha x y (rec x-0)))
-          (exp (gen) (mul alpha x)) (privk b)))))
-  (label 2)
-  (parent 1)
-  (unrealized (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (displaced 3 1 group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (2 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))
-      (send
-        (enc "final" b (exp (gen) (mul y alpha))
-          (exp (gen) (mul x alpha)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))))
-  (label 3)
-  (parent 2)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x) (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a) (b b) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (y y) (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((3 0) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (2 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b)))
-      (send
-        (enc "final" b (exp (gen) (mul y alpha-0))
-          (exp (gen) (mul alpha x)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
-  (label 4)
-  (parent 2)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation generalization weakened ((0 1) (2 0)))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))
-      (send
-        (enc "final" b (exp (gen) (mul y alpha))
-          (exp (gen) (mul x alpha)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))))
-  (label 5)
-  (parent 3)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (x x) (y y) (g (exp (gen) alpha)) (group group)
-        (group-dist group-dist))))
-  (origs))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x) (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a) (b b) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (y y) (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2))
-    ((3 0) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation generalization weakened ((0 1) (2 0)))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b)))
-      (send
-        (enc "final" b (exp (gen) (mul y alpha-0))
-          (exp (gen) (mul alpha x)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
-  (label 6)
-  (parent 4)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x) (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a) (b b) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (y y) (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((2 2) (0 2)) ((3 0) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation generalization weakened ((1 0) (2 0)))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b)))
-      (send
-        (enc "final" b (exp (gen) (mul y alpha-0))
-          (exp (gen) (mul alpha x)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
-  (label 7)
-  (parent 6)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (x x) (y (mul y (rec alpha) alpha-0))
-        (g (exp (gen) alpha)) (group group) (group-dist group-dist))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol dh_sig diffie-hellman
-  (defrole group-init
-    (vars (alpha rndx) (group text) (group-dist chan))
-    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
-    (uniq-gen alpha)
-    (conf group-dist))
-  (defrole init
-    (vars (x rndx) (y expt) (g base) (group text) (a b name)
-      (group-dist chan))
-    (trace (recv group-dist (cat "Group id" group g))
-      (send (enc (exp g x) (privk a)))
-      (recv (enc a (exp g y) (exp g x) (privk b)))
-      (send (enc "final" b (exp g y) (exp g x) (privk a))))
-    (uniq-gen x)
-    (auth group-dist))
-  (defrole resp
-    (vars (y rndx) (x expt) (g base) (group text) (a b name)
-      (group-dist chan))
-    (trace (recv group-dist (cat "Group id" group g))
-      (recv (enc (exp g x) (privk a)))
-      (send (enc a (exp g y) (exp g x) (privk b)))
-      (recv (enc "final" b (exp g y) (exp g x) (privk a))))
-    (uniq-gen y)
-    (absent (y x))
-    (auth group-dist))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton dh_sig
-  (vars (group text) (a b name) (g base) (group-dist chan) (y rndx)
-    (x expt))
-  (defstrand resp 4 (group group) (a a) (b b) (g g)
-    (group-dist group-dist) (y y) (x x))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (absent (y x))
-  (auth group-dist)
-  (traces
-    ((recv group-dist (cat "Group id" group g))
-      (recv (enc (exp g x) (privk a)))
-      (send (enc a (exp g y) (exp g x) (privk b)))
-      (recv (enc "final" b (exp g y) (exp g x) (privk a)))))
-  (label 8)
-  (unrealized (0 0) (0 1) (0 3))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group text) (a b name) (group-dist chan) (y rndx) (x expt)
-    (alpha rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist (cat "Group id" group (exp (gen) alpha))) (0 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))
-      (recv
-        (enc "final" b (exp (gen) (mul y alpha))
-          (exp (gen) (mul x alpha)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha)))))
-  (label 9)
-  (parent 8)
-  (unrealized (0 1) (0 3))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y rndx) (x expt) (alpha x-0 rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a)
-    (g (exp (gen) (mul x alpha (rec x-0)))) (group-dist group-dist-0)
-    (x x-0))
-  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x-0)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation encryption-test (added-strand init 2)
-    (enc (exp (gen) (mul x alpha)) (privk a)) (0 1))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))
-      (recv
-        (enc "final" b (exp (gen) (mul y alpha))
-          (exp (gen) (mul x alpha)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul x alpha (rec x-0)))))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))))
-  (label 10)
-  (parent 9)
-  (unrealized (0 3) (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (displaced 3 1 group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (2 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))
-      (recv
-        (enc "final" b (exp (gen) (mul y alpha))
-          (exp (gen) (mul x alpha)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))))
-  (label 11)
-  (parent 10)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1)) ((3 0) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (2 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b)))
-      (recv
-        (enc "final" b (exp (gen) (mul y alpha))
-          (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
-  (label 12)
-  (parent 10)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group text) (a b name) (group-dist chan) (alpha y x rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x) (y y))
-  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((2 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen alpha y x)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation encryption-test (displaced 2 3 init 4)
-    (enc "final" b (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x-0))
-      (privk a)) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b)))
-      (recv
-        (enc "final" b (exp (gen) (mul alpha y))
-          (exp (gen) (mul alpha x)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b)))
-      (send
-        (enc "final" b (exp (gen) (mul alpha y))
-          (exp (gen) (mul alpha x)) (privk a)))))
-  (label 13)
-  (parent 11)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (y y) (x x) (g (exp (gen) alpha)) (group group)
-        (group-dist group-dist))))
-  (origs))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (alpha y x x-0 rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (group group-0) (a a) (b b)
-    (g (exp (gen) (mul alpha x (rec x-0)))) (group-dist group-dist-0)
-    (x x-0) (y (mul y (rec x) x-0)))
-  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((2 1) (3 0)) ((3 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen alpha y x x-0)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation encryption-test (added-strand init 4)
-    (enc "final" b (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-      (privk a)) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b)))
-      (recv
-        (enc "final" b (exp (gen) (mul alpha y))
-          (exp (gen) (mul alpha x)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul alpha x (rec x-0)))))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b)))
-      (send
-        (enc "final" b (exp (gen) (mul alpha y))
-          (exp (gen) (mul alpha x)) (privk a)))))
-  (label 14)
-  (parent 11)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha alpha-0 x rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x (mul (rec alpha) alpha-0 x)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (group group-0) (a a) (b b) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x) (y (mul y alpha (rec alpha-0))))
-  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (3 0))
-    ((3 1) (0 1)) ((3 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha alpha-0 x)
-  (absent (y (mul (rec alpha) alpha-0 x)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation encryption-test (displaced 2 4 init 4)
-    (enc "final" b (exp (gen) (mul y alpha))
-      (exp (gen) (mul x-0 alpha-0)) (privk a)) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
-          (privk b)))
-      (recv
-        (enc "final" b (exp (gen) (mul y alpha))
-          (exp (gen) (mul alpha-0 x)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
-          (privk b)))
-      (send
-        (enc "final" b (exp (gen) (mul y alpha))
-          (exp (gen) (mul alpha-0 x)) (privk a)))))
-  (label 15)
-  (parent 12)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group group-0 group-1 text) (a b name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y alpha x alpha-0 x-0 rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (group group-1) (a a) (b b)
-    (g (exp (gen) (mul x alpha-0 (rec x-0)))) (group-dist group-dist-1)
-    (x x-0) (y (mul y alpha (rec x) (rec alpha-0) x-0)))
-  (precedes ((0 2) (4 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((2 1) (4 0)) ((3 0) (2 0)) ((4 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0 x-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation encryption-test (added-strand init 4)
-    (enc "final" b (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-      (privk a)) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b)))
-      (recv
-        (enc "final" b (exp (gen) (mul y alpha))
-          (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-1
-       (cat "Group id" group-1 (exp (gen) (mul x alpha-0 (rec x-0)))))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b)))
-      (send
-        (enc "final" b (exp (gen) (mul y alpha))
-          (exp (gen) (mul x alpha-0)) (privk a)))))
-  (label 16)
-  (parent 12)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha alpha-0 x rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x (mul (rec alpha) alpha-0 x)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (group group-0) (a a) (b b) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x) (y (mul y alpha (rec alpha-0))))
-  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((2 0) (3 0)) ((3 1) (0 1))
-    ((3 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha alpha-0 x)
-  (absent (y (mul (rec alpha) alpha-0 x)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation generalization weakened ((1 0) (3 0)))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
-          (privk b)))
-      (recv
-        (enc "final" b (exp (gen) (mul y alpha))
-          (exp (gen) (mul alpha-0 x)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
-          (privk b)))
-      (send
-        (enc "final" b (exp (gen) (mul y alpha))
-          (exp (gen) (mul alpha-0 x)) (privk a)))))
-  (label 17)
-  (parent 15)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (y y) (x (mul (rec alpha) alpha-0 x))
-        (g (exp (gen) alpha)) (group group) (group-dist group-dist))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol dh_sig2 diffie-hellman
-  (defrole group-init
-    (vars (alpha rndx) (group text) (group-dist chan))
-    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
-    (uniq-gen alpha)
-    (conf group-dist))
-  (defrole init
-    (vars (x rndx) (y expt) (g base) (n group text) (a b name)
-      (group-dist chan))
-    (trace (recv group-dist (cat "Group id" group g))
-      (send (enc (exp g x) (privk a)))
-      (recv (enc a (exp g y) (exp g x) (privk b)))
-      (send (enc n b (exp g (mul x y)))) (recv n))
-    (uniq-gen n x)
-    (auth group-dist))
-  (defrole resp
-    (vars (y rndx) (x expt) (g base) (n group text) (a b name)
-      (group-dist chan))
-    (trace (recv group-dist (cat "Group id" group g))
-      (recv (enc (exp g x) (privk a)))
-      (send (enc a (exp g y) (exp g x) (privk b)))
-      (recv (enc n b (exp g (mul y x)))) (send n))
-    (uniq-gen y)
-    (absent (y x))
-    (auth group-dist))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (g base) (group-dist chan) (x rndx)
-    (y expt))
-  (defstrand init 5 (n n) (group group) (a a) (b b) (g g)
-    (group-dist group-dist) (x x) (y y))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n x)
-  (auth group-dist)
-  (traces
-    ((recv group-dist (cat "Group id" group g))
-      (send (enc (exp g x) (privk a)))
-      (recv (enc a (exp g y) (exp g x) (privk b)))
-      (send (enc n b (exp g (mul x y)))) (recv n)))
-  (label 18)
-  (unrealized (0 0) (0 2))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (x rndx) (y expt)
-    (alpha rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n x alpha)
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist (cat "Group id" group (exp (gen) alpha))) (0 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n b (exp (gen) (mul x y alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha)))))
-  (label 19)
-  (parent 18)
-  (unrealized (0 2))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (alpha x y rndx) (x-0 expt))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul x y (rec x-0))))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a) (b b)
-    (g (exp (gen) (mul alpha x (rec x-0)))) (group-dist group-dist-0)
-    (y y) (x x-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha x y)
-  (absent (y x-0))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation encryption-test (added-strand resp 3)
-    (enc a (exp (gen) (mul alpha x y (rec x-0)))
-      (exp (gen) (mul alpha x)) (privk b)) (0 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul alpha x y (rec x-0)))
-          (exp (gen) (mul alpha x)) (privk b)))
-      (send (enc n b (exp (gen) (mul alpha x x y (rec x-0))))) (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul alpha x (rec x-0)))))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul alpha x y (rec x-0)))
-          (exp (gen) (mul alpha x)) (privk b)))))
-  (label 20)
-  (parent 19)
-  (unrealized (0 4) (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (displaced 3 1 group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (2 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n b (exp (gen) (mul y x alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))))
-  (label 21)
-  (parent 20)
-  (unrealized (0 4))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a) (b b) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (y y) (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((3 0) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (2 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n b (exp (gen) (mul y x alpha-0))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
-  (label 22)
-  (parent 20)
-  (unrealized (0 4))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (b a name) (group-dist chan) (alpha x y rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (precedes ((0 1) (2 0)) ((0 3) (2 3)) ((1 0) (0 0)) ((2 2) (0 2))
-    ((2 4) (0 4)))
-  (non-orig (privk b) (privk a))
-  (uniq-gen n alpha x y)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test (displaced 2 3 resp 5) n (0 4)
-    (enc n b (exp (gen) (mul y-0 x-0 alpha))))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n b (exp (gen) (mul alpha x y))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b))) (recv (enc n b (exp (gen) (mul alpha x y))))
-      (send n)))
-  (label 23)
-  (parent 21)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (y x alpha y-0 rndx) (x-0 expt))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (defstrand resp 5 (n n) (group group-0) (a a-0) (b b)
-    (g (exp (gen) (mul y x alpha (rec y-0) (rec x-0))))
-    (group-dist group-dist-0) (y y-0) (x x-0))
-  (precedes ((0 1) (2 0)) ((0 3) (3 3)) ((1 0) (0 0)) ((2 2) (0 2))
-    ((2 2) (3 0)) ((3 4) (0 4)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha y-0)
-  (absent (y x) (y-0 x-0))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation nonce-test (added-strand resp 5) n (0 4)
-    (enc n b (exp (gen) (mul y x alpha))))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n b (exp (gen) (mul y x alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))))
-    ((recv group-dist-0
-       (cat "Group id" group-0
-         (exp (gen) (mul y x alpha (rec y-0) (rec x-0)))))
-      (recv (enc (exp (gen) (mul y x alpha (rec y-0))) (privk a-0)))
-      (send
-        (enc a-0 (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul y x alpha (rec y-0))) (privk b)))
-      (recv (enc n b (exp (gen) (mul y x alpha)))) (send n)))
-  (label 24)
-  (parent 21)
-  (unrealized (3 0) (3 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (3 0))
-    ((3 1) (0 4)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test (added-listener (exp (gen) (mul y x alpha))) n
-    (0 4) (enc n b (exp (gen) (mul y x alpha))))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n b (exp (gen) (mul y x alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha)))))
-  (label 25)
-  (parent 21)
-  (unrealized (3 0))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y alpha x alpha-0 y-0 rndx) (x-0 expt))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a) (b b) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (y y) (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand resp 5 (n n) (group group-1) (a a-0) (b b)
-    (g (exp (gen) (mul y x alpha-0 (rec y-0) (rec x-0))))
-    (group-dist group-dist-1) (y y-0) (x x-0))
-  (precedes ((0 1) (2 0)) ((0 3) (4 3)) ((1 0) (0 0)) ((2 2) (0 2))
-    ((2 2) (4 0)) ((3 0) (2 0)) ((4 4) (0 4)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0 y-0)
-  (absent (y (mul alpha x (rec alpha-0))) (y-0 x-0))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand resp 5) n (0 4)
-    (enc n b (exp (gen) (mul y x alpha-0))))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n b (exp (gen) (mul y x alpha-0))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-1
-       (cat "Group id" group-1
-         (exp (gen) (mul y x alpha-0 (rec y-0) (rec x-0)))))
-      (recv (enc (exp (gen) (mul y x alpha-0 (rec y-0))) (privk a-0)))
-      (send
-        (enc a-0 (exp (gen) (mul y x alpha-0 (rec x-0)))
-          (exp (gen) (mul y x alpha-0 (rec y-0))) (privk b)))
-      (recv (enc n b (exp (gen) (mul y x alpha-0)))) (send n)))
-  (label 26)
-  (parent 22)
-  (unrealized (4 0) (4 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a) (b b) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (y y) (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (4 0))
-    ((3 0) (2 0)) ((4 1) (0 4)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test (added-listener (exp (gen) (mul y x alpha-0))) n
-    (0 4) (enc n b (exp (gen) (mul y x alpha-0))))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n b (exp (gen) (mul y x alpha-0))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0)))))
-  (label 27)
-  (parent 22)
-  (unrealized (4 0))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (b a name) (group-dist chan) (alpha x y rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (precedes ((0 1) (2 1)) ((0 3) (2 3)) ((1 0) (0 0)) ((1 0) (2 0))
-    ((2 2) (0 2)) ((2 4) (0 4)))
-  (non-orig (privk b) (privk a))
-  (uniq-gen n alpha x y)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation generalization weakened ((0 1) (2 0)))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n b (exp (gen) (mul alpha x y))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b))) (recv (enc n b (exp (gen) (mul alpha x y))))
-      (send n)))
-  (label 28)
-  (parent 23)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (x x) (y y) (g (exp (gen) alpha)) (n n) (group group)
-        (group-dist group-dist))))
-  (origs))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (y x alpha y-0 rndx) (x-0 expt))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (defstrand resp 3 (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) (mul y x alpha (rec y-0)))) (group-dist group-dist-0)
-    (y y-0) (x x-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (4 0))
-    ((3 1) (0 4)) ((4 2) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha y-0)
-  (absent (y x) (y-0 x-0))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation nonce-test (added-strand resp 3)
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n b (exp (gen) (mul y x alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul y x alpha (rec y-0)))))
-      (recv (enc (exp (gen) (mul y x alpha (rec y-0) x-0)) (privk a-0)))
-      (send
-        (enc a-0 (exp (gen) (mul y x alpha))
-          (exp (gen) (mul y x alpha (rec y-0) x-0)) (privk b-0)))))
-  (label 29)
-  (parent 25)
-  (unrealized (4 0) (4 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (defstrand init 2 (group group-0) (a a-0)
-    (g (exp (gen) (mul y x alpha (rec x-0)))) (group-dist group-dist-0)
-    (x x-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (4 0))
-    ((3 1) (0 4)) ((4 1) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation nonce-test (added-strand init 2)
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n b (exp (gen) (mul y x alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul y x alpha (rec x-0)))))
-      (send (enc (exp (gen) (mul y x alpha)) (privk a-0)))))
-  (label 30)
-  (parent 25)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (deflistener (cat (exp (gen) (mul y x)) alpha))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (4 0))
-    ((3 1) (0 4)) ((4 1) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x)) alpha))
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n b (exp (gen) (mul y x alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv (cat (exp (gen) (mul y x)) alpha))
-      (send (cat (exp (gen) (mul y x)) alpha))))
-  (label 31)
-  (parent 25)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (deflistener (cat (exp (gen) (mul y alpha)) x))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (4 0))
-    ((3 1) (0 4)) ((4 1) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y alpha)) x))
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n b (exp (gen) (mul y x alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv (cat (exp (gen) (mul y alpha)) x))
-      (send (cat (exp (gen) (mul y alpha)) x))))
-  (label 32)
-  (parent 25)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (deflistener (cat (exp (gen) (mul x alpha)) y))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (4 0))
-    ((3 1) (0 4)) ((4 1) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul x alpha)) y))
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n b (exp (gen) (mul y x alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv (cat (exp (gen) (mul x alpha)) y))
-      (send (cat (exp (gen) (mul x alpha)) y))))
-  (label 33)
-  (parent 25)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y alpha x alpha-0 y-0 rndx) (x-0 expt))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a) (b b) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (y y) (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (defstrand resp 3 (group group-1) (a a-0) (b b-0)
-    (g (exp (gen) (mul y x alpha-0 (rec y-0))))
-    (group-dist group-dist-1) (y y-0) (x x-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (5 0))
-    ((3 0) (2 0)) ((4 1) (0 4)) ((5 2) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0 y-0)
-  (absent (y (mul alpha x (rec alpha-0))) (y-0 x-0))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand resp 3)
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n b (exp (gen) (mul y x alpha-0))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv group-dist-1
-       (cat "Group id" group-1 (exp (gen) (mul y x alpha-0 (rec y-0)))))
-      (recv
-        (enc (exp (gen) (mul y x alpha-0 (rec y-0) x-0)) (privk a-0)))
-      (send
-        (enc a-0 (exp (gen) (mul y x alpha-0))
-          (exp (gen) (mul y x alpha-0 (rec y-0) x-0)) (privk b-0)))))
-  (label 34)
-  (parent 27)
-  (unrealized (5 0) (5 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y alpha x alpha-0 x-0 rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a) (b b) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (y y) (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (defstrand init 2 (group group-1) (a a-0)
-    (g (exp (gen) (mul y x alpha-0 (rec x-0))))
-    (group-dist group-dist-1) (x x-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (5 0))
-    ((3 0) (2 0)) ((4 1) (0 4)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0 x-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand init 2)
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n b (exp (gen) (mul y x alpha-0))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv group-dist-1
-       (cat "Group id" group-1 (exp (gen) (mul y x alpha-0 (rec x-0)))))
-      (send (enc (exp (gen) (mul y x alpha-0)) (privk a-0)))))
-  (label 35)
-  (parent 27)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a) (b b) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (y y) (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (deflistener (cat (exp (gen) (mul y x)) alpha-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (5 0))
-    ((3 0) (2 0)) ((4 1) (0 4)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x)) alpha-0))
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n b (exp (gen) (mul y x alpha-0))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv (cat (exp (gen) (mul y x)) alpha-0))
-      (send (cat (exp (gen) (mul y x)) alpha-0))))
-  (label 36)
-  (parent 27)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a) (b b) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (y y) (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (deflistener (cat (exp (gen) (mul y alpha-0)) x))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (5 0))
-    ((3 0) (2 0)) ((4 1) (0 4)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y alpha-0)) x))
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n b (exp (gen) (mul y x alpha-0))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv (cat (exp (gen) (mul y alpha-0)) x))
-      (send (cat (exp (gen) (mul y alpha-0)) x))))
-  (label 37)
-  (parent 27)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a) (b b) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (y y) (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (deflistener (cat (exp (gen) (mul x alpha-0)) y))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (5 0))
-    ((3 0) (2 0)) ((4 1) (0 4)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul x alpha-0)) y))
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n b (exp (gen) (mul y x alpha-0))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv (cat (exp (gen) (mul x alpha-0)) y))
-      (send (cat (exp (gen) (mul x alpha-0)) y))))
-  (label 38)
-  (parent 27)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
-
-(defprotocol dh_sig2 diffie-hellman
-  (defrole group-init
-    (vars (alpha rndx) (group text) (group-dist chan))
-    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
-    (uniq-gen alpha)
-    (conf group-dist))
-  (defrole init
-    (vars (x rndx) (y expt) (g base) (n group text) (a b name)
-      (group-dist chan))
-    (trace (recv group-dist (cat "Group id" group g))
-      (send (enc (exp g x) (privk a)))
-      (recv (enc a (exp g y) (exp g x) (privk b)))
-      (send (enc n b (exp g (mul x y)))) (recv n))
-    (uniq-gen n x)
-    (auth group-dist))
-  (defrole resp
-    (vars (y rndx) (x expt) (g base) (n group text) (a b name)
-      (group-dist chan))
-    (trace (recv group-dist (cat "Group id" group g))
-      (recv (enc (exp g x) (privk a)))
-      (send (enc a (exp g y) (exp g x) (privk b)))
-      (recv (enc n b (exp g (mul y x)))) (send n))
-    (uniq-gen y)
-    (absent (y x))
-    (auth group-dist))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (g base) (group-dist chan) (y rndx)
-    (x expt))
-  (defstrand resp 5 (n n) (group group) (a a) (b b) (g g)
-    (group-dist group-dist) (y y) (x x))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (absent (y x))
-  (auth group-dist)
-  (traces
-    ((recv group-dist (cat "Group id" group g))
-      (recv (enc (exp g x) (privk a)))
-      (send (enc a (exp g y) (exp g x) (privk b)))
-      (recv (enc n b (exp g (mul y x)))) (send n)))
-  (label 39)
-  (unrealized (0 0) (0 1))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (y rndx) (x expt)
-    (alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist (cat "Group id" group (exp (gen) alpha))) (0 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha)))))
-  (label 40)
-  (parent 39)
-  (unrealized (0 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y rndx) (x expt) (alpha x-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a)
-    (g (exp (gen) (mul x alpha (rec x-0)))) (group-dist group-dist-0)
-    (x x-0))
-  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x-0)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation encryption-test (added-strand init 2)
-    (enc (exp (gen) (mul x alpha)) (privk a)) (0 1))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul x alpha (rec x-0)))))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))))
-  (label 41)
-  (parent 40)
-  (unrealized (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (displaced 3 1 group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (2 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))))
-  (label 42)
-  (parent 41)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1)) ((3 0) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (2 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
-  (label 43)
-  (parent 41)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (b a name) (group-dist chan) (alpha y x rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 4 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((2 3) (0 3)))
-  (non-orig (privk b) (privk a))
-  (uniq-gen n alpha y x)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation encryption-test (displaced 2 3 init 4)
-    (enc n b (exp (gen) (mul y-0 x-0 alpha))) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b))) (recv (enc n b (exp (gen) (mul alpha y x))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n b (exp (gen) (mul alpha y x))))))
-  (label 44)
-  (parent 42)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (y y) (x x) (g (exp (gen) alpha)) (n n) (group group)
-        (group-dist group-dist))))
-  (origs))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 rndx) (y-0 expt))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b)
-    (g (exp (gen) (mul y x alpha (rec x-0) (rec y-0))))
-    (group-dist group-dist-0) (x x-0) (y y-0))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation encryption-test (added-strand init 4)
-    (enc n b (exp (gen) (mul y x alpha))) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist-0
-       (cat "Group id" group-0
-         (exp (gen) (mul y x alpha (rec x-0) (rec y-0)))))
-      (send (enc (exp (gen) (mul y x alpha (rec y-0))) (privk a-0)))
-      (recv
-        (enc a-0 (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul y x alpha (rec y-0))) (privk b)))
-      (send (enc n b (exp (gen) (mul y x alpha))))))
-  (label 45)
-  (parent 42)
-  (unrealized (3 0) (3 2))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation encryption-test
-    (added-listener (exp (gen) (mul y x alpha)))
-    (enc n b (exp (gen) (mul y x alpha))) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha)))))
-  (label 46)
-  (parent 42)
-  (unrealized (3 0))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (b a name) (group-dist group-dist-0 chan)
-    (alpha alpha-0 y x rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) alpha-0 x)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-0) (a a) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x) (y y))
-  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (3 0))
-    ((3 1) (0 1)) ((3 3) (0 3)))
-  (non-orig (privk b) (privk a))
-  (uniq-gen n alpha alpha-0 y x)
-  (absent (y (mul (rec alpha) alpha-0 x)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation encryption-test (displaced 2 4 init 4)
-    (enc n b (exp (gen) (mul y-0 x-0 alpha-0))) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul alpha-0 x))
-          (privk b))) (recv (enc n b (exp (gen) (mul alpha-0 y x))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (recv
-        (enc a (exp (gen) (mul alpha-0 y)) (exp (gen) (mul alpha-0 x))
-          (privk b))) (send (enc n b (exp (gen) (mul alpha-0 y x))))))
-  (label 47)
-  (parent 43)
-  (unrealized (3 2))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y alpha x alpha-0 x-0 rndx) (y-0 expt))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-1) (a a-0) (b b)
-    (g (exp (gen) (mul y x alpha-0 (rec x-0) (rec y-0))))
-    (group-dist group-dist-1) (x x-0) (y y-0))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0 x-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation encryption-test (added-strand init 4)
-    (enc n b (exp (gen) (mul y x alpha-0))) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-1
-       (cat "Group id" group-1
-         (exp (gen) (mul y x alpha-0 (rec x-0) (rec y-0)))))
-      (send (enc (exp (gen) (mul y x alpha-0 (rec y-0))) (privk a-0)))
-      (recv
-        (enc a-0 (exp (gen) (mul y x alpha-0 (rec x-0)))
-          (exp (gen) (mul y x alpha-0 (rec y-0))) (privk b)))
-      (send (enc n b (exp (gen) (mul y x alpha-0))))))
-  (label 48)
-  (parent 43)
-  (unrealized (4 0) (4 2))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation encryption-test
-    (added-listener (exp (gen) (mul y x alpha-0)))
-    (enc n b (exp (gen) (mul y x alpha-0))) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0)))))
-  (label 49)
-  (parent 43)
-  (unrealized (4 0))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b a-0 name) (group-dist chan)
-    (y x x-0 alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group) (a a-0) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x-0)
-    (y (mul y x (rec x-0))))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x x-0 alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (displaced 4 1 group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x-0 alpha)) (privk a-0)))
-      (recv
-        (enc a-0 (exp (gen) (mul y x (rec x-0) alpha))
-          (exp (gen) (mul x-0 alpha)) (privk b)))
-      (send (enc n b (exp (gen) (mul y x alpha))))))
-  (label 50)
-  (parent 45)
-  (unrealized (3 2))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x-0)
-    (y (mul y x alpha (rec x-0) (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 3) (0 3)) ((4 0) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0 alpha-0)
-  (absent (y x))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc a-0 (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul x-0 alpha-0)) (privk b)))
-      (send (enc n b (exp (gen) (mul y x alpha)))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
-  (label 51)
-  (parent 45)
-  (unrealized (3 2))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (y x alpha y-0 rndx) (x-0 expt))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (defstrand resp 3 (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) (mul y x alpha (rec y-0)))) (group-dist group-dist-0)
-    (y y-0) (x x-0))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (0 3)) ((4 2) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha y-0)
-  (absent (y x) (y-0 x-0))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation nonce-test (added-strand resp 3)
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul y x alpha (rec y-0)))))
-      (recv (enc (exp (gen) (mul y x alpha (rec y-0) x-0)) (privk a-0)))
-      (send
-        (enc a-0 (exp (gen) (mul y x alpha))
-          (exp (gen) (mul y x alpha (rec y-0) x-0)) (privk b-0)))))
-  (label 52)
-  (parent 46)
-  (unrealized (4 0) (4 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (defstrand init 2 (group group-0) (a a-0)
-    (g (exp (gen) (mul y x alpha (rec x-0)))) (group-dist group-dist-0)
-    (x x-0))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (0 3)) ((4 1) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha x-0)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation nonce-test (added-strand init 2)
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul y x alpha (rec x-0)))))
-      (send (enc (exp (gen) (mul y x alpha)) (privk a-0)))))
-  (label 53)
-  (parent 46)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (deflistener (cat (exp (gen) (mul y x)) alpha))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (0 3)) ((4 1) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x)) alpha))
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv (cat (exp (gen) (mul y x)) alpha))
-      (send (cat (exp (gen) (mul y x)) alpha))))
-  (label 54)
-  (parent 46)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (deflistener (cat (exp (gen) (mul y alpha)) x))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (0 3)) ((4 1) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y alpha)) x))
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv (cat (exp (gen) (mul y alpha)) x))
-      (send (cat (exp (gen) (mul y alpha)) x))))
-  (label 55)
-  (parent 46)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (deflistener (cat (exp (gen) (mul x alpha)) y))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (0 3)) ((4 1) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul x alpha)) y))
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv (cat (exp (gen) (mul x alpha)) y))
-      (send (cat (exp (gen) (mul x alpha)) y))))
-  (label 56)
-  (parent 46)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist) (y y)
-    (x (mul x alpha (rec alpha-0))))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha-0))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha))
-  (defstrand init 4 (n n) (group group) (a a-0) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist) (x x-0)
-    (y (mul y x alpha (rec x-0) (rec alpha-0))))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0 alpha-0)
-  (absent (y (mul x alpha (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation channel-test (displaced 5 1 group-init 1)
-    (ch-msg group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1)))
-    (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc a-0 (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul x-0 alpha-0)) (privk b)))
-      (send (enc n b (exp (gen) (mul y x alpha))))))
-  (label 57)
-  (parent 48)
-  (unrealized (4 2))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (alpha y x x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x-0)
-    (y (mul y x (rec x-0))))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha y x x-0 alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation channel-test (displaced 5 3 group-init 1)
-    (ch-msg group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1)))
-    (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc a-0 (exp (gen) (mul y x (rec x-0) alpha-0))
-          (exp (gen) (mul x-0 alpha-0)) (privk b)))
-      (send (enc n b (exp (gen) (mul y x alpha-0))))))
-  (label 58)
-  (parent 48)
-  (unrealized (4 2))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (alpha y x alpha-0 x-0 alpha-1 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-1) (a a-0) (b b)
-    (g (exp (gen) alpha-1)) (group-dist group-dist-1) (x x-0)
-    (y (mul y x alpha-0 (rec x-0) (rec alpha-1))))
-  (defstrand group-init 1 (group group-1) (group-dist group-dist-1)
-    (alpha alpha-1))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 3) (0 3)) ((5 0) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha y x alpha-0 x-0 alpha-1)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0 group-dist-1)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1)))
-    (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1)))
-      (send (enc (exp (gen) (mul x-0 alpha-1)) (privk a-0)))
-      (recv
-        (enc a-0 (exp (gen) (mul y x alpha-0 (rec x-0)))
-          (exp (gen) (mul x-0 alpha-1)) (privk b)))
-      (send (enc n b (exp (gen) (mul y x alpha-0)))))
-    ((send group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1)))))
-  (label 59)
-  (parent 48)
-  (unrealized (4 2))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y alpha x alpha-0 y-0 rndx) (x-0 expt))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (defstrand resp 3 (group group-1) (a a-0) (b b-0)
-    (g (exp (gen) (mul y x alpha-0 (rec y-0))))
-    (group-dist group-dist-1) (y y-0) (x x-0))
-  (precedes ((0 2) (5 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (0 3)) ((5 2) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0 y-0)
-  (absent (y (mul (rec alpha) x alpha-0)) (y-0 x-0))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand resp 3)
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv group-dist-1
-       (cat "Group id" group-1 (exp (gen) (mul y x alpha-0 (rec y-0)))))
-      (recv
-        (enc (exp (gen) (mul y x alpha-0 (rec y-0) x-0)) (privk a-0)))
-      (send
-        (enc a-0 (exp (gen) (mul y x alpha-0))
-          (exp (gen) (mul y x alpha-0 (rec y-0) x-0)) (privk b-0)))))
-  (label 60)
-  (parent 49)
-  (unrealized (5 0) (5 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y alpha x alpha-0 x-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (defstrand init 2 (group group-1) (a a-0)
-    (g (exp (gen) (mul y x alpha-0 (rec x-0))))
-    (group-dist group-dist-1) (x x-0))
-  (precedes ((0 2) (5 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (0 3)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0 x-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand init 2)
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv group-dist-1
-       (cat "Group id" group-1 (exp (gen) (mul y x alpha-0 (rec x-0)))))
-      (send (enc (exp (gen) (mul y x alpha-0)) (privk a-0)))))
-  (label 61)
-  (parent 49)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (deflistener (cat (exp (gen) (mul y x)) alpha-0))
-  (precedes ((0 2) (5 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (0 3)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x)) alpha-0))
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv (cat (exp (gen) (mul y x)) alpha-0))
-      (send (cat (exp (gen) (mul y x)) alpha-0))))
-  (label 62)
-  (parent 49)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (deflistener (cat (exp (gen) (mul y alpha-0)) x))
-  (precedes ((0 2) (5 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (0 3)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y alpha-0)) x))
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv (cat (exp (gen) (mul y alpha-0)) x))
-      (send (cat (exp (gen) (mul y alpha-0)) x))))
-  (label 63)
-  (parent 49)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (deflistener (cat (exp (gen) (mul x alpha-0)) y))
-  (precedes ((0 2) (5 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (0 3)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul x alpha-0)) y))
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n b (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv (cat (exp (gen) (mul x alpha-0)) y))
-      (send (cat (exp (gen) (mul x alpha-0)) y))))
-  (label 64)
-  (parent 49)
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/dh_group_sig.scm")
+(comment "Step count limited to 100")
+
+(defprotocol dh_sig diffie-hellman
+  (defrole group-init
+    (vars (alpha rndx) (group text) (group-dist chan))
+    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
+    (uniq-gen alpha)
+    (conf group-dist))
+  (defrole init
+    (vars (x rndx) (y alpha expt) (group na nb text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (recv (enc na nb (exp (gen) (mul x y alpha)))) (send nb))
+    (uniq-gen na x)
+    (absent (x alpha))
+    (auth group-dist))
+  (defrole resp
+    (vars (y rndx) (x alpha expt) (group na nb text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y x alpha)))) (recv nb))
+    (uniq-gen nb y)
+    (absent (y (mul x alpha)) (y alpha))
+    (auth group-dist))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dh_sig
+  (vars (group na nb text) (a b name) (group-dist chan) (x rndx)
+    (y alpha expt))
+  (defstrand init 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (x x) (y y) (alpha alpha))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na x)
+  (absent (x alpha))
+  (auth group-dist)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (recv (enc na nb (exp (gen) (mul x y alpha)))) (send nb)))
+  (label 0)
+  (unrealized (0 0) (0 2))
+  (origs)
+  (ugens (x (0 1)) (na (0 3)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group na nb text) (a b name) (group-dist chan) (x rndx)
+    (y expt) (alpha rndx))
+  (defstrand init 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (x x) (y y) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na x alpha)
+  (absent (x alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation channel-test (added-strand group-init 1)
+    (ch-msg group-dist (cat "Group id" group (exp (gen) alpha))) (0 0))
+  (strand-map 0)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (recv (enc na nb (exp (gen) (mul x y alpha)))) (send nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha)))))
+  (label 1)
+  (parent 0)
+  (unrealized (0 2))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group na nb group-0 text) (a b name)
+    (group-dist group-dist-0 chan) (y x alpha rndx) (alpha-0 expt))
+  (defstrand init 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (x x) (y (mul y (rec alpha) alpha-0))
+    (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group-0) (a a) (b b)
+    (group-dist group-dist-0) (y y) (x (mul x alpha (rec alpha-0)))
+    (alpha alpha-0))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((2 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na y x alpha)
+  (absent (y (mul x alpha)) (y alpha-0) (x alpha))
+  (conf group-dist)
+  (auth group-dist group-dist-0)
+  (operation encryption-test (added-strand resp 3)
+    (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+      (privk b)) (0 2))
+  (strand-map 0 1)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha-0))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (recv (enc na nb (exp (gen) (mul y x alpha-0)))) (send nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+          (privk b)))))
+  (label 2)
+  (parent 1)
+  (unrealized (0 4) (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group na nb text) (a b name) (group-dist chan)
+    (y x alpha rndx))
+  (defstrand init 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (x x) (y y) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group) (a a) (b b) (group-dist group-dist)
+    (y y) (x x) (alpha alpha))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na y x alpha)
+  (absent (y (mul x alpha)) (y alpha) (x alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation channel-test (displaced 3 1 group-init 1)
+    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+    (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (recv (enc na nb (exp (gen) (mul y x alpha)))) (send nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))))
+  (label 3)
+  (parent 2)
+  (unrealized (0 4))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group na nb group-0 text) (a b name)
+    (group-dist group-dist-0 chan) (y x alpha alpha-0 rndx))
+  (defstrand init 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (x x) (y (mul y (rec alpha) alpha-0))
+    (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group-0) (a a) (b b)
+    (group-dist group-dist-0) (y y) (x (mul x alpha (rec alpha-0)))
+    (alpha alpha-0))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((2 2) (0 2)) ((3 0) (2 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na y x alpha alpha-0)
+  (absent (y (mul x alpha)) (y alpha-0) (x alpha))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation channel-test (added-strand group-init 1)
+    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+    (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha-0))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (recv (enc na nb (exp (gen) (mul y x alpha-0)))) (send nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+          (privk b))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
+  (label 4)
+  (parent 2)
+  (unrealized (0 4))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (na nb group text) (a b name) (group-dist chan)
+    (x alpha y rndx))
+  (defstrand init 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (x x) (y y) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 5 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (y y) (x x) (alpha alpha))
+  (precedes ((0 1) (2 1)) ((0 3) (2 3)) ((1 0) (0 0)) ((1 0) (2 0))
+    ((2 2) (0 2)) ((2 4) (0 4)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na nb x alpha y)
+  (absent (x alpha) (y (mul x alpha)) (y alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation encryption-test (displaced 2 3 resp 5)
+    (enc na nb (exp (gen) (mul y-0 x alpha-0))) (0 4))
+  (strand-map 0 1 2)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul alpha y))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (recv (enc na nb (exp (gen) (mul x alpha y)))) (send nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul alpha y))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (send (enc na nb (exp (gen) (mul x alpha y))))))
+  (label 5)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (x x) (y y) (alpha alpha) (group group) (na na)
+        (nb nb) (group-dist group-dist))))
+  (origs)
+  (ugens (nb (2 4)) (y (2 2)) (alpha (1 0)) (x (0 1)) (na (0 3))))
+
+(defskeleton dh_sig
+  (vars (group na nb text) (a b name) (group-dist chan)
+    (y x alpha rndx))
+  (defstrand init 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (x x) (y y) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group) (a a) (b b) (group-dist group-dist)
+    (y y) (x x) (alpha alpha))
+  (deflistener (exp (gen) (mul y x alpha)))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2))
+    ((2 2) (3 0)) ((3 1) (0 4)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na y x alpha)
+  (absent (y (mul x alpha)) (y alpha) (x alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation encryption-test
+    (added-listener (exp (gen) (mul y x alpha)))
+    (enc na nb (exp (gen) (mul y x alpha))) (0 4))
+  (strand-map 0 1 2)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (recv (enc na nb (exp (gen) (mul y x alpha)))) (send nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b))))
+    ((recv (exp (gen) (mul y x alpha)))
+      (send (exp (gen) (mul y x alpha)))))
+  (label 6)
+  (parent 3)
+  (unrealized (3 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group na nb group-0 text) (a b name)
+    (group-dist group-dist-0 chan) (y x alpha alpha-0 rndx))
+  (defstrand init 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (x x) (y (mul y (rec alpha) alpha-0))
+    (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group-0) (a a) (b b)
+    (group-dist group-dist-0) (y y) (x (mul x alpha (rec alpha-0)))
+    (alpha alpha-0))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (deflistener (exp (gen) (mul y x alpha-0)))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (4 0))
+    ((3 0) (2 0)) ((4 1) (0 4)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na y x alpha alpha-0)
+  (absent (y (mul x alpha)) (y alpha-0) (x alpha))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation encryption-test
+    (added-listener (exp (gen) (mul y x alpha-0)))
+    (enc na nb (exp (gen) (mul y x alpha-0))) (0 4))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha-0))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (recv (enc na nb (exp (gen) (mul y x alpha-0)))) (send nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+          (privk b))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
+    ((recv (exp (gen) (mul y x alpha-0)))
+      (send (exp (gen) (mul y x alpha-0)))))
+  (label 7)
+  (parent 4)
+  (unrealized (4 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group na nb text) (a b name) (group-dist chan)
+    (y x alpha rndx))
+  (defstrand init 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (x x) (y y) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group) (a a) (b b) (group-dist group-dist)
+    (y y) (x x) (alpha alpha))
+  (deflistener (exp (gen) (mul y x alpha)))
+  (deflistener (cat (exp (gen) (mul y x)) alpha))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2))
+    ((2 2) (4 0)) ((3 1) (0 4)) ((4 1) (3 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na y x alpha)
+  (absent (y (mul x alpha)) (y alpha) (x alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul y x)) alpha))
+    (exp (gen) (mul y x alpha)) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (recv (enc na nb (exp (gen) (mul y x alpha)))) (send nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b))))
+    ((recv (exp (gen) (mul y x alpha)))
+      (send (exp (gen) (mul y x alpha))))
+    ((recv (cat (exp (gen) (mul y x)) alpha))
+      (send (cat (exp (gen) (mul y x)) alpha))))
+  (label 8)
+  (parent 6)
+  (unrealized (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dh_sig
+  (vars (group na nb text) (a b name) (group-dist chan)
+    (y x alpha rndx))
+  (defstrand init 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (x x) (y y) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group) (a a) (b b) (group-dist group-dist)
+    (y y) (x x) (alpha alpha))
+  (deflistener (exp (gen) (mul y x alpha)))
+  (deflistener (cat (exp (gen) (mul y alpha)) x))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2))
+    ((2 2) (4 0)) ((3 1) (0 4)) ((4 1) (3 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na y x alpha)
+  (absent (y (mul x alpha)) (y alpha) (x alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul y alpha)) x))
+    (exp (gen) (mul y x alpha)) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (recv (enc na nb (exp (gen) (mul y x alpha)))) (send nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b))))
+    ((recv (exp (gen) (mul y x alpha)))
+      (send (exp (gen) (mul y x alpha))))
+    ((recv (cat (exp (gen) (mul y alpha)) x))
+      (send (cat (exp (gen) (mul y alpha)) x))))
+  (label 9)
+  (parent 6)
+  (unrealized (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dh_sig
+  (vars (group na nb text) (a b name) (group-dist chan)
+    (y x alpha rndx))
+  (defstrand init 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (x x) (y y) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group) (a a) (b b) (group-dist group-dist)
+    (y y) (x x) (alpha alpha))
+  (deflistener (exp (gen) (mul y x alpha)))
+  (deflistener (cat (exp (gen) (mul x alpha)) y))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2))
+    ((2 2) (4 0)) ((3 1) (0 4)) ((4 1) (3 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na y x alpha)
+  (absent (y (mul x alpha)) (y alpha) (x alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x alpha)) y))
+    (exp (gen) (mul y x alpha)) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (recv (enc na nb (exp (gen) (mul y x alpha)))) (send nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b))))
+    ((recv (exp (gen) (mul y x alpha)))
+      (send (exp (gen) (mul y x alpha))))
+    ((recv (cat (exp (gen) (mul x alpha)) y))
+      (send (cat (exp (gen) (mul x alpha)) y))))
+  (label 10)
+  (parent 6)
+  (unrealized (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dh_sig
+  (vars (group na nb group-0 text) (a b name)
+    (group-dist group-dist-0 chan) (y x alpha alpha-0 rndx))
+  (defstrand init 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (x x) (y (mul y (rec alpha) alpha-0))
+    (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group-0) (a a) (b b)
+    (group-dist group-dist-0) (y y) (x (mul x alpha (rec alpha-0)))
+    (alpha alpha-0))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (deflistener (exp (gen) (mul y x alpha-0)))
+  (deflistener (cat (exp (gen) (mul y x)) alpha-0))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (5 0))
+    ((3 0) (2 0)) ((4 1) (0 4)) ((5 1) (4 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na y x alpha alpha-0)
+  (absent (y (mul x alpha)) (y alpha-0) (x alpha))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul y x)) alpha-0))
+    (exp (gen) (mul y x alpha-0)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha-0))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (recv (enc na nb (exp (gen) (mul y x alpha-0)))) (send nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+          (privk b))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
+    ((recv (exp (gen) (mul y x alpha-0)))
+      (send (exp (gen) (mul y x alpha-0))))
+    ((recv (cat (exp (gen) (mul y x)) alpha-0))
+      (send (cat (exp (gen) (mul y x)) alpha-0))))
+  (label 11)
+  (parent 7)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dh_sig
+  (vars (group na nb group-0 text) (a b name)
+    (group-dist group-dist-0 chan) (y x alpha alpha-0 rndx))
+  (defstrand init 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (x x) (y (mul y (rec alpha) alpha-0))
+    (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group-0) (a a) (b b)
+    (group-dist group-dist-0) (y y) (x (mul x alpha (rec alpha-0)))
+    (alpha alpha-0))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (deflistener (exp (gen) (mul y x alpha-0)))
+  (deflistener (cat (exp (gen) (mul y alpha-0)) x))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (5 0))
+    ((3 0) (2 0)) ((4 1) (0 4)) ((5 1) (4 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na y x alpha alpha-0)
+  (absent (y (mul x alpha)) (y alpha-0) (x alpha))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul y alpha-0)) x))
+    (exp (gen) (mul y x alpha-0)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha-0))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (recv (enc na nb (exp (gen) (mul y x alpha-0)))) (send nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+          (privk b))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
+    ((recv (exp (gen) (mul y x alpha-0)))
+      (send (exp (gen) (mul y x alpha-0))))
+    ((recv (cat (exp (gen) (mul y alpha-0)) x))
+      (send (cat (exp (gen) (mul y alpha-0)) x))))
+  (label 12)
+  (parent 7)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dh_sig
+  (vars (group na nb group-0 text) (a b name)
+    (group-dist group-dist-0 chan) (y x alpha alpha-0 rndx))
+  (defstrand init 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (x x) (y (mul y (rec alpha) alpha-0))
+    (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group-0) (a a) (b b)
+    (group-dist group-dist-0) (y y) (x (mul x alpha (rec alpha-0)))
+    (alpha alpha-0))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (deflistener (exp (gen) (mul y x alpha-0)))
+  (deflistener (cat (exp (gen) (mul x alpha-0)) y))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (5 0))
+    ((3 0) (2 0)) ((4 1) (0 4)) ((5 1) (4 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na y x alpha alpha-0)
+  (absent (y (mul x alpha)) (y alpha-0) (x alpha))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x alpha-0)) y))
+    (exp (gen) (mul y x alpha-0)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha-0))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (recv (enc na nb (exp (gen) (mul y x alpha-0)))) (send nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+          (privk b))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
+    ((recv (exp (gen) (mul y x alpha-0)))
+      (send (exp (gen) (mul y x alpha-0))))
+    ((recv (cat (exp (gen) (mul x alpha-0)) y))
+      (send (cat (exp (gen) (mul x alpha-0)) y))))
+  (label 13)
+  (parent 7)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol dh_sig diffie-hellman
+  (defrole group-init
+    (vars (alpha rndx) (group text) (group-dist chan))
+    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
+    (uniq-gen alpha)
+    (conf group-dist))
+  (defrole init
+    (vars (x rndx) (y alpha expt) (group na nb text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (recv (enc na nb (exp (gen) (mul x y alpha)))) (send nb))
+    (uniq-gen na x)
+    (absent (x alpha))
+    (auth group-dist))
+  (defrole resp
+    (vars (y rndx) (x alpha expt) (group na nb text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y x alpha)))) (recv nb))
+    (uniq-gen nb y)
+    (absent (y (mul x alpha)) (y alpha))
+    (auth group-dist))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dh_sig
+  (vars (group na nb text) (a b name) (group-dist chan) (y rndx)
+    (x alpha expt))
+  (defstrand resp 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (y y) (x x) (alpha alpha))
+  (non-orig (privk a) (privk b))
+  (uniq-gen nb y)
+  (absent (y (mul x alpha)) (y alpha))
+  (auth group-dist)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y x alpha)))) (recv nb)))
+  (label 14)
+  (unrealized (0 0) (0 1) (0 3))
+  (origs)
+  (ugens (y (0 2)) (nb (0 4)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group na nb text) (a b name) (group-dist chan) (y rndx)
+    (x expt) (alpha rndx))
+  (defstrand resp 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (y y) (x x) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen nb y alpha)
+  (absent (y (mul x alpha)) (y alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation channel-test (added-strand group-init 1)
+    (ch-msg group-dist (cat "Group id" group (exp (gen) alpha))) (0 0))
+  (strand-map 0)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y x alpha)))) (recv nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha)))))
+  (label 15)
+  (parent 14)
+  (unrealized (0 1) (0 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group na nb group-0 text) (a b name)
+    (group-dist group-dist-0 chan) (y alpha x rndx) (alpha-0 expt))
+  (defstrand resp 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (y y) (x (mul (rec alpha) x alpha-0))
+    (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand init 2 (group group-0) (a a) (group-dist group-dist-0)
+    (x x) (alpha alpha-0))
+  (precedes ((1 0) (0 0)) ((2 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen nb y alpha x)
+  (absent (y alpha) (y (mul x alpha-0)) (x alpha-0))
+  (conf group-dist)
+  (auth group-dist group-dist-0)
+  (operation encryption-test (added-strand init 2)
+    (enc (exp (gen) (mul x alpha-0)) (privk a)) (0 1))
+  (strand-map 0 1)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha-0)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y x alpha-0)))) (recv nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (send (enc (exp (gen) (mul x alpha-0)) (privk a)))))
+  (label 16)
+  (parent 15)
+  (unrealized (0 3) (0 5) (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group na nb text) (a b name) (group-dist chan)
+    (y x alpha rndx))
+  (defstrand resp 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (y y) (x x) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand init 2 (group group) (a a) (group-dist group-dist) (x x)
+    (alpha alpha))
+  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen nb y x alpha)
+  (absent (y (mul x alpha)) (y alpha) (x alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation channel-test (displaced 3 1 group-init 1)
+    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+    (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y x alpha)))) (recv nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))))
+  (label 17)
+  (parent 16)
+  (unrealized (0 3) (0 5))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group na nb group-0 text) (a b name)
+    (group-dist group-dist-0 chan) (y alpha x alpha-0 rndx))
+  (defstrand resp 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (y y) (x (mul (rec alpha) x alpha-0))
+    (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand init 2 (group group-0) (a a) (group-dist group-dist-0)
+    (x x) (alpha alpha-0))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (precedes ((1 0) (0 0)) ((2 1) (0 1)) ((3 0) (2 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen nb y alpha x alpha-0)
+  (absent (y alpha) (y (mul x alpha-0)) (x alpha-0))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation channel-test (added-strand group-init 1)
+    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+    (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha-0)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y x alpha-0)))) (recv nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
+  (label 18)
+  (parent 16)
+  (unrealized (0 3) (0 5))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (na nb group text) (a b name) (group-dist chan)
+    (y alpha x rndx))
+  (defstrand resp 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (y y) (x x) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand init 4 (group group) (na na) (a a) (b b)
+    (group-dist group-dist) (x x) (y y) (alpha alpha))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
+    ((2 3) (0 3)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na nb y alpha x)
+  (absent (y alpha) (y (mul alpha x)) (x alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation encryption-test (displaced 2 3 init 4)
+    (enc "final" b na (exp (gen) (mul y alpha))
+      (exp (gen) (mul x-0 alpha)) (privk a)) (0 3))
+  (strand-map 0 1 2)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha x)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y alpha x)))) (recv nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul alpha x)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha x)) (privk a)))))
+  (label 19)
+  (parent 17)
+  (unrealized (0 5))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group na nb group-0 text) (a b name)
+    (group-dist group-dist-0 chan) (y alpha alpha-0 x rndx))
+  (defstrand resp 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (y y) (x (mul (rec alpha) alpha-0 x))
+    (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (defstrand init 4 (group group-0) (na na) (a a) (b b)
+    (group-dist group-dist-0) (x x) (y (mul y alpha (rec alpha-0)))
+    (alpha alpha-0))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((2 0) (3 0)) ((3 1) (0 1))
+    ((3 3) (0 3)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na nb y alpha alpha-0 x)
+  (absent (y alpha) (y (mul alpha-0 x)) (x alpha-0))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation encryption-test (displaced 2 4 init 4)
+    (enc "final" b na (exp (gen) (mul y alpha))
+      (exp (gen) (mul x-0 alpha-0)) (privk a)) (0 3))
+  (strand-map 0 1 3 2)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha-0 x)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y alpha-0 x)))) (recv nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha-0 x)) (privk a)))))
+  (label 20)
+  (parent 18)
+  (unrealized (0 5))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (na nb group text) (a b name) (group-dist chan)
+    (y alpha x rndx))
+  (defstrand resp 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (y y) (x x) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand init 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (x x) (y y) (alpha alpha))
+  (precedes ((0 2) (2 2)) ((0 4) (2 4)) ((1 0) (0 0)) ((1 0) (2 0))
+    ((2 1) (0 1)) ((2 3) (0 3)) ((2 5) (0 5)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na nb y alpha x)
+  (absent (y alpha) (y (mul alpha x)) (x alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation nonce-test (displaced 2 3 init 6) nb (0 5)
+    (enc na nb (exp (gen) (mul y alpha-0 x-0))))
+  (strand-map 0 1 2)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha x)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y alpha x)))) (recv nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul alpha x)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha x)) (privk a)))
+      (recv (enc na nb (exp (gen) (mul y alpha x)))) (send nb)))
+  (label 21)
+  (parent 19)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (y y) (x x) (alpha alpha) (group group) (na na)
+        (nb nb) (group-dist group-dist))))
+  (origs)
+  (ugens (na (2 3)) (x (2 1)) (alpha (1 0)) (y (0 2)) (nb (0 4))))
+
+(defskeleton dh_sig
+  (vars (na nb group text) (a b name) (group-dist chan)
+    (y alpha x rndx))
+  (defstrand resp 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (y y) (x x) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand init 4 (group group) (na na) (a a) (b b)
+    (group-dist group-dist) (x x) (y y) (alpha alpha))
+  (deflistener (exp (gen) (mul y alpha x)))
+  (precedes ((0 2) (2 2)) ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0))
+    ((2 1) (0 1)) ((2 3) (0 3)) ((3 1) (0 5)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na nb y alpha x)
+  (absent (y alpha) (y (mul alpha x)) (x alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation nonce-test (added-listener (exp (gen) (mul y alpha x))) nb
+    (0 5) (enc na nb (exp (gen) (mul y alpha x))))
+  (strand-map 0 1 2)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha x)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y alpha x)))) (recv nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul alpha x)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha x)) (privk a))))
+    ((recv (exp (gen) (mul y alpha x)))
+      (send (exp (gen) (mul y alpha x)))))
+  (label 22)
+  (parent 19)
+  (unrealized (3 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group na nb group-0 text) (a b name)
+    (group-dist group-dist-0 chan) (y alpha alpha-0 x rndx))
+  (defstrand resp 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (y y) (x (mul (rec alpha) alpha-0 x))
+    (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (defstrand init 4 (group group-0) (na na) (a a) (b b)
+    (group-dist group-dist-0) (x x) (y (mul y alpha (rec alpha-0)))
+    (alpha alpha-0))
+  (deflistener (exp (gen) (mul y alpha-0 x)))
+  (precedes ((0 2) (3 2)) ((0 2) (4 0)) ((1 0) (0 0)) ((2 0) (3 0))
+    ((3 1) (0 1)) ((3 3) (0 3)) ((4 1) (0 5)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na nb y alpha alpha-0 x)
+  (absent (y alpha) (y (mul alpha-0 x)) (x alpha-0))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation nonce-test (added-listener (exp (gen) (mul y alpha-0 x)))
+    nb (0 5) (enc na nb (exp (gen) (mul y alpha-0 x))))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha-0 x)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y alpha-0 x)))) (recv nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha-0 x)) (privk a))))
+    ((recv (exp (gen) (mul y alpha-0 x)))
+      (send (exp (gen) (mul y alpha-0 x)))))
+  (label 23)
+  (parent 20)
+  (unrealized (4 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (na nb group text) (a b name) (group-dist chan)
+    (y alpha x rndx))
+  (defstrand resp 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (y y) (x x) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand init 4 (group group) (na na) (a a) (b b)
+    (group-dist group-dist) (x x) (y y) (alpha alpha))
+  (deflistener (exp (gen) (mul y alpha x)))
+  (deflistener (cat (exp (gen) (mul y alpha)) x))
+  (precedes ((0 2) (2 2)) ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0))
+    ((2 1) (0 1)) ((2 3) (0 3)) ((3 1) (0 5)) ((4 1) (3 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na nb y alpha x)
+  (absent (y alpha) (y (mul alpha x)) (x alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul y alpha)) x))
+    (exp (gen) (mul y alpha x)) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha x)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y alpha x)))) (recv nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul alpha x)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha x)) (privk a))))
+    ((recv (exp (gen) (mul y alpha x)))
+      (send (exp (gen) (mul y alpha x))))
+    ((recv (cat (exp (gen) (mul y alpha)) x))
+      (send (cat (exp (gen) (mul y alpha)) x))))
+  (label 24)
+  (parent 22)
+  (unrealized (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dh_sig
+  (vars (na nb group text) (a b name) (group-dist chan)
+    (y alpha x rndx))
+  (defstrand resp 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (y y) (x x) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand init 4 (group group) (na na) (a a) (b b)
+    (group-dist group-dist) (x x) (y y) (alpha alpha))
+  (deflistener (exp (gen) (mul y alpha x)))
+  (deflistener (cat (exp (gen) (mul y x)) alpha))
+  (precedes ((0 2) (2 2)) ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0))
+    ((2 1) (0 1)) ((2 3) (0 3)) ((3 1) (0 5)) ((4 1) (3 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na nb y alpha x)
+  (absent (y alpha) (y (mul alpha x)) (x alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul y x)) alpha))
+    (exp (gen) (mul y alpha x)) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha x)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y alpha x)))) (recv nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul alpha x)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha x)) (privk a))))
+    ((recv (exp (gen) (mul y alpha x)))
+      (send (exp (gen) (mul y alpha x))))
+    ((recv (cat (exp (gen) (mul y x)) alpha))
+      (send (cat (exp (gen) (mul y x)) alpha))))
+  (label 25)
+  (parent 22)
+  (unrealized (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dh_sig
+  (vars (na nb group text) (a b name) (group-dist chan)
+    (y alpha x rndx))
+  (defstrand resp 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (y y) (x x) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand init 4 (group group) (na na) (a a) (b b)
+    (group-dist group-dist) (x x) (y y) (alpha alpha))
+  (deflistener (exp (gen) (mul y alpha x)))
+  (deflistener (cat (exp (gen) (mul alpha x)) y))
+  (precedes ((0 2) (2 2)) ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0))
+    ((2 1) (0 1)) ((2 3) (0 3)) ((3 1) (0 5)) ((4 1) (3 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na nb y alpha x)
+  (absent (y alpha) (y (mul alpha x)) (x alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul alpha x)) y))
+    (exp (gen) (mul y alpha x)) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha x)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y alpha x)))) (recv nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul alpha x)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha x)) (privk a))))
+    ((recv (exp (gen) (mul y alpha x)))
+      (send (exp (gen) (mul y alpha x))))
+    ((recv (cat (exp (gen) (mul alpha x)) y))
+      (send (cat (exp (gen) (mul alpha x)) y))))
+  (label 26)
+  (parent 22)
+  (unrealized (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dh_sig
+  (vars (group na nb group-0 text) (a b name)
+    (group-dist group-dist-0 chan) (y alpha alpha-0 x rndx))
+  (defstrand resp 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (y y) (x (mul (rec alpha) alpha-0 x))
+    (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (defstrand init 4 (group group-0) (na na) (a a) (b b)
+    (group-dist group-dist-0) (x x) (y (mul y alpha (rec alpha-0)))
+    (alpha alpha-0))
+  (deflistener (exp (gen) (mul y alpha-0 x)))
+  (deflistener (cat (exp (gen) (mul y alpha-0)) x))
+  (precedes ((0 2) (3 2)) ((0 2) (5 0)) ((1 0) (0 0)) ((2 0) (3 0))
+    ((3 1) (0 1)) ((3 3) (0 3)) ((4 1) (0 5)) ((5 1) (4 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na nb y alpha alpha-0 x)
+  (absent (y alpha) (y (mul alpha-0 x)) (x alpha-0))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul y alpha-0)) x))
+    (exp (gen) (mul y alpha-0 x)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha-0 x)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y alpha-0 x)))) (recv nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha-0 x)) (privk a))))
+    ((recv (exp (gen) (mul y alpha-0 x)))
+      (send (exp (gen) (mul y alpha-0 x))))
+    ((recv (cat (exp (gen) (mul y alpha-0)) x))
+      (send (cat (exp (gen) (mul y alpha-0)) x))))
+  (label 27)
+  (parent 23)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dh_sig
+  (vars (group na nb group-0 text) (a b name)
+    (group-dist group-dist-0 chan) (y alpha alpha-0 x rndx))
+  (defstrand resp 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (y y) (x (mul (rec alpha) alpha-0 x))
+    (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (defstrand init 4 (group group-0) (na na) (a a) (b b)
+    (group-dist group-dist-0) (x x) (y (mul y alpha (rec alpha-0)))
+    (alpha alpha-0))
+  (deflistener (exp (gen) (mul y alpha-0 x)))
+  (deflistener (cat (exp (gen) (mul y x)) alpha-0))
+  (precedes ((0 2) (3 2)) ((0 2) (5 0)) ((1 0) (0 0)) ((2 0) (3 0))
+    ((3 1) (0 1)) ((3 3) (0 3)) ((4 1) (0 5)) ((5 1) (4 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na nb y alpha alpha-0 x)
+  (absent (y alpha) (y (mul alpha-0 x)) (x alpha-0))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul y x)) alpha-0))
+    (exp (gen) (mul y alpha-0 x)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha-0 x)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y alpha-0 x)))) (recv nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha-0 x)) (privk a))))
+    ((recv (exp (gen) (mul y alpha-0 x)))
+      (send (exp (gen) (mul y alpha-0 x))))
+    ((recv (cat (exp (gen) (mul y x)) alpha-0))
+      (send (cat (exp (gen) (mul y x)) alpha-0))))
+  (label 28)
+  (parent 23)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dh_sig
+  (vars (group na nb group-0 text) (a b name)
+    (group-dist group-dist-0 chan) (y alpha alpha-0 x rndx))
+  (defstrand resp 6 (group group) (na na) (nb nb) (a a) (b b)
+    (group-dist group-dist) (y y) (x (mul (rec alpha) alpha-0 x))
+    (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (defstrand init 4 (group group-0) (na na) (a a) (b b)
+    (group-dist group-dist-0) (x x) (y (mul y alpha (rec alpha-0)))
+    (alpha alpha-0))
+  (deflistener (exp (gen) (mul y alpha-0 x)))
+  (deflistener (cat (exp (gen) (mul alpha-0 x)) y))
+  (precedes ((0 2) (3 2)) ((0 2) (5 0)) ((1 0) (0 0)) ((2 0) (3 0))
+    ((3 1) (0 1)) ((3 3) (0 3)) ((4 1) (0 5)) ((5 1) (4 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen na nb y alpha alpha-0 x)
+  (absent (y alpha) (y (mul alpha-0 x)) (x alpha-0))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul alpha-0 x)) y))
+    (exp (gen) (mul y alpha-0 x)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
+          (privk b)))
+      (recv
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha-0 x)) (privk a)))
+      (send (enc na nb (exp (gen) (mul y alpha-0 x)))) (recv nb))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
+          (privk b)))
+      (send
+        (enc "final" b na (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha-0 x)) (privk a))))
+    ((recv (exp (gen) (mul y alpha-0 x)))
+      (send (exp (gen) (mul y alpha-0 x))))
+    ((recv (cat (exp (gen) (mul alpha-0 x)) y))
+      (send (cat (exp (gen) (mul alpha-0 x)) y))))
+  (label 29)
+  (parent 23)
   (unrealized (5 0))
   (dead)
   (comment "empty cohort"))
diff --git a/tst/dh_group_sig_auth_failure.scm b/tst/dh_group_sig_auth_failure.scm
--- a/tst/dh_group_sig_auth_failure.scm
+++ b/tst/dh_group_sig_auth_failure.scm
@@ -1,36 +1,49 @@
-(herald "Signed group DH exchange (version with auth failure)" (algebra diffie-hellman)
-	(limit 100)
-	;(limit 20000) (bound 25)
-	)
-
-;;; This is not a very convincing protocol in my mind.  -- JDG
+(herald "Signed group DH exchange (version with auth failure)"
+	(algebra diffie-hellman)
+	(limit 100))
 
 (defprotocol dh_sig diffie-hellman
   (defrole group-init
     (vars (alpha rndx) (group text) (group-dist chan))
     (trace
-     (send group-dist (cat "Group id" group (exp (gen) alpha))))
+     (send group-dist (cat "Group id" group
+			   (exp (gen) alpha))))
     (uniq-gen alpha)
     (conf group-dist))
+  
   (defrole init
-    (vars (x rndx) (y expt) (g base) (group text) (a b name) (group-dist chan))
+    (vars (x rndx) (y expt) (alpha expt) (group text)
+	  (a b name) (group-dist chan))
     (trace
-     (recv group-dist (cat "Group id" group g))
-     (send (enc (exp g x) (privk a)))
-     (recv (enc (exp g y) (exp g x) (privk b)))
-     (send (enc "final" (exp g y) (exp g x) (privk a))))
+     (recv group-dist (cat "Group id" group
+			   (exp (gen) alpha)))
+     (send (enc (exp (exp (gen) alpha) x)
+		(privk a)))
+     (recv (enc (exp (exp (gen) alpha) y)
+		(exp (exp (gen) alpha) x)
+		(privk b)))
+     (send (enc "final" (exp (exp (gen) alpha) y)
+		(exp (exp (gen) alpha) x)
+		(privk a))))
     (uniq-gen x)
     (auth group-dist))
+
   (defrole resp
-    (vars (y rndx) (x expt) (g base) (group text) (a b name) (group-dist chan))
+    (vars (y rndx) (x expt) (alpha expt) (group text)
+	  (a b name) (group-dist chan))
     (trace
-     (recv group-dist (cat "Group id" group g))
-     (recv (enc (exp g x) (privk a)))
-     (send (enc (exp g y) (exp g x) (privk b)))
-     (recv (enc "final" (exp g y) (exp g x) (privk a))))
+     (recv group-dist (cat "Group id" group
+			   (exp (gen) alpha)))
+     (recv (enc (exp (exp (gen) alpha) x)
+		(privk a)))
+     (send (enc (exp (exp (gen) alpha) y)
+		(exp (exp (gen) alpha) x)
+		(privk b)))
+     (recv (enc "final" (exp (exp (gen) alpha) y)
+		(exp (exp (gen) alpha) x)
+		(privk a))))
     (uniq-gen y)
-    (auth group-dist))
-)
+    (auth group-dist)))
 
 (defskeleton dh_sig
   (vars (a b name))
@@ -44,43 +57,3 @@
   (non-orig (privk a) (privk b))
 )
 
-(defprotocol dh_sig2 diffie-hellman
-  (defrole group-init
-    (vars (alpha rndx) (group text) (group-dist chan))
-    (trace
-     (send group-dist (cat "Group id" group (exp (gen) alpha))))
-    (uniq-gen alpha)
-    (conf group-dist))
-  (defrole init
-    (vars (x rndx) (y expt) (g base) (n group text) (a b name) (group-dist chan))
-    (trace
-     (recv group-dist (cat "Group id" group g))
-     (send (enc (exp g x) (privk a)))
-     (recv (enc (exp g y) (exp g x) (privk b)))
-     (send (enc n (exp g (mul x y))))
-     (recv n))
-    (uniq-gen x n)
-    (auth group-dist))
-  (defrole resp
-    (vars (y rndx) (x expt) (g base) (n group text) (a b name) (group-dist chan))
-    (trace
-     (recv group-dist (cat "Group id" group g))
-     (recv (enc (exp g x) (privk a)))
-     (send (enc (exp g y) (exp g x) (privk b)))
-     (recv (enc n (exp g (mul x y))))
-     (send n))
-    (uniq-gen y)
-    (auth group-dist))
-)
-
-(defskeleton dh_sig2
-  (vars (a b name))
-  (defstrand init 5 (a a) (b b))
-  (non-orig (privk b) (privk a))
-)
-
-(defskeleton dh_sig2
-  (vars (a b name))
-  (defstrand resp 5 (a a) (b b))
-  (non-orig (privk a) (privk b))
-)
diff --git a/tst/dh_group_sig_auth_failure.tst b/tst/dh_group_sig_auth_failure.tst
--- a/tst/dh_group_sig_auth_failure.tst
+++ b/tst/dh_group_sig_auth_failure.tst
@@ -1,4603 +1,545 @@
 (herald "Signed group DH exchange (version with auth failure)"
   (algebra diffie-hellman) (limit 100))
 
-(comment "CPSA 4.4.3")
-(comment "All input read from tst/dh_group_sig_auth_failure.scm")
-(comment "Step count limited to 100")
-
-(defprotocol dh_sig diffie-hellman
-  (defrole group-init
-    (vars (alpha rndx) (group text) (group-dist chan))
-    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
-    (uniq-gen alpha)
-    (conf group-dist))
-  (defrole init
-    (vars (x rndx) (y expt) (g base) (group text) (a b name)
-      (group-dist chan))
-    (trace (recv group-dist (cat "Group id" group g))
-      (send (enc (exp g x) (privk a)))
-      (recv (enc (exp g y) (exp g x) (privk b)))
-      (send (enc "final" (exp g y) (exp g x) (privk a))))
-    (uniq-gen x)
-    (auth group-dist))
-  (defrole resp
-    (vars (y rndx) (x expt) (g base) (group text) (a b name)
-      (group-dist chan))
-    (trace (recv group-dist (cat "Group id" group g))
-      (recv (enc (exp g x) (privk a)))
-      (send (enc (exp g y) (exp g x) (privk b)))
-      (recv (enc "final" (exp g y) (exp g x) (privk a))))
-    (uniq-gen y)
-    (absent (y x))
-    (auth group-dist))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton dh_sig
-  (vars (group text) (a b name) (g base) (group-dist chan) (x rndx)
-    (y expt))
-  (defstrand init 4 (group group) (a a) (b b) (g g)
-    (group-dist group-dist) (x x) (y y))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (auth group-dist)
-  (traces
-    ((recv group-dist (cat "Group id" group g))
-      (send (enc (exp g x) (privk a)))
-      (recv (enc (exp g y) (exp g x) (privk b)))
-      (send (enc "final" (exp g y) (exp g x) (privk a)))))
-  (label 0)
-  (unrealized (0 0) (0 2))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group text) (a b name) (group-dist chan) (x rndx) (y expt)
-    (alpha rndx))
-  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x alpha)
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist (cat "Group id" group (exp (gen) alpha))) (0 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))
-      (send
-        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha)))))
-  (label 1)
-  (parent 0)
-  (unrealized (0 2))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (alpha x y rndx) (x-0 expt))
-  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x) (y (mul x y (rec x-0))))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a-0) (b b)
-    (g (exp (gen) (mul alpha x (rec x-0)))) (group-dist group-dist-0)
-    (y y) (x x-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen alpha x y)
-  (absent (y x-0))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation encryption-test (added-strand resp 3)
-    (enc (exp (gen) (mul alpha x y (rec x-0))) (exp (gen) (mul alpha x))
-      (privk b)) (0 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul alpha x y (rec x-0)))
-          (exp (gen) (mul alpha x)) (privk b)))
-      (send
-        (enc "final" (exp (gen) (mul alpha x y (rec x-0)))
-          (exp (gen) (mul alpha x)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul alpha x (rec x-0)))))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul alpha x y (rec x-0)))
-          (exp (gen) (mul alpha x)) (privk b)))))
-  (label 2)
-  (parent 1)
-  (unrealized (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group text) (a b a-0 name) (group-dist chan) (y x alpha rndx))
-  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a-0) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (displaced 3 1 group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (2 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))
-      (send
-        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))))
-  (label 3)
-  (parent 2)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (y alpha x alpha-0 rndx))
-  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x) (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a-0) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (y y)
-    (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((3 0) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (2 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b)))
-      (send
-        (enc "final" (exp (gen) (mul y alpha-0))
-          (exp (gen) (mul alpha x)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
-  (label 4)
-  (parent 2)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group text) (a b a-0 name) (group-dist chan) (y x alpha rndx))
-  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a-0) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation generalization weakened ((0 1) (2 0)))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))
-      (send
-        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))))
-  (label 5)
-  (parent 3)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (x x) (y y) (g (exp (gen) alpha)) (group group)
-        (group-dist group-dist))))
-  (origs))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (y alpha x alpha-0 rndx))
-  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x) (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a-0) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (y y)
-    (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2))
-    ((3 0) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation generalization weakened ((0 1) (2 0)))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b)))
-      (send
-        (enc "final" (exp (gen) (mul y alpha-0))
-          (exp (gen) (mul alpha x)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
-  (label 6)
-  (parent 4)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (y alpha x alpha-0 rndx))
-  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x) (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a-0) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (y y)
-    (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((2 2) (0 2)) ((3 0) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation generalization weakened ((1 0) (2 0)))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b)))
-      (send
-        (enc "final" (exp (gen) (mul y alpha-0))
-          (exp (gen) (mul alpha x)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
-  (label 7)
-  (parent 6)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (x x) (y (mul y (rec alpha) alpha-0))
-        (g (exp (gen) alpha)) (group group) (group-dist group-dist))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol dh_sig diffie-hellman
-  (defrole group-init
-    (vars (alpha rndx) (group text) (group-dist chan))
-    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
-    (uniq-gen alpha)
-    (conf group-dist))
-  (defrole init
-    (vars (x rndx) (y expt) (g base) (group text) (a b name)
-      (group-dist chan))
-    (trace (recv group-dist (cat "Group id" group g))
-      (send (enc (exp g x) (privk a)))
-      (recv (enc (exp g y) (exp g x) (privk b)))
-      (send (enc "final" (exp g y) (exp g x) (privk a))))
-    (uniq-gen x)
-    (auth group-dist))
-  (defrole resp
-    (vars (y rndx) (x expt) (g base) (group text) (a b name)
-      (group-dist chan))
-    (trace (recv group-dist (cat "Group id" group g))
-      (recv (enc (exp g x) (privk a)))
-      (send (enc (exp g y) (exp g x) (privk b)))
-      (recv (enc "final" (exp g y) (exp g x) (privk a))))
-    (uniq-gen y)
-    (absent (y x))
-    (auth group-dist))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton dh_sig
-  (vars (group text) (a b name) (g base) (group-dist chan) (y rndx)
-    (x expt))
-  (defstrand resp 4 (group group) (a a) (b b) (g g)
-    (group-dist group-dist) (y y) (x x))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (absent (y x))
-  (auth group-dist)
-  (traces
-    ((recv group-dist (cat "Group id" group g))
-      (recv (enc (exp g x) (privk a)))
-      (send (enc (exp g y) (exp g x) (privk b)))
-      (recv (enc "final" (exp g y) (exp g x) (privk a)))))
-  (label 8)
-  (unrealized (0 0) (0 1) (0 3))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group text) (a b name) (group-dist chan) (y rndx) (x expt)
-    (alpha rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist (cat "Group id" group (exp (gen) alpha))) (0 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))
-      (recv
-        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha)))))
-  (label 9)
-  (parent 8)
-  (unrealized (0 1) (0 3))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y rndx) (x expt) (alpha x-0 rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a)
-    (g (exp (gen) (mul x alpha (rec x-0)))) (group-dist group-dist-0)
-    (x x-0))
-  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x-0)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation encryption-test (added-strand init 2)
-    (enc (exp (gen) (mul x alpha)) (privk a)) (0 1))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))
-      (recv
-        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul x alpha (rec x-0)))))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))))
-  (label 10)
-  (parent 9)
-  (unrealized (0 3) (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (displaced 3 1 group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (2 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))
-      (recv
-        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))))
-  (label 11)
-  (parent 10)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1)) ((3 0) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (2 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b)))
-      (recv
-        (enc "final" (exp (gen) (mul y alpha))
-          (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
-  (label 12)
-  (parent 10)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group text) (a b b-0 name) (group-dist chan) (alpha y x rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 4 (group group) (a a) (b b-0) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x) (y y))
-  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((2 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen alpha y x)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation encryption-test (displaced 2 3 init 4)
-    (enc "final" (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x-0))
-      (privk a)) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b)))
-      (recv
-        (enc "final" (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b-0)))
-      (send
-        (enc "final" (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk a)))))
-  (label 13)
-  (parent 11)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (y y) (x x) (g (exp (gen) alpha)) (group group)
-        (group-dist group-dist))))
-  (origs))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b b-0 name)
-    (group-dist group-dist-0 chan) (alpha y x x-0 rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (group group-0) (a a) (b b-0)
-    (g (exp (gen) (mul alpha x (rec x-0)))) (group-dist group-dist-0)
-    (x x-0) (y (mul y (rec x) x-0)))
-  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((2 1) (3 0)) ((3 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen alpha y x x-0)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation encryption-test (added-strand init 4)
-    (enc "final" (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-      (privk a)) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b)))
-      (recv
-        (enc "final" (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul alpha x (rec x-0)))))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b-0)))
-      (send
-        (enc "final" (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk a)))))
-  (label 14)
-  (parent 11)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b b-0 name)
-    (group-dist group-dist-0 chan) (y alpha alpha-0 x rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x (mul (rec alpha) alpha-0 x)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (group group-0) (a a) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x)
-    (y (mul y alpha (rec alpha-0))))
-  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (3 0))
-    ((3 1) (0 1)) ((3 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha alpha-0 x)
-  (absent (y (mul (rec alpha) alpha-0 x)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation encryption-test (displaced 2 4 init 4)
-    (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x-0 alpha-0))
-      (privk a)) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
-          (privk b)))
-      (recv
-        (enc "final" (exp (gen) (mul y alpha))
-          (exp (gen) (mul alpha-0 x)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
-          (privk b-0)))
-      (send
-        (enc "final" (exp (gen) (mul y alpha))
-          (exp (gen) (mul alpha-0 x)) (privk a)))))
-  (label 15)
-  (parent 12)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig
-  (vars (group group-0 group-1 text) (a b b-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y alpha x alpha-0 x-0 rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (group group-1) (a a) (b b-0)
-    (g (exp (gen) (mul x alpha-0 (rec x-0)))) (group-dist group-dist-1)
-    (x x-0) (y (mul y alpha (rec x) (rec alpha-0) x-0)))
-  (precedes ((0 2) (4 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((2 1) (4 0)) ((3 0) (2 0)) ((4 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0 x-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation encryption-test (added-strand init 4)
-    (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-      (privk a)) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b)))
-      (recv
-        (enc "final" (exp (gen) (mul y alpha))
-          (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-1
-       (cat "Group id" group-1 (exp (gen) (mul x alpha-0 (rec x-0)))))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b-0)))
-      (send
-        (enc "final" (exp (gen) (mul y alpha))
-          (exp (gen) (mul x alpha-0)) (privk a)))))
-  (label 16)
-  (parent 12)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig
-  (vars (group group-0 text) (a b b-0 name)
-    (group-dist group-dist-0 chan) (y alpha alpha-0 x rndx))
-  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x (mul (rec alpha) alpha-0 x)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (group group-0) (a a) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x)
-    (y (mul y alpha (rec alpha-0))))
-  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((2 0) (3 0)) ((3 1) (0 1))
-    ((3 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha alpha-0 x)
-  (absent (y (mul (rec alpha) alpha-0 x)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation generalization weakened ((1 0) (3 0)))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
-          (privk b)))
-      (recv
-        (enc "final" (exp (gen) (mul y alpha))
-          (exp (gen) (mul alpha-0 x)) (privk a))))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
-          (privk b-0)))
-      (send
-        (enc "final" (exp (gen) (mul y alpha))
-          (exp (gen) (mul alpha-0 x)) (privk a)))))
-  (label 17)
-  (parent 15)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (y y) (x (mul (rec alpha) alpha-0 x))
-        (g (exp (gen) alpha)) (group group) (group-dist group-dist))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol dh_sig2 diffie-hellman
-  (defrole group-init
-    (vars (alpha rndx) (group text) (group-dist chan))
-    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
-    (uniq-gen alpha)
-    (conf group-dist))
-  (defrole init
-    (vars (x rndx) (y expt) (g base) (n group text) (a b name)
-      (group-dist chan))
-    (trace (recv group-dist (cat "Group id" group g))
-      (send (enc (exp g x) (privk a)))
-      (recv (enc (exp g y) (exp g x) (privk b)))
-      (send (enc n (exp g (mul x y)))) (recv n))
-    (uniq-gen n x)
-    (auth group-dist))
-  (defrole resp
-    (vars (y rndx) (x expt) (g base) (n group text) (a b name)
-      (group-dist chan))
-    (trace (recv group-dist (cat "Group id" group g))
-      (recv (enc (exp g x) (privk a)))
-      (send (enc (exp g y) (exp g x) (privk b)))
-      (recv (enc n (exp g (mul y x)))) (send n))
-    (uniq-gen y)
-    (absent (y x))
-    (auth group-dist))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (g base) (group-dist chan) (x rndx)
-    (y expt))
-  (defstrand init 5 (n n) (group group) (a a) (b b) (g g)
-    (group-dist group-dist) (x x) (y y))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n x)
-  (auth group-dist)
-  (traces
-    ((recv group-dist (cat "Group id" group g))
-      (send (enc (exp g x) (privk a)))
-      (recv (enc (exp g y) (exp g x) (privk b)))
-      (send (enc n (exp g (mul x y)))) (recv n)))
-  (label 18)
-  (unrealized (0 0) (0 2))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (x rndx) (y expt)
-    (alpha rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n x alpha)
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist (cat "Group id" group (exp (gen) alpha))) (0 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n (exp (gen) (mul x y alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha)))))
-  (label 19)
-  (parent 18)
-  (unrealized (0 2))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (alpha x y rndx) (x-0 expt))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul x y (rec x-0))))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a-0) (b b)
-    (g (exp (gen) (mul alpha x (rec x-0)))) (group-dist group-dist-0)
-    (y y) (x x-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha x y)
-  (absent (y x-0))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation encryption-test (added-strand resp 3)
-    (enc (exp (gen) (mul alpha x y (rec x-0))) (exp (gen) (mul alpha x))
-      (privk b)) (0 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul alpha x y (rec x-0)))
-          (exp (gen) (mul alpha x)) (privk b)))
-      (send (enc n (exp (gen) (mul alpha x x y (rec x-0))))) (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul alpha x (rec x-0)))))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul alpha x y (rec x-0)))
-          (exp (gen) (mul alpha x)) (privk b)))))
-  (label 20)
-  (parent 19)
-  (unrealized (0 4) (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b a-0 name) (group-dist chan)
-    (y x alpha rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a-0) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (displaced 3 1 group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (2 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n (exp (gen) (mul y x alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b)))))
-  (label 21)
-  (parent 20)
-  (unrealized (0 4))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (y alpha x alpha-0 rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a-0) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (y y)
-    (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((3 0) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (2 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n (exp (gen) (mul y x alpha-0))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
-  (label 22)
-  (parent 20)
-  (unrealized (0 4))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a a-0 b name) (group-dist chan)
-    (alpha x y rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 5 (n n) (group group) (a a-0) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (precedes ((0 1) (2 0)) ((0 3) (2 3)) ((1 0) (0 0)) ((2 2) (0 2))
-    ((2 4) (0 4)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha x y)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test (displaced 2 3 resp 5) n (0 4)
-    (enc n (exp (gen) (mul y-0 x-0 alpha))))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n (exp (gen) (mul alpha x y))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b))) (recv (enc n (exp (gen) (mul alpha x y))))
-      (send n)))
-  (label 23)
-  (parent 21)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 a-1 b-0 name)
-    (group-dist group-dist-0 chan) (y x alpha y-0 rndx) (x-0 expt))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a-0) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (defstrand resp 5 (n n) (group group-0) (a a-1) (b b-0)
-    (g (exp (gen) (mul y x alpha (rec y-0) (rec x-0))))
-    (group-dist group-dist-0) (y y-0) (x x-0))
-  (precedes ((0 1) (2 0)) ((0 3) (3 3)) ((1 0) (0 0)) ((2 2) (0 2))
-    ((2 2) (3 0)) ((3 4) (0 4)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha y-0)
-  (absent (y x) (y-0 x-0))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation nonce-test (added-strand resp 5) n (0 4)
-    (enc n (exp (gen) (mul y x alpha))))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n (exp (gen) (mul y x alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))))
-    ((recv group-dist-0
-       (cat "Group id" group-0
-         (exp (gen) (mul y x alpha (rec y-0) (rec x-0)))))
-      (recv (enc (exp (gen) (mul y x alpha (rec y-0))) (privk a-1)))
-      (send
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul y x alpha (rec y-0))) (privk b-0)))
-      (recv (enc n (exp (gen) (mul y x alpha)))) (send n)))
-  (label 24)
-  (parent 21)
-  (unrealized (3 0) (3 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b a-0 name) (group-dist chan)
-    (y x alpha rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a-0) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (3 0))
-    ((3 1) (0 4)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test (added-listener (exp (gen) (mul y x alpha))) n
-    (0 4) (enc n (exp (gen) (mul y x alpha))))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n (exp (gen) (mul y x alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha)))))
-  (label 25)
-  (parent 21)
-  (unrealized (3 0))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 a-1 b-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y alpha x alpha-0 y-0 rndx) (x-0 expt))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a-0) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (y y)
-    (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand resp 5 (n n) (group group-1) (a a-1) (b b-0)
-    (g (exp (gen) (mul y x alpha-0 (rec y-0) (rec x-0))))
-    (group-dist group-dist-1) (y y-0) (x x-0))
-  (precedes ((0 1) (2 0)) ((0 3) (4 3)) ((1 0) (0 0)) ((2 2) (0 2))
-    ((2 2) (4 0)) ((3 0) (2 0)) ((4 4) (0 4)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0 y-0)
-  (absent (y (mul alpha x (rec alpha-0))) (y-0 x-0))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand resp 5) n (0 4)
-    (enc n (exp (gen) (mul y x alpha-0))))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n (exp (gen) (mul y x alpha-0))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-1
-       (cat "Group id" group-1
-         (exp (gen) (mul y x alpha-0 (rec y-0) (rec x-0)))))
-      (recv (enc (exp (gen) (mul y x alpha-0 (rec y-0))) (privk a-1)))
-      (send
-        (enc (exp (gen) (mul y x alpha-0 (rec x-0)))
-          (exp (gen) (mul y x alpha-0 (rec y-0))) (privk b-0)))
-      (recv (enc n (exp (gen) (mul y x alpha-0)))) (send n)))
-  (label 26)
-  (parent 22)
-  (unrealized (4 0) (4 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (y alpha x alpha-0 rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a-0) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (y y)
-    (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (4 0))
-    ((3 0) (2 0)) ((4 1) (0 4)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test (added-listener (exp (gen) (mul y x alpha-0))) n
-    (0 4) (enc n (exp (gen) (mul y x alpha-0))))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n (exp (gen) (mul y x alpha-0))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0)))))
-  (label 27)
-  (parent 22)
-  (unrealized (4 0))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a a-0 b name) (group-dist chan)
-    (alpha x y rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 5 (n n) (group group) (a a-0) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (precedes ((0 1) (2 1)) ((0 3) (2 3)) ((1 0) (0 0)) ((1 0) (2 0))
-    ((2 2) (0 2)) ((2 4) (0 4)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha x y)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation generalization weakened ((0 1) (2 0)))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n (exp (gen) (mul alpha x y))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b))) (recv (enc n (exp (gen) (mul alpha x y))))
-      (send n)))
-  (label 28)
-  (parent 23)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (x x) (y y) (g (exp (gen) alpha)) (n n) (group group)
-        (group-dist group-dist))))
-  (origs))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 a-1 b-0 name)
-    (group-dist group-dist-0 chan) (y x alpha y-0 rndx) (x-0 expt))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a-0) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (defstrand resp 3 (group group-0) (a a-1) (b b-0)
-    (g (exp (gen) (mul y x alpha (rec y-0)))) (group-dist group-dist-0)
-    (y y-0) (x x-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (4 0))
-    ((3 1) (0 4)) ((4 2) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha y-0)
-  (absent (y x) (y-0 x-0))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation nonce-test (added-strand resp 3)
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n (exp (gen) (mul y x alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul y x alpha (rec y-0)))))
-      (recv (enc (exp (gen) (mul y x alpha (rec y-0) x-0)) (privk a-1)))
-      (send
-        (enc (exp (gen) (mul y x alpha))
-          (exp (gen) (mul y x alpha (rec y-0) x-0)) (privk b-0)))))
-  (label 29)
-  (parent 25)
-  (unrealized (4 0) (4 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 a-1 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a-0) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (defstrand init 2 (group group-0) (a a-1)
-    (g (exp (gen) (mul y x alpha (rec x-0)))) (group-dist group-dist-0)
-    (x x-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (4 0))
-    ((3 1) (0 4)) ((4 1) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation nonce-test (added-strand init 2)
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n (exp (gen) (mul y x alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul y x alpha (rec x-0)))))
-      (send (enc (exp (gen) (mul y x alpha)) (privk a-1)))))
-  (label 30)
-  (parent 25)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b a-0 name) (group-dist chan)
-    (y x alpha rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a-0) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (deflistener (cat (exp (gen) (mul y x)) alpha))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (4 0))
-    ((3 1) (0 4)) ((4 1) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x)) alpha))
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n (exp (gen) (mul y x alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv (cat (exp (gen) (mul y x)) alpha))
-      (send (cat (exp (gen) (mul y x)) alpha))))
-  (label 31)
-  (parent 25)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b a-0 name) (group-dist chan)
-    (y x alpha rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a-0) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (deflistener (cat (exp (gen) (mul y alpha)) x))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (4 0))
-    ((3 1) (0 4)) ((4 1) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y alpha)) x))
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n (exp (gen) (mul y x alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv (cat (exp (gen) (mul y alpha)) x))
-      (send (cat (exp (gen) (mul y alpha)) x))))
-  (label 32)
-  (parent 25)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b a-0 name) (group-dist chan)
-    (y x alpha rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group) (a a-0) (b b) (g (exp (gen) alpha))
-    (group-dist group-dist) (y y) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (deflistener (cat (exp (gen) (mul x alpha)) y))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (4 0))
-    ((3 1) (0 4)) ((4 1) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul x alpha)) y))
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (send (enc n (exp (gen) (mul y x alpha))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv (cat (exp (gen) (mul x alpha)) y))
-      (send (cat (exp (gen) (mul x alpha)) y))))
-  (label 33)
-  (parent 25)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 a-1 b-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y alpha x alpha-0 y-0 rndx) (x-0 expt))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a-0) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (y y)
-    (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (defstrand resp 3 (group group-1) (a a-1) (b b-0)
-    (g (exp (gen) (mul y x alpha-0 (rec y-0))))
-    (group-dist group-dist-1) (y y-0) (x x-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (5 0))
-    ((3 0) (2 0)) ((4 1) (0 4)) ((5 2) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0 y-0)
-  (absent (y (mul alpha x (rec alpha-0))) (y-0 x-0))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand resp 3)
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n (exp (gen) (mul y x alpha-0))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv group-dist-1
-       (cat "Group id" group-1 (exp (gen) (mul y x alpha-0 (rec y-0)))))
-      (recv
-        (enc (exp (gen) (mul y x alpha-0 (rec y-0) x-0)) (privk a-1)))
-      (send
-        (enc (exp (gen) (mul y x alpha-0))
-          (exp (gen) (mul y x alpha-0 (rec y-0) x-0)) (privk b-0)))))
-  (label 34)
-  (parent 27)
-  (unrealized (5 0) (5 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 a-1 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y alpha x alpha-0 x-0 rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a-0) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (y y)
-    (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (defstrand init 2 (group group-1) (a a-1)
-    (g (exp (gen) (mul y x alpha-0 (rec x-0))))
-    (group-dist group-dist-1) (x x-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (5 0))
-    ((3 0) (2 0)) ((4 1) (0 4)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0 x-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand init 2)
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n (exp (gen) (mul y x alpha-0))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv group-dist-1
-       (cat "Group id" group-1 (exp (gen) (mul y x alpha-0 (rec x-0)))))
-      (send (enc (exp (gen) (mul y x alpha-0)) (privk a-1)))))
-  (label 35)
-  (parent 27)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (y alpha x alpha-0 rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a-0) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (y y)
-    (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (deflistener (cat (exp (gen) (mul y x)) alpha-0))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (5 0))
-    ((3 0) (2 0)) ((4 1) (0 4)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x)) alpha-0))
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n (exp (gen) (mul y x alpha-0))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv (cat (exp (gen) (mul y x)) alpha-0))
-      (send (cat (exp (gen) (mul y x)) alpha-0))))
-  (label 36)
-  (parent 27)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (y alpha x alpha-0 rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a-0) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (y y)
-    (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (deflistener (cat (exp (gen) (mul y alpha-0)) x))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (5 0))
-    ((3 0) (2 0)) ((4 1) (0 4)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y alpha-0)) x))
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n (exp (gen) (mul y x alpha-0))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv (cat (exp (gen) (mul y alpha-0)) x))
-      (send (cat (exp (gen) (mul y alpha-0)) x))))
-  (label 37)
-  (parent 27)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (y alpha x alpha-0 rndx))
-  (defstrand init 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x)
-    (y (mul y (rec alpha) alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand resp 3 (group group-0) (a a-0) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (y y)
-    (x (mul alpha x (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (deflistener (cat (exp (gen) (mul x alpha-0)) y))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)) ((2 2) (5 0))
-    ((3 0) (2 0)) ((4 1) (0 4)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0)
-  (absent (y (mul alpha x (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul x alpha-0)) y))
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))) (send (enc n (exp (gen) (mul y x alpha-0))))
-      (recv n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
-          (privk b))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv (cat (exp (gen) (mul x alpha-0)) y))
-      (send (cat (exp (gen) (mul x alpha-0)) y))))
-  (label 38)
-  (parent 27)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
-
-(defprotocol dh_sig2 diffie-hellman
-  (defrole group-init
-    (vars (alpha rndx) (group text) (group-dist chan))
-    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
-    (uniq-gen alpha)
-    (conf group-dist))
-  (defrole init
-    (vars (x rndx) (y expt) (g base) (n group text) (a b name)
-      (group-dist chan))
-    (trace (recv group-dist (cat "Group id" group g))
-      (send (enc (exp g x) (privk a)))
-      (recv (enc (exp g y) (exp g x) (privk b)))
-      (send (enc n (exp g (mul x y)))) (recv n))
-    (uniq-gen n x)
-    (auth group-dist))
-  (defrole resp
-    (vars (y rndx) (x expt) (g base) (n group text) (a b name)
-      (group-dist chan))
-    (trace (recv group-dist (cat "Group id" group g))
-      (recv (enc (exp g x) (privk a)))
-      (send (enc (exp g y) (exp g x) (privk b)))
-      (recv (enc n (exp g (mul y x)))) (send n))
-    (uniq-gen y)
-    (absent (y x))
-    (auth group-dist))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (g base) (group-dist chan) (y rndx)
-    (x expt))
-  (defstrand resp 5 (n n) (group group) (a a) (b b) (g g)
-    (group-dist group-dist) (y y) (x x))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (absent (y x))
-  (auth group-dist)
-  (traces
-    ((recv group-dist (cat "Group id" group g))
-      (recv (enc (exp g x) (privk a)))
-      (send (enc (exp g y) (exp g x) (privk b)))
-      (recv (enc n (exp g (mul y x)))) (send n)))
-  (label 39)
-  (unrealized (0 0) (0 1))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (y rndx) (x expt)
-    (alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist (cat "Group id" group (exp (gen) alpha))) (0 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha)))))
-  (label 40)
-  (parent 39)
-  (unrealized (0 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y rndx) (x expt) (alpha x-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a)
-    (g (exp (gen) (mul x alpha (rec x-0)))) (group-dist group-dist-0)
-    (x x-0))
-  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x-0)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation encryption-test (added-strand init 2)
-    (enc (exp (gen) (mul x alpha)) (privk a)) (0 1))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul x alpha (rec x-0)))))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))))
-  (label 41)
-  (parent 40)
-  (unrealized (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (displaced 3 1 group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (2 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a)))))
-  (label 42)
-  (parent 41)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1)) ((3 0) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (2 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
-  (label 43)
-  (parent 41)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (b a b-0 name) (group-dist chan)
-    (alpha y x rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 4 (n n) (group group) (a a) (b b-0)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
-  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((2 3) (0 3)))
-  (non-orig (privk b) (privk a))
-  (uniq-gen n alpha y x)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation encryption-test (displaced 2 3 init 4)
-    (enc n (exp (gen) (mul y-0 x-0 alpha))) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b))) (recv (enc n (exp (gen) (mul alpha y x))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul alpha x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
-          (privk b-0))) (send (enc n (exp (gen) (mul alpha y x))))))
-  (label 44)
-  (parent 42)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (y y) (x x) (g (exp (gen) alpha)) (n n) (group group)
-        (group-dist group-dist))))
-  (origs))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 rndx) (y-0 expt))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) (mul y x alpha (rec x-0) (rec y-0))))
-    (group-dist group-dist-0) (x x-0) (y y-0))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation encryption-test (added-strand init 4)
-    (enc n (exp (gen) (mul y x alpha))) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist-0
-       (cat "Group id" group-0
-         (exp (gen) (mul y x alpha (rec x-0) (rec y-0)))))
-      (send (enc (exp (gen) (mul y x alpha (rec y-0))) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul y x alpha (rec y-0))) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha))))))
-  (label 45)
-  (parent 42)
-  (unrealized (3 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation encryption-test
-    (added-listener (exp (gen) (mul y x alpha)))
-    (enc n (exp (gen) (mul y x alpha))) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha)))))
-  (label 46)
-  (parent 42)
-  (unrealized (3 0))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (b a b-0 name)
-    (group-dist group-dist-0 chan) (alpha alpha-0 y x rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) alpha-0 x)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-0) (a a) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x) (y y))
-  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (3 0))
-    ((3 1) (0 1)) ((3 3) (0 3)))
-  (non-orig (privk b) (privk a))
-  (uniq-gen n alpha alpha-0 y x)
-  (absent (y (mul (rec alpha) alpha-0 x)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation encryption-test (displaced 2 4 init 4)
-    (enc n (exp (gen) (mul y-0 x-0 alpha-0))) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha-0 x))
-          (privk b))) (recv (enc n (exp (gen) (mul alpha-0 y x))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul alpha-0 y)) (exp (gen) (mul alpha-0 x))
-          (privk b-0))) (send (enc n (exp (gen) (mul alpha-0 y x))))))
-  (label 47)
-  (parent 43)
-  (unrealized (3 2))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y alpha x alpha-0 x-0 rndx) (y-0 expt))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-1) (a a-0) (b b-0)
-    (g (exp (gen) (mul y x alpha-0 (rec x-0) (rec y-0))))
-    (group-dist group-dist-1) (x x-0) (y y-0))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y alpha x alpha-0 x-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation encryption-test (added-strand init 4)
-    (enc n (exp (gen) (mul y x alpha-0))) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-1
-       (cat "Group id" group-1
-         (exp (gen) (mul y x alpha-0 (rec x-0) (rec y-0)))))
-      (send (enc (exp (gen) (mul y x alpha-0 (rec y-0))) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha-0 (rec x-0)))
-          (exp (gen) (mul y x alpha-0 (rec y-0))) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha-0))))))
-  (label 48)
-  (parent 43)
-  (unrealized (4 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation encryption-test
-    (added-listener (exp (gen) (mul y x alpha-0)))
-    (enc n (exp (gen) (mul y x alpha-0))) (0 3))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0)))))
-  (label 49)
-  (parent 43)
-  (unrealized (4 0))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b a-0 b-0 name) (group-dist chan)
-    (y x x-0 alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group) (a a-0) (b b-0)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x-0)
-    (y (mul y x (rec x-0))))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x x-0 alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation channel-test (displaced 4 1 group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x-0 alpha)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x (rec x-0) alpha))
-          (exp (gen) (mul x-0 alpha)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha))))))
-  (label 50)
-  (parent 45)
-  (unrealized (3 2))
-  (comment "6 in cohort - 6 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x-0)
-    (y (mul y x alpha (rec x-0) (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 3) (0 3)) ((4 0) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0 alpha-0)
-  (absent (y x))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-    (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
-  (label 51)
-  (parent 45)
-  (unrealized (3 2))
-  (comment "6 in cohort - 6 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (y x alpha y-0 rndx) (x-0 expt))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (defstrand resp 3 (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) (mul y x alpha (rec y-0)))) (group-dist group-dist-0)
-    (y y-0) (x x-0))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (0 3)) ((4 2) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha y-0)
-  (absent (y x) (y-0 x-0))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation nonce-test (added-strand resp 3)
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul y x alpha (rec y-0)))))
-      (recv (enc (exp (gen) (mul y x alpha (rec y-0) x-0)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y x alpha))
-          (exp (gen) (mul y x alpha (rec y-0) x-0)) (privk b-0)))))
-  (label 52)
-  (parent 46)
-  (unrealized (4 0) (4 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (defstrand init 2 (group group-0) (a a-0)
-    (g (exp (gen) (mul y x alpha (rec x-0)))) (group-dist group-dist-0)
-    (x x-0))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (0 3)) ((4 1) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha x-0)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation nonce-test (added-strand init 2)
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv group-dist-0
-       (cat "Group id" group-0 (exp (gen) (mul y x alpha (rec x-0)))))
-      (send (enc (exp (gen) (mul y x alpha)) (privk a-0)))))
-  (label 53)
-  (parent 46)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (deflistener (cat (exp (gen) (mul y x)) alpha))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (0 3)) ((4 1) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x)) alpha))
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv (cat (exp (gen) (mul y x)) alpha))
-      (send (cat (exp (gen) (mul y x)) alpha))))
-  (label 54)
-  (parent 46)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (deflistener (cat (exp (gen) (mul y alpha)) x))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (0 3)) ((4 1) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y alpha)) x))
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv (cat (exp (gen) (mul y alpha)) x))
-      (send (cat (exp (gen) (mul y alpha)) x))))
-  (label 55)
-  (parent 46)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b name) (group-dist chan) (y x alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (deflistener (exp (gen) (mul y x alpha)))
-  (deflistener (cat (exp (gen) (mul x alpha)) y))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (0 3)) ((4 1) (3 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul x alpha)) y))
-    (exp (gen) (mul y x alpha)) (3 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv (exp (gen) (mul y x alpha)))
-      (send (exp (gen) (mul y x alpha))))
-    ((recv (cat (exp (gen) (mul x alpha)) y))
-      (send (cat (exp (gen) (mul x alpha)) y))))
-  (label 56)
-  (parent 46)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (b a b-0 a-0 b-1 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (alpha alpha-0 y x y-0 rndx) (x-0 expt))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) alpha-0 x)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-0) (a a) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x) (y y))
-  (defstrand resp 3 (group group-1) (a a-0) (b b-1)
-    (g (exp (gen) (mul alpha-0 y (rec y-0)))) (group-dist group-dist-1)
-    (y y-0) (x x-0))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (3 0))
-    ((3 1) (0 1)) ((3 3) (0 3)) ((4 2) (3 2)))
-  (non-orig (privk b) (privk a))
-  (uniq-gen n alpha alpha-0 y x y-0)
-  (absent (y (mul (rec alpha) alpha-0 x)) (y-0 x-0))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand resp 3)
-    (exp (gen) (mul alpha-0 y)) (3 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha-0 x))
-          (privk b))) (recv (enc n (exp (gen) (mul alpha-0 y x))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul alpha-0 y)) (exp (gen) (mul alpha-0 x))
-          (privk b-0))) (send (enc n (exp (gen) (mul alpha-0 y x)))))
-    ((recv group-dist-1
-       (cat "Group id" group-1 (exp (gen) (mul alpha-0 y (rec y-0)))))
-      (recv (enc (exp (gen) (mul alpha-0 y (rec y-0) x-0)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul alpha-0 y))
-          (exp (gen) (mul alpha-0 y (rec y-0) x-0)) (privk b-1)))))
-  (label 57)
-  (parent 47)
-  (unrealized (4 0) (4 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (b a b-0 a-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (alpha alpha-0 y x x-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) alpha-0 x)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-0) (a a) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x) (y y))
-  (defstrand init 2 (group group-1) (a a-0)
-    (g (exp (gen) (mul alpha-0 y (rec x-0)))) (group-dist group-dist-1)
-    (x x-0))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (3 0))
-    ((3 1) (0 1)) ((3 3) (0 3)) ((4 1) (3 2)))
-  (non-orig (privk b) (privk a))
-  (uniq-gen n alpha alpha-0 y x x-0)
-  (absent (y (mul (rec alpha) alpha-0 x)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand init 2)
-    (exp (gen) (mul alpha-0 y)) (3 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha-0 x))
-          (privk b))) (recv (enc n (exp (gen) (mul alpha-0 y x))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul alpha-0 y)) (exp (gen) (mul alpha-0 x))
-          (privk b-0))) (send (enc n (exp (gen) (mul alpha-0 y x)))))
-    ((recv group-dist-1
-       (cat "Group id" group-1 (exp (gen) (mul alpha-0 y (rec x-0)))))
-      (send (enc (exp (gen) (mul alpha-0 y)) (privk a-0)))))
-  (label 58)
-  (parent 47)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (b a b-0 name)
-    (group-dist group-dist-0 chan) (alpha alpha-0 y x rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) alpha-0 x)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-0) (a a) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x) (y y))
-  (deflistener (cat (exp (gen) alpha-0) y))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (3 0))
-    ((3 1) (0 1)) ((3 3) (0 3)) ((4 1) (3 2)))
-  (non-orig (privk b) (privk a))
-  (uniq-gen n alpha alpha-0 y x)
-  (absent (y (mul (rec alpha) alpha-0 x)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test (added-listener (cat (exp (gen) alpha-0) y))
-    (exp (gen) (mul alpha-0 y)) (3 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha-0 x))
-          (privk b))) (recv (enc n (exp (gen) (mul alpha-0 y x))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul alpha-0 y)) (exp (gen) (mul alpha-0 x))
-          (privk b-0))) (send (enc n (exp (gen) (mul alpha-0 y x)))))
-    ((recv (cat (exp (gen) alpha-0) y))
-      (send (cat (exp (gen) alpha-0) y))))
-  (label 59)
-  (parent 47)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (b a b-0 name)
-    (group-dist group-dist-0 chan) (alpha alpha-0 y x rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) alpha-0 x)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-0) (a a) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x) (y y))
-  (deflistener (cat (exp (gen) y) alpha-0))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (3 0))
-    ((3 1) (0 1)) ((3 3) (0 3)) ((4 1) (3 2)))
-  (non-orig (privk b) (privk a))
-  (uniq-gen n alpha alpha-0 y x)
-  (absent (y (mul (rec alpha) alpha-0 x)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test (added-listener (cat (exp (gen) y) alpha-0))
-    (exp (gen) (mul alpha-0 y)) (3 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha-0 x))
-          (privk b))) (recv (enc n (exp (gen) (mul alpha-0 y x))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
-      (recv
-        (enc (exp (gen) (mul alpha-0 y)) (exp (gen) (mul alpha-0 x))
-          (privk b-0))) (send (enc n (exp (gen) (mul alpha-0 y x)))))
-    ((recv (cat (exp (gen) y) alpha-0))
-      (send (cat (exp (gen) y) alpha-0))))
-  (label 60)
-  (parent 47)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist) (y y)
-    (x (mul x alpha (rec alpha-0))))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha-0))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha))
-  (defstrand init 4 (n n) (group group) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist) (x x-0)
-    (y (mul y x alpha (rec x-0) (rec alpha-0))))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0 alpha-0)
-  (absent (y (mul x alpha (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation channel-test (displaced 5 1 group-init 1)
-    (ch-msg group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1)))
-    (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha))))))
-  (label 61)
-  (parent 48)
-  (unrealized (4 2))
-  (comment "6 in cohort - 6 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (alpha y x x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x-0)
-    (y (mul y x (rec x-0))))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 3) (0 3)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha y x x-0 alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation channel-test (displaced 5 3 group-init 1)
-    (ch-msg group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1)))
-    (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x (rec x-0) alpha-0))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha-0))))))
-  (label 62)
-  (parent 48)
-  (unrealized (4 2))
-  (comment "6 in cohort - 6 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (alpha y x alpha-0 x-0 alpha-1 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-1) (a a-0) (b b-0)
-    (g (exp (gen) alpha-1)) (group-dist group-dist-1) (x x-0)
-    (y (mul y x alpha-0 (rec x-0) (rec alpha-1))))
-  (defstrand group-init 1 (group group-1) (group-dist group-dist-1)
-    (alpha alpha-1))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 3) (0 3)) ((5 0) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha y x alpha-0 x-0 alpha-1)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0 group-dist-1)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation channel-test (added-strand group-init 1)
-    (ch-msg group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1)))
-    (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1)))
-      (send (enc (exp (gen) (mul x-0 alpha-1)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha-0 (rec x-0)))
-          (exp (gen) (mul x-0 alpha-1)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha-0)))))
-    ((send group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1)))))
-  (label 63)
-  (parent 48)
-  (unrealized (4 2))
-  (comment "6 in cohort - 6 not yet seen"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y alpha x alpha-0 y-0 rndx) (x-0 expt))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (defstrand resp 3 (group group-1) (a a-0) (b b-0)
-    (g (exp (gen) (mul y x alpha-0 (rec y-0))))
-    (group-dist group-dist-1) (y y-0) (x x-0))
-  (precedes ((0 2) (5 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (0 3)) ((5 2) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0 y-0)
-  (absent (y (mul (rec alpha) x alpha-0)) (y-0 x-0))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand resp 3)
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv group-dist-1
-       (cat "Group id" group-1 (exp (gen) (mul y x alpha-0 (rec y-0)))))
-      (recv
-        (enc (exp (gen) (mul y x alpha-0 (rec y-0) x-0)) (privk a-0)))
-      (send
-        (enc (exp (gen) (mul y x alpha-0))
-          (exp (gen) (mul y x alpha-0 (rec y-0) x-0)) (privk b-0)))))
-  (label 64)
-  (parent 49)
-  (unrealized (5 0) (5 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y alpha x alpha-0 x-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (defstrand init 2 (group group-1) (a a-0)
-    (g (exp (gen) (mul y x alpha-0 (rec x-0))))
-    (group-dist group-dist-1) (x x-0))
-  (precedes ((0 2) (5 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (0 3)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0 x-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand init 2)
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv group-dist-1
-       (cat "Group id" group-1 (exp (gen) (mul y x alpha-0 (rec x-0)))))
-      (send (enc (exp (gen) (mul y x alpha-0)) (privk a-0)))))
-  (label 65)
-  (parent 49)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (deflistener (cat (exp (gen) (mul y x)) alpha-0))
-  (precedes ((0 2) (5 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (0 3)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x)) alpha-0))
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv (cat (exp (gen) (mul y x)) alpha-0))
-      (send (cat (exp (gen) (mul y x)) alpha-0))))
-  (label 66)
-  (parent 49)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (deflistener (cat (exp (gen) (mul y alpha-0)) x))
-  (precedes ((0 2) (5 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (0 3)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y alpha-0)) x))
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv (cat (exp (gen) (mul y alpha-0)) x))
-      (send (cat (exp (gen) (mul y alpha-0)) x))))
-  (label 67)
-  (parent 49)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b name) (group-dist group-dist-0 chan)
-    (y alpha x alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (exp (gen) (mul y x alpha-0)))
-  (deflistener (cat (exp (gen) (mul x alpha-0)) y))
-  (precedes ((0 2) (5 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (0 3)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y alpha x alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul x alpha-0)) y))
-    (exp (gen) (mul y x alpha-0)) (4 0))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (exp (gen) (mul y x alpha-0)))
-      (send (exp (gen) (mul y x alpha-0))))
-    ((recv (cat (exp (gen) (mul x alpha-0)) y))
-      (send (cat (exp (gen) (mul x alpha-0)) y))))
-  (label 68)
-  (parent 49)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b a-0 b-0 name) (group-dist chan)
-    (y x x-0 alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group) (a a-0) (b b-0)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x-0)
-    (y (mul y x (rec x-0))))
-  (deflistener (cat (exp (gen) (mul y x (rec x-0))) alpha))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (4 0)) ((3 3) (0 3)) ((4 1) (3 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x x-0 alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x (rec x-0))) alpha))
-    (exp (gen) (mul y x (rec x-0) alpha)) (3 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x-0 alpha)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x (rec x-0) alpha))
-          (exp (gen) (mul x-0 alpha)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((recv (cat (exp (gen) (mul y x (rec x-0))) alpha))
-      (send (cat (exp (gen) (mul y x (rec x-0))) alpha))))
-  (label 69)
-  (parent 50)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 a-1 b-1 name)
-    (group-dist group-dist-0 chan) (y x x-0 alpha y-0 rndx) (x-1 expt))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group) (a a-0) (b b-0)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x-0)
-    (y (mul y x (rec x-0))))
-  (defstrand resp 3 (group group-0) (a a-1) (b b-1)
-    (g (exp (gen) (mul y x (rec x-0) alpha (rec y-0))))
-    (group-dist group-dist-0) (y y-0) (x x-1))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (4 0)) ((3 3) (0 3)) ((4 2) (3 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x x-0 alpha y-0)
-  (absent (y x) (y-0 x-1))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation nonce-test (added-strand resp 3)
-    (exp (gen) (mul y x (rec x-0) alpha)) (3 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x-0 alpha)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x (rec x-0) alpha))
-          (exp (gen) (mul x-0 alpha)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((recv group-dist-0
-       (cat "Group id" group-0
-         (exp (gen) (mul y x (rec x-0) alpha (rec y-0)))))
-      (recv
-        (enc (exp (gen) (mul y x (rec x-0) alpha (rec y-0) x-1))
-          (privk a-1)))
-      (send
-        (enc (exp (gen) (mul y x (rec x-0) alpha))
-          (exp (gen) (mul y x (rec x-0) alpha (rec y-0) x-1))
-          (privk b-1)))))
-  (label 70)
-  (parent 50)
-  (unrealized (4 0) (4 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 a-1 name)
-    (group-dist group-dist-0 chan) (y x x-0 alpha x-1 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group) (a a-0) (b b-0)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x-0)
-    (y (mul y x (rec x-0))))
-  (defstrand init 2 (group group-0) (a a-1)
-    (g (exp (gen) (mul y x (rec x-0) alpha (rec x-1))))
-    (group-dist group-dist-0) (x x-1))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (4 0)) ((3 3) (0 3)) ((4 1) (3 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x x-0 alpha x-1)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist group-dist-0)
-  (operation nonce-test (added-strand init 2)
-    (exp (gen) (mul y x (rec x-0) alpha)) (3 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x-0 alpha)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x (rec x-0) alpha))
-          (exp (gen) (mul x-0 alpha)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((recv group-dist-0
-       (cat "Group id" group-0
-         (exp (gen) (mul y x (rec x-0) alpha (rec x-1)))))
-      (send (enc (exp (gen) (mul y x (rec x-0) alpha)) (privk a-1)))))
-  (label 71)
-  (parent 50)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b a-0 b-0 name) (group-dist chan)
-    (y x x-0 alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group) (a a-0) (b b-0)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x-0)
-    (y (mul y x (rec x-0))))
-  (deflistener (cat (exp (gen) (mul y x alpha)) x-0))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (4 0)) ((3 3) (0 3)) ((4 1) (3 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x x-0 alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x alpha)) x-0))
-    (exp (gen) (mul y x (rec x-0) alpha)) (3 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x-0 alpha)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x (rec x-0) alpha))
-          (exp (gen) (mul x-0 alpha)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((recv (cat (exp (gen) (mul y x alpha)) x-0))
-      (send (cat (exp (gen) (mul y x alpha)) x-0))))
-  (label 72)
-  (parent 50)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b a-0 b-0 name) (group-dist chan)
-    (y x x-0 alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group) (a a-0) (b b-0)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x-0)
-    (y (mul y x (rec x-0))))
-  (deflistener (cat (exp (gen) (mul y (rec x-0) alpha)) x))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (4 0)) ((3 3) (0 3)) ((4 1) (3 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x x-0 alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y (rec x-0) alpha)) x))
-    (exp (gen) (mul y x (rec x-0) alpha)) (3 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x-0 alpha)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x (rec x-0) alpha))
-          (exp (gen) (mul x-0 alpha)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((recv (cat (exp (gen) (mul y (rec x-0) alpha)) x))
-      (send (cat (exp (gen) (mul y (rec x-0) alpha)) x))))
-  (label 73)
-  (parent 50)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group text) (a b a-0 b-0 name) (group-dist chan)
-    (y x x-0 alpha rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group) (a a-0) (b b-0)
-    (g (exp (gen) alpha)) (group-dist group-dist) (x x-0)
-    (y (mul y x (rec x-0))))
-  (deflistener (cat (exp (gen) (mul x (rec x-0) alpha)) y))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (4 0)) ((3 3) (0 3)) ((4 1) (3 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x x-0 alpha)
-  (absent (y x))
-  (conf group-dist)
-  (auth group-dist)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul x (rec x-0) alpha)) y))
-    (exp (gen) (mul y x (rec x-0) alpha)) (3 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x-0 alpha)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x (rec x-0) alpha))
-          (exp (gen) (mul x-0 alpha)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((recv (cat (exp (gen) (mul x (rec x-0) alpha)) y))
-      (send (cat (exp (gen) (mul x (rec x-0) alpha)) y))))
-  (label 74)
-  (parent 50)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x-0)
-    (y (mul y x alpha (rec x-0) (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (cat (exp (gen) (mul y x alpha)) x-0))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (5 0)) ((3 3) (0 3)) ((4 0) (3 0)) ((5 1) (3 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0 alpha-0)
-  (absent (y x))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x alpha)) x-0))
-    (exp (gen) (mul y x alpha (rec x-0))) (3 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (cat (exp (gen) (mul y x alpha)) x-0))
-      (send (cat (exp (gen) (mul y x alpha)) x-0))))
-  (label 75)
-  (parent 51)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 b-0 a-1 b-1 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y x alpha x-0 alpha-0 y-0 rndx) (x-1 expt))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x-0)
-    (y (mul y x alpha (rec x-0) (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand resp 3 (group group-1) (a a-1) (b b-1)
-    (g (exp (gen) (mul y x alpha (rec x-0) (rec y-0))))
-    (group-dist group-dist-1) (y y-0) (x x-1))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (5 0)) ((3 3) (0 3)) ((4 0) (3 0)) ((5 2) (3 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0 alpha-0 y-0)
-  (absent (y x) (y-0 x-1))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand resp 3)
-    (exp (gen) (mul y x alpha (rec x-0))) (3 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-1
-       (cat "Group id" group-1
-         (exp (gen) (mul y x alpha (rec x-0) (rec y-0)))))
-      (recv
-        (enc (exp (gen) (mul y x alpha (rec x-0) (rec y-0) x-1))
-          (privk a-1)))
-      (send
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul y x alpha (rec x-0) (rec y-0) x-1))
-          (privk b-1)))))
-  (label 76)
-  (parent 51)
-  (unrealized (5 0) (5 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 b-0 a-1 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y x alpha x-0 alpha-0 x-1 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x-0)
-    (y (mul y x alpha (rec x-0) (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 2 (group group-1) (a a-1)
-    (g (exp (gen) (mul y x alpha (rec x-0) (rec x-1))))
-    (group-dist group-dist-1) (x x-1))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (5 0)) ((3 3) (0 3)) ((4 0) (3 0)) ((5 1) (3 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0 alpha-0 x-1)
-  (absent (y x))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand init 2)
-    (exp (gen) (mul y x alpha (rec x-0))) (3 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-1
-       (cat "Group id" group-1
-         (exp (gen) (mul y x alpha (rec x-0) (rec x-1)))))
-      (send (enc (exp (gen) (mul y x alpha (rec x-0))) (privk a-1)))))
-  (label 77)
-  (parent 51)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x-0)
-    (y (mul y x alpha (rec x-0) (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (cat (exp (gen) (mul y x (rec x-0))) alpha))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (5 0)) ((3 3) (0 3)) ((4 0) (3 0)) ((5 1) (3 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0 alpha-0)
-  (absent (y x))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x (rec x-0))) alpha))
-    (exp (gen) (mul y x alpha (rec x-0))) (3 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (cat (exp (gen) (mul y x (rec x-0))) alpha))
-      (send (cat (exp (gen) (mul y x (rec x-0))) alpha))))
-  (label 78)
-  (parent 51)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x-0)
-    (y (mul y x alpha (rec x-0) (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (cat (exp (gen) (mul y alpha (rec x-0))) x))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (5 0)) ((3 3) (0 3)) ((4 0) (3 0)) ((5 1) (3 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0 alpha-0)
-  (absent (y x))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y alpha (rec x-0))) x))
-    (exp (gen) (mul y x alpha (rec x-0))) (3 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (cat (exp (gen) (mul y alpha (rec x-0))) x))
-      (send (cat (exp (gen) (mul y alpha (rec x-0))) x))))
-  (label 79)
-  (parent 51)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist) (x x))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x-0)
-    (y (mul y x alpha (rec x-0) (rec alpha-0))))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (deflistener (cat (exp (gen) (mul x alpha (rec x-0))) y))
-  (precedes ((0 2) (3 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 1) (5 0)) ((3 3) (0 3)) ((4 0) (3 0)) ((5 1) (3 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0 alpha-0)
-  (absent (y x))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul x alpha (rec x-0))) y))
-    (exp (gen) (mul y x alpha (rec x-0))) (3 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv (cat (exp (gen) (mul x alpha (rec x-0))) y))
-      (send (cat (exp (gen) (mul x alpha (rec x-0))) y))))
-  (label 80)
-  (parent 51)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist) (y y)
-    (x (mul x alpha (rec alpha-0))))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha-0))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha))
-  (defstrand init 4 (n n) (group group) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist) (x x-0)
-    (y (mul y x alpha (rec x-0) (rec alpha-0))))
-  (deflistener (cat (exp (gen) (mul y x alpha)) x-0))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (5 0)) ((4 3) (0 3)) ((5 1) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0 alpha-0)
-  (absent (y (mul x alpha (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x alpha)) x-0))
-    (exp (gen) (mul y x alpha (rec x-0))) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((recv (cat (exp (gen) (mul y x alpha)) x-0))
-      (send (cat (exp (gen) (mul y x alpha)) x-0))))
-  (label 81)
-  (parent 61)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 b-0 a-1 b-1 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y x alpha x-0 alpha-0 y-0 rndx) (x-1 expt))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist) (y y)
-    (x (mul x alpha (rec alpha-0))))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha-0))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha))
-  (defstrand init 4 (n n) (group group) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist) (x x-0)
-    (y (mul y x alpha (rec x-0) (rec alpha-0))))
-  (defstrand resp 3 (group group-1) (a a-1) (b b-1)
-    (g (exp (gen) (mul y x alpha (rec x-0) (rec y-0))))
-    (group-dist group-dist-1) (y y-0) (x x-1))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (5 0)) ((4 3) (0 3)) ((5 2) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0 alpha-0 y-0)
-  (absent (y (mul x alpha (rec alpha-0))) (y-0 x-1))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand resp 3)
-    (exp (gen) (mul y x alpha (rec x-0))) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((recv group-dist-1
-       (cat "Group id" group-1
-         (exp (gen) (mul y x alpha (rec x-0) (rec y-0)))))
-      (recv
-        (enc (exp (gen) (mul y x alpha (rec x-0) (rec y-0) x-1))
-          (privk a-1)))
-      (send
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul y x alpha (rec x-0) (rec y-0) x-1))
-          (privk b-1)))))
-  (label 82)
-  (parent 61)
-  (unrealized (5 0) (5 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 b-0 a-1 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (y x alpha x-0 alpha-0 x-1 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist) (y y)
-    (x (mul x alpha (rec alpha-0))))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha-0))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha))
-  (defstrand init 4 (n n) (group group) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist) (x x-0)
-    (y (mul y x alpha (rec x-0) (rec alpha-0))))
-  (defstrand init 2 (group group-1) (a a-1)
-    (g (exp (gen) (mul y x alpha (rec x-0) (rec x-1))))
-    (group-dist group-dist-1) (x x-1))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (5 0)) ((4 3) (0 3)) ((5 1) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0 alpha-0 x-1)
-  (absent (y (mul x alpha (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand init 2)
-    (exp (gen) (mul y x alpha (rec x-0))) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((recv group-dist-1
-       (cat "Group id" group-1
-         (exp (gen) (mul y x alpha (rec x-0) (rec x-1)))))
-      (send (enc (exp (gen) (mul y x alpha (rec x-0))) (privk a-1)))))
-  (label 83)
-  (parent 61)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist) (y y)
-    (x (mul x alpha (rec alpha-0))))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha-0))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha))
-  (defstrand init 4 (n n) (group group) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist) (x x-0)
-    (y (mul y x alpha (rec x-0) (rec alpha-0))))
-  (deflistener (cat (exp (gen) (mul y x (rec x-0))) alpha))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (5 0)) ((4 3) (0 3)) ((5 1) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0 alpha-0)
-  (absent (y (mul x alpha (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x (rec x-0))) alpha))
-    (exp (gen) (mul y x alpha (rec x-0))) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((recv (cat (exp (gen) (mul y x (rec x-0))) alpha))
-      (send (cat (exp (gen) (mul y x (rec x-0))) alpha))))
-  (label 84)
-  (parent 61)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist) (y y)
-    (x (mul x alpha (rec alpha-0))))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha-0))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha))
-  (defstrand init 4 (n n) (group group) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist) (x x-0)
-    (y (mul y x alpha (rec x-0) (rec alpha-0))))
-  (deflistener (cat (exp (gen) (mul y alpha (rec x-0))) x))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (5 0)) ((4 3) (0 3)) ((5 1) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0 alpha-0)
-  (absent (y (mul x alpha (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y alpha (rec x-0))) x))
-    (exp (gen) (mul y x alpha (rec x-0))) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((recv (cat (exp (gen) (mul y alpha (rec x-0))) x))
-      (send (cat (exp (gen) (mul y alpha (rec x-0))) x))))
-  (label 85)
-  (parent 61)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (y x alpha x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha-0)) (group-dist group-dist) (y y)
-    (x (mul x alpha (rec alpha-0))))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha-0))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha))
-  (defstrand init 4 (n n) (group group) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist) (x x-0)
-    (y (mul y x alpha (rec x-0) (rec alpha-0))))
-  (deflistener (cat (exp (gen) (mul x alpha (rec x-0))) y))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (5 0)) ((4 3) (0 3)) ((5 1) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n y x alpha x-0 alpha-0)
-  (absent (y (mul x alpha (rec alpha-0))))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul x alpha (rec x-0))) y))
-    (exp (gen) (mul y x alpha (rec x-0))) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha-0)))
-      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
-      (send
-        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha)))
-      (send (enc (exp (gen) (mul x alpha)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha))))
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha (rec x-0)))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha)))))
-    ((recv (cat (exp (gen) (mul x alpha (rec x-0))) y))
-      (send (cat (exp (gen) (mul x alpha (rec x-0))) y))))
-  (label 86)
-  (parent 61)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (alpha y x x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x-0)
-    (y (mul y x (rec x-0))))
-  (deflistener (cat (exp (gen) (mul y x (rec x-0))) alpha-0))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (5 0)) ((4 3) (0 3)) ((5 1) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha y x x-0 alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x (rec x-0))) alpha-0))
-    (exp (gen) (mul y x (rec x-0) alpha-0)) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x (rec x-0) alpha-0))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha-0)))))
-    ((recv (cat (exp (gen) (mul y x (rec x-0))) alpha-0))
-      (send (cat (exp (gen) (mul y x (rec x-0))) alpha-0))))
-  (label 87)
-  (parent 62)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 b-0 a-1 b-1 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (alpha y x x-0 alpha-0 y-0 rndx) (x-1 expt))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x-0)
-    (y (mul y x (rec x-0))))
-  (defstrand resp 3 (group group-1) (a a-1) (b b-1)
-    (g (exp (gen) (mul y x (rec x-0) alpha-0 (rec y-0))))
-    (group-dist group-dist-1) (y y-0) (x x-1))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (5 0)) ((4 3) (0 3)) ((5 2) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha y x x-0 alpha-0 y-0)
-  (absent (y (mul (rec alpha) x alpha-0)) (y-0 x-1))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand resp 3)
-    (exp (gen) (mul y x (rec x-0) alpha-0)) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x (rec x-0) alpha-0))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha-0)))))
-    ((recv group-dist-1
-       (cat "Group id" group-1
-         (exp (gen) (mul y x (rec x-0) alpha-0 (rec y-0)))))
-      (recv
-        (enc (exp (gen) (mul y x (rec x-0) alpha-0 (rec y-0) x-1))
-          (privk a-1)))
-      (send
-        (enc (exp (gen) (mul y x (rec x-0) alpha-0))
-          (exp (gen) (mul y x (rec x-0) alpha-0 (rec y-0) x-1))
-          (privk b-1)))))
-  (label 88)
-  (parent 62)
-  (unrealized (5 0) (5 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 b-0 a-1 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (alpha y x x-0 alpha-0 x-1 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x-0)
-    (y (mul y x (rec x-0))))
-  (defstrand init 2 (group group-1) (a a-1)
-    (g (exp (gen) (mul y x (rec x-0) alpha-0 (rec x-1))))
-    (group-dist group-dist-1) (x x-1))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (5 0)) ((4 3) (0 3)) ((5 1) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha y x x-0 alpha-0 x-1)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test (added-strand init 2)
-    (exp (gen) (mul y x (rec x-0) alpha-0)) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x (rec x-0) alpha-0))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha-0)))))
-    ((recv group-dist-1
-       (cat "Group id" group-1
-         (exp (gen) (mul y x (rec x-0) alpha-0 (rec x-1)))))
-      (send (enc (exp (gen) (mul y x (rec x-0) alpha-0)) (privk a-1)))))
-  (label 89)
-  (parent 62)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (alpha y x x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x-0)
-    (y (mul y x (rec x-0))))
-  (deflistener (cat (exp (gen) (mul y x alpha-0)) x-0))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (5 0)) ((4 3) (0 3)) ((5 1) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha y x x-0 alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x alpha-0)) x-0))
-    (exp (gen) (mul y x (rec x-0) alpha-0)) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x (rec x-0) alpha-0))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha-0)))))
-    ((recv (cat (exp (gen) (mul y x alpha-0)) x-0))
-      (send (cat (exp (gen) (mul y x alpha-0)) x-0))))
-  (label 90)
-  (parent 62)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (alpha y x x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x-0)
-    (y (mul y x (rec x-0))))
-  (deflistener (cat (exp (gen) (mul y (rec x-0) alpha-0)) x))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (5 0)) ((4 3) (0 3)) ((5 1) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha y x x-0 alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y (rec x-0) alpha-0)) x))
-    (exp (gen) (mul y x (rec x-0) alpha-0)) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x (rec x-0) alpha-0))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha-0)))))
-    ((recv (cat (exp (gen) (mul y (rec x-0) alpha-0)) x))
-      (send (cat (exp (gen) (mul y (rec x-0) alpha-0)) x))))
-  (label 91)
-  (parent 62)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 chan) (alpha y x x-0 alpha-0 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-0) (a a-0) (b b-0)
-    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x-0)
-    (y (mul y x (rec x-0))))
-  (deflistener (cat (exp (gen) (mul x (rec x-0) alpha-0)) y))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (5 0)) ((4 3) (0 3)) ((5 1) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha y x x-0 alpha-0)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0)
-  (auth group-dist group-dist-0)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul x (rec x-0) alpha-0)) y))
-    (exp (gen) (mul y x (rec x-0) alpha-0)) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x-0 alpha-0)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x (rec x-0) alpha-0))
-          (exp (gen) (mul x-0 alpha-0)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha-0)))))
-    ((recv (cat (exp (gen) (mul x (rec x-0) alpha-0)) y))
-      (send (cat (exp (gen) (mul x (rec x-0) alpha-0)) y))))
-  (label 92)
-  (parent 62)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (alpha y x alpha-0 x-0 alpha-1 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-1) (a a-0) (b b-0)
-    (g (exp (gen) alpha-1)) (group-dist group-dist-1) (x x-0)
-    (y (mul y x alpha-0 (rec x-0) (rec alpha-1))))
-  (defstrand group-init 1 (group group-1) (group-dist group-dist-1)
-    (alpha alpha-1))
-  (deflistener (cat (exp (gen) (mul y x alpha-0)) x-0))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (6 0)) ((4 3) (0 3)) ((5 0) (4 0))
-    ((6 1) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha y x alpha-0 x-0 alpha-1)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0 group-dist-1)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x alpha-0)) x-0))
-    (exp (gen) (mul y x alpha-0 (rec x-0))) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1)))
-      (send (enc (exp (gen) (mul x-0 alpha-1)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha-0 (rec x-0)))
-          (exp (gen) (mul x-0 alpha-1)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha-0)))))
-    ((send group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1))))
-    ((recv (cat (exp (gen) (mul y x alpha-0)) x-0))
-      (send (cat (exp (gen) (mul y x alpha-0)) x-0))))
-  (label 93)
-  (parent 63)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 group-2 text)
-    (a b a-0 b-0 a-1 b-1 name)
-    (group-dist group-dist-0 group-dist-1 group-dist-2 chan)
-    (alpha y x alpha-0 x-0 alpha-1 y-0 rndx) (x-1 expt))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-1) (a a-0) (b b-0)
-    (g (exp (gen) alpha-1)) (group-dist group-dist-1) (x x-0)
-    (y (mul y x alpha-0 (rec x-0) (rec alpha-1))))
-  (defstrand group-init 1 (group group-1) (group-dist group-dist-1)
-    (alpha alpha-1))
-  (defstrand resp 3 (group group-2) (a a-1) (b b-1)
-    (g (exp (gen) (mul y x alpha-0 (rec x-0) (rec y-0))))
-    (group-dist group-dist-2) (y y-0) (x x-1))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (6 0)) ((4 3) (0 3)) ((5 0) (4 0))
-    ((6 2) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha y x alpha-0 x-0 alpha-1 y-0)
-  (absent (y (mul (rec alpha) x alpha-0)) (y-0 x-1))
-  (conf group-dist group-dist-0 group-dist-1)
-  (auth group-dist group-dist-0 group-dist-1 group-dist-2)
-  (operation nonce-test (added-strand resp 3)
-    (exp (gen) (mul y x alpha-0 (rec x-0))) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1)))
-      (send (enc (exp (gen) (mul x-0 alpha-1)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha-0 (rec x-0)))
-          (exp (gen) (mul x-0 alpha-1)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha-0)))))
-    ((send group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1))))
-    ((recv group-dist-2
-       (cat "Group id" group-2
-         (exp (gen) (mul y x alpha-0 (rec x-0) (rec y-0)))))
-      (recv
-        (enc (exp (gen) (mul y x alpha-0 (rec x-0) (rec y-0) x-1))
-          (privk a-1)))
-      (send
-        (enc (exp (gen) (mul y x alpha-0 (rec x-0)))
-          (exp (gen) (mul y x alpha-0 (rec x-0) (rec y-0) x-1))
-          (privk b-1)))))
-  (label 94)
-  (parent 63)
-  (unrealized (6 0) (6 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 group-2 text) (a b a-0 b-0 a-1 name)
-    (group-dist group-dist-0 group-dist-1 group-dist-2 chan)
-    (alpha y x alpha-0 x-0 alpha-1 x-1 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-1) (a a-0) (b b-0)
-    (g (exp (gen) alpha-1)) (group-dist group-dist-1) (x x-0)
-    (y (mul y x alpha-0 (rec x-0) (rec alpha-1))))
-  (defstrand group-init 1 (group group-1) (group-dist group-dist-1)
-    (alpha alpha-1))
-  (defstrand init 2 (group group-2) (a a-1)
-    (g (exp (gen) (mul y x alpha-0 (rec x-0) (rec x-1))))
-    (group-dist group-dist-2) (x x-1))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (6 0)) ((4 3) (0 3)) ((5 0) (4 0))
-    ((6 1) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha y x alpha-0 x-0 alpha-1 x-1)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0 group-dist-1)
-  (auth group-dist group-dist-0 group-dist-1 group-dist-2)
-  (operation nonce-test (added-strand init 2)
-    (exp (gen) (mul y x alpha-0 (rec x-0))) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1)))
-      (send (enc (exp (gen) (mul x-0 alpha-1)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha-0 (rec x-0)))
-          (exp (gen) (mul x-0 alpha-1)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha-0)))))
-    ((send group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1))))
-    ((recv group-dist-2
-       (cat "Group id" group-2
-         (exp (gen) (mul y x alpha-0 (rec x-0) (rec x-1)))))
-      (send (enc (exp (gen) (mul y x alpha-0 (rec x-0))) (privk a-1)))))
-  (label 95)
-  (parent 63)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (alpha y x alpha-0 x-0 alpha-1 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-1) (a a-0) (b b-0)
-    (g (exp (gen) alpha-1)) (group-dist group-dist-1) (x x-0)
-    (y (mul y x alpha-0 (rec x-0) (rec alpha-1))))
-  (defstrand group-init 1 (group group-1) (group-dist group-dist-1)
-    (alpha alpha-1))
-  (deflistener (cat (exp (gen) (mul y x (rec x-0))) alpha-0))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (6 0)) ((4 3) (0 3)) ((5 0) (4 0))
-    ((6 1) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha y x alpha-0 x-0 alpha-1)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0 group-dist-1)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y x (rec x-0))) alpha-0))
-    (exp (gen) (mul y x alpha-0 (rec x-0))) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1)))
-      (send (enc (exp (gen) (mul x-0 alpha-1)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha-0 (rec x-0)))
-          (exp (gen) (mul x-0 alpha-1)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha-0)))))
-    ((send group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1))))
-    ((recv (cat (exp (gen) (mul y x (rec x-0))) alpha-0))
-      (send (cat (exp (gen) (mul y x (rec x-0))) alpha-0))))
-  (label 96)
-  (parent 63)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (alpha y x alpha-0 x-0 alpha-1 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-1) (a a-0) (b b-0)
-    (g (exp (gen) alpha-1)) (group-dist group-dist-1) (x x-0)
-    (y (mul y x alpha-0 (rec x-0) (rec alpha-1))))
-  (defstrand group-init 1 (group group-1) (group-dist group-dist-1)
-    (alpha alpha-1))
-  (deflistener (cat (exp (gen) (mul y alpha-0 (rec x-0))) x))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (6 0)) ((4 3) (0 3)) ((5 0) (4 0))
-    ((6 1) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha y x alpha-0 x-0 alpha-1)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0 group-dist-1)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul y alpha-0 (rec x-0))) x))
-    (exp (gen) (mul y x alpha-0 (rec x-0))) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1)))
-      (send (enc (exp (gen) (mul x-0 alpha-1)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha-0 (rec x-0)))
-          (exp (gen) (mul x-0 alpha-1)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha-0)))))
-    ((send group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1))))
-    ((recv (cat (exp (gen) (mul y alpha-0 (rec x-0))) x))
-      (send (cat (exp (gen) (mul y alpha-0 (rec x-0))) x))))
-  (label 97)
-  (parent 63)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dh_sig2
-  (vars (n group group-0 group-1 text) (a b a-0 b-0 name)
-    (group-dist group-dist-0 group-dist-1 chan)
-    (alpha y x alpha-0 x-0 alpha-1 rndx))
-  (defstrand resp 5 (n n) (group group) (a a) (b b)
-    (g (exp (gen) alpha)) (group-dist group-dist) (y y)
-    (x (mul (rec alpha) x alpha-0)))
-  (defstrand group-init 1 (group group) (group-dist group-dist)
-    (alpha alpha))
-  (defstrand init 2 (group group-0) (a a) (g (exp (gen) alpha-0))
-    (group-dist group-dist-0) (x x))
-  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
-    (alpha alpha-0))
-  (defstrand init 4 (n n) (group group-1) (a a-0) (b b-0)
-    (g (exp (gen) alpha-1)) (group-dist group-dist-1) (x x-0)
-    (y (mul y x alpha-0 (rec x-0) (rec alpha-1))))
-  (defstrand group-init 1 (group group-1) (group-dist group-dist-1)
-    (alpha alpha-1))
-  (deflistener (cat (exp (gen) (mul x alpha-0 (rec x-0))) y))
-  (precedes ((0 2) (4 0)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
-    ((3 0) (2 0)) ((4 1) (6 0)) ((4 3) (0 3)) ((5 0) (4 0))
-    ((6 1) (4 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen n alpha y x alpha-0 x-0 alpha-1)
-  (absent (y (mul (rec alpha) x alpha-0)))
-  (conf group-dist group-dist-0 group-dist-1)
-  (auth group-dist group-dist-0 group-dist-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul x alpha-0 (rec x-0))) y))
-    (exp (gen) (mul y x alpha-0 (rec x-0))) (4 2))
-  (traces
-    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
-      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
-      (send
-        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul x alpha-0))
-          (privk b))) (recv (enc n (exp (gen) (mul y x alpha-0))))
-      (send n))
-    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
-    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
-      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
-    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
-    ((recv group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1)))
-      (send (enc (exp (gen) (mul x-0 alpha-1)) (privk a-0)))
-      (recv
-        (enc (exp (gen) (mul y x alpha-0 (rec x-0)))
-          (exp (gen) (mul x-0 alpha-1)) (privk b-0)))
-      (send (enc n (exp (gen) (mul y x alpha-0)))))
-    ((send group-dist-1 (cat "Group id" group-1 (exp (gen) alpha-1))))
-    ((recv (cat (exp (gen) (mul x alpha-0 (rec x-0))) y))
-      (send (cat (exp (gen) (mul x alpha-0 (rec x-0))) y))))
-  (label 98)
-  (parent 63)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/dh_group_sig_auth_failure.scm")
+(comment "Step count limited to 100")
+
+(defprotocol dh_sig diffie-hellman
+  (defrole group-init
+    (vars (alpha rndx) (group text) (group-dist chan))
+    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
+    (uniq-gen alpha)
+    (conf group-dist))
+  (defrole init
+    (vars (x rndx) (y alpha expt) (group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk a))))
+    (uniq-gen x)
+    (absent (x alpha))
+    (auth group-dist))
+  (defrole resp
+    (vars (y rndx) (x alpha expt) (group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (recv
+        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk a))))
+    (uniq-gen y)
+    (absent (y (mul x alpha)) (y alpha))
+    (auth group-dist))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dh_sig
+  (vars (group text) (a b name) (group-dist chan) (x rndx)
+    (y alpha expt))
+  (defstrand init 4 (group group) (a a) (b b) (group-dist group-dist)
+    (x x) (y y) (alpha alpha))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x)
+  (absent (x alpha))
+  (auth group-dist)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk a)))))
+  (label 0)
+  (unrealized (0 0) (0 2))
+  (origs)
+  (ugens (x (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group text) (a b name) (group-dist chan) (x rndx) (y expt)
+    (alpha rndx))
+  (defstrand init 4 (group group) (a a) (b b) (group-dist group-dist)
+    (x x) (y y) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x alpha)
+  (absent (x alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation channel-test (added-strand group-init 1)
+    (ch-msg group-dist (cat "Group id" group (exp (gen) alpha))) (0 0))
+  (strand-map 0)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha)))))
+  (label 1)
+  (parent 0)
+  (unrealized (0 2))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group group-0 text) (a b a-0 name)
+    (group-dist group-dist-0 chan) (y x alpha rndx) (alpha-0 expt))
+  (defstrand init 4 (group group) (a a) (b b) (group-dist group-dist)
+    (x x) (y (mul y (rec alpha) alpha-0)) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group-0) (a a-0) (b b)
+    (group-dist group-dist-0) (y y) (x (mul x alpha (rec alpha-0)))
+    (alpha alpha-0))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((2 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x alpha)
+  (absent (y (mul x alpha)) (y alpha-0) (x alpha))
+  (conf group-dist)
+  (auth group-dist group-dist-0)
+  (operation encryption-test (added-strand resp 3)
+    (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+      (privk b)) (0 2))
+  (strand-map 0 1)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" (exp (gen) (mul y alpha-0))
+          (exp (gen) (mul x alpha)) (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a-0)))
+      (send
+        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+          (privk b)))))
+  (label 2)
+  (parent 1)
+  (unrealized (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group text) (a b a-0 name) (group-dist chan) (y x alpha rndx))
+  (defstrand init 4 (group group) (a a) (b b) (group-dist group-dist)
+    (x x) (y y) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group) (a a-0) (b b) (group-dist group-dist)
+    (y y) (x x) (alpha alpha))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x alpha)
+  (absent (y (mul x alpha)) (y alpha) (x alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation channel-test (displaced 3 1 group-init 1)
+    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+    (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a-0)))
+      (send
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))))
+  (label 3)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (x x) (y y) (alpha alpha) (group group)
+        (group-dist group-dist))))
+  (origs)
+  (ugens (alpha (1 0)) (y (2 2)) (x (0 1))))
+
+(defskeleton dh_sig
+  (vars (group group-0 text) (a b a-0 name)
+    (group-dist group-dist-0 chan) (y x alpha alpha-0 rndx))
+  (defstrand init 4 (group group) (a a) (b b) (group-dist group-dist)
+    (x x) (y (mul y (rec alpha) alpha-0)) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group-0) (a a-0) (b b)
+    (group-dist group-dist-0) (y y) (x (mul x alpha (rec alpha-0)))
+    (alpha alpha-0))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((2 2) (0 2)) ((3 0) (2 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x alpha alpha-0)
+  (absent (y (mul x alpha)) (y alpha-0) (x alpha))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation channel-test (added-strand group-init 1)
+    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+    (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" (exp (gen) (mul y alpha-0))
+          (exp (gen) (mul x alpha)) (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a-0)))
+      (send
+        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul x alpha))
+          (privk b))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
+  (label 4)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (x x) (y (mul y (rec alpha) alpha-0)) (alpha alpha)
+        (group group) (group-dist group-dist))))
+  (origs)
+  (ugens (alpha-0 (3 0)) (y (2 2)) (alpha (1 0)) (x (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol dh_sig diffie-hellman
+  (defrole group-init
+    (vars (alpha rndx) (group text) (group-dist chan))
+    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
+    (uniq-gen alpha)
+    (conf group-dist))
+  (defrole init
+    (vars (x rndx) (y alpha expt) (group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk a))))
+    (uniq-gen x)
+    (absent (x alpha))
+    (auth group-dist))
+  (defrole resp
+    (vars (y rndx) (x alpha expt) (group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (recv
+        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk a))))
+    (uniq-gen y)
+    (absent (y (mul x alpha)) (y alpha))
+    (auth group-dist))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dh_sig
+  (vars (group text) (a b name) (group-dist chan) (y rndx)
+    (x alpha expt))
+  (defstrand resp 4 (group group) (a a) (b b) (group-dist group-dist)
+    (y y) (x x) (alpha alpha))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y)
+  (absent (y (mul x alpha)) (y alpha))
+  (auth group-dist)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (recv
+        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk a)))))
+  (label 5)
+  (unrealized (0 0) (0 1) (0 3))
+  (origs)
+  (ugens (y (0 2)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group text) (a b name) (group-dist chan) (y rndx) (x expt)
+    (alpha rndx))
+  (defstrand resp 4 (group group) (a a) (b b) (group-dist group-dist)
+    (y y) (x x) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y alpha)
+  (absent (y (mul x alpha)) (y alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation channel-test (added-strand group-init 1)
+    (ch-msg group-dist (cat "Group id" group (exp (gen) alpha))) (0 0))
+  (strand-map 0)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (recv
+        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha)))))
+  (label 6)
+  (parent 5)
+  (unrealized (0 1) (0 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group group-0 text) (a b name) (group-dist group-dist-0 chan)
+    (y alpha x rndx) (alpha-0 expt))
+  (defstrand resp 4 (group group) (a a) (b b) (group-dist group-dist)
+    (y y) (x (mul (rec alpha) x alpha-0)) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand init 2 (group group-0) (a a) (group-dist group-dist-0)
+    (x x) (alpha alpha-0))
+  (precedes ((1 0) (0 0)) ((2 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y alpha x)
+  (absent (y alpha) (y (mul x alpha-0)) (x alpha-0))
+  (conf group-dist)
+  (auth group-dist group-dist-0)
+  (operation encryption-test (added-strand init 2)
+    (enc (exp (gen) (mul x alpha-0)) (privk a)) (0 1))
+  (strand-map 0 1)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
+      (send
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
+          (privk b)))
+      (recv
+        (enc "final" (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha-0)) (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (send (enc (exp (gen) (mul x alpha-0)) (privk a)))))
+  (label 7)
+  (parent 6)
+  (unrealized (0 3) (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group text) (a b name) (group-dist chan) (y x alpha rndx))
+  (defstrand resp 4 (group group) (a a) (b b) (group-dist group-dist)
+    (y y) (x x) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand init 2 (group group) (a a) (group-dist group-dist) (x x)
+    (alpha alpha))
+  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x alpha)
+  (absent (y (mul x alpha)) (y alpha) (x alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation channel-test (displaced 3 1 group-init 1)
+    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+    (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (recv
+        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))))
+  (label 8)
+  (parent 7)
+  (unrealized (0 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group group-0 text) (a b name) (group-dist group-dist-0 chan)
+    (y alpha x alpha-0 rndx))
+  (defstrand resp 4 (group group) (a a) (b b) (group-dist group-dist)
+    (y y) (x (mul (rec alpha) x alpha-0)) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand init 2 (group group-0) (a a) (group-dist group-dist-0)
+    (x x) (alpha alpha-0))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (precedes ((1 0) (0 0)) ((2 1) (0 1)) ((3 0) (2 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y alpha x alpha-0)
+  (absent (y alpha) (y (mul x alpha-0)) (x alpha-0))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation channel-test (added-strand group-init 1)
+    (ch-msg group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+    (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha-0)) (privk a)))
+      (send
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha-0))
+          (privk b)))
+      (recv
+        (enc "final" (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha-0)) (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (send (enc (exp (gen) (mul x alpha-0)) (privk a))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
+  (label 9)
+  (parent 7)
+  (unrealized (0 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group text) (a b b-0 name) (group-dist chan) (y alpha x rndx))
+  (defstrand resp 4 (group group) (a a) (b b) (group-dist group-dist)
+    (y y) (x x) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand init 4 (group group) (a a) (b b-0) (group-dist group-dist)
+    (x x) (y y) (alpha alpha))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
+    ((2 3) (0 3)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y alpha x)
+  (absent (y alpha) (y (mul alpha x)) (x alpha))
+  (conf group-dist)
+  (auth group-dist)
+  (operation encryption-test (displaced 2 3 init 4)
+    (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x-0 alpha))
+      (privk a)) (0 3))
+  (strand-map 0 1 2)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
+      (send
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (recv
+        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul alpha x))
+          (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul alpha x)) (privk a)))
+      (recv
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul alpha x))
+          (privk b-0)))
+      (send
+        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul alpha x))
+          (privk a)))))
+  (label 10)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (y y) (x x) (alpha alpha) (group group)
+        (group-dist group-dist))))
+  (origs)
+  (ugens (x (2 1)) (alpha (1 0)) (y (0 2))))
+
+(defskeleton dh_sig
+  (vars (group group-0 text) (a b b-0 name)
+    (group-dist group-dist-0 chan) (y alpha alpha-0 x rndx))
+  (defstrand resp 4 (group group) (a a) (b b) (group-dist group-dist)
+    (y y) (x (mul (rec alpha) alpha-0 x)) (alpha alpha))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (defstrand init 4 (group group-0) (a a) (b b-0)
+    (group-dist group-dist-0) (x x) (y (mul y alpha (rec alpha-0)))
+    (alpha alpha-0))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((2 0) (3 0)) ((3 1) (0 1))
+    ((3 3) (0 3)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y alpha alpha-0 x)
+  (absent (y alpha) (y (mul alpha-0 x)) (x alpha-0))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation encryption-test (displaced 2 4 init 4)
+    (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x-0 alpha-0))
+      (privk a)) (0 3))
+  (strand-map 0 1 3 2)
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
+      (send
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
+          (privk b)))
+      (recv
+        (enc "final" (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha-0 x)) (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
+      (recv
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
+          (privk b-0)))
+      (send
+        (enc "final" (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha-0 x)) (privk a)))))
+  (label 11)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (y y) (x (mul (rec alpha) alpha-0 x)) (alpha alpha)
+        (group group) (group-dist group-dist))))
+  (origs)
+  (ugens (x (3 1)) (alpha-0 (2 0)) (alpha (1 0)) (y (0 2))))
 
 (comment "Nothing left to do")
diff --git a/tst/dh_group_sig_auth_failure_shapes.tst b/tst/dh_group_sig_auth_failure_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/dh_group_sig_auth_failure_shapes.tst
@@ -0,0 +1,483 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Signed group DH exchange (version with auth failure)"
+  (algebra diffie-hellman) (limit 100))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/dh_group_sig_auth_failure.scm")
+
+(comment "Step count limited to 100")
+
+(defprotocol dh_sig diffie-hellman
+  (defrole group-init
+    (vars (alpha rndx) (group text) (group-dist chan))
+    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
+    (uniq-gen alpha)
+    (conf group-dist))
+  (defrole init
+    (vars (x rndx) (y expt) (g base) (group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group g))
+      (send (enc (exp g x) (privk a)))
+      (recv (enc (exp g y) (exp g x) (privk b)))
+      (send (enc "final" (exp g y) (exp g x) (privk a))))
+    (uniq-gen x)
+    (auth group-dist))
+  (defrole resp
+    (vars (y rndx) (x expt) (g base) (group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group g))
+      (recv (enc (exp g x) (privk a)))
+      (send (enc (exp g y) (exp g x) (privk b)))
+      (recv (enc "final" (exp g y) (exp g x) (privk a))))
+    (uniq-gen y)
+    (absent (y x))
+    (auth group-dist))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dh_sig
+  (vars (group text) (a b name) (g base) (group-dist chan) (x rndx)
+    (y expt))
+  (defstrand init 4 (group group) (a a) (b b) (g g)
+    (group-dist group-dist) (x x) (y y))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x)
+  (auth group-dist)
+  (traces
+    ((recv group-dist (cat "Group id" group g))
+      (send (enc (exp g x) (privk a)))
+      (recv (enc (exp g y) (exp g x) (privk b)))
+      (send (enc "final" (exp g y) (exp g x) (privk a)))))
+  (label 0)
+  (unrealized (0 0) (0 2))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group text) (a b a-0 name) (group-dist chan) (y x alpha rndx))
+  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
+    (group-dist group-dist) (x x) (y y))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group) (a a-0) (b b) (g (exp (gen) alpha))
+    (group-dist group-dist) (y y) (x x))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x alpha)
+  (absent (y x))
+  (conf group-dist)
+  (auth group-dist)
+  (operation generalization weakened ((0 1) (2 0)))
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a-0)))
+      (send
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))))
+  (label 5)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (x x) (y y) (g (exp (gen) alpha)) (group group)
+        (group-dist group-dist))))
+  (origs))
+
+(defskeleton dh_sig
+  (vars (group group-0 text) (a b a-0 name)
+    (group-dist group-dist-0 chan) (y alpha x alpha-0 rndx))
+  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
+    (group-dist group-dist) (x x) (y (mul y (rec alpha) alpha-0)))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group-0) (a a-0) (b b)
+    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (y y)
+    (x (mul alpha x (rec alpha-0))))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((2 2) (0 2)) ((3 0) (2 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y alpha x alpha-0)
+  (absent (y (mul alpha x (rec alpha-0))))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation generalization weakened ((1 0) (2 0)))
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul alpha x)) (privk a)))
+      (recv
+        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (send
+        (enc "final" (exp (gen) (mul y alpha-0))
+          (exp (gen) (mul alpha x)) (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (recv (enc (exp (gen) (mul alpha x)) (privk a-0)))
+      (send
+        (enc (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
+          (privk b))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
+  (label 7)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (x x) (y (mul y (rec alpha) alpha-0))
+        (g (exp (gen) alpha)) (group group) (group-dist group-dist))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol dh_sig diffie-hellman
+  (defrole group-init
+    (vars (alpha rndx) (group text) (group-dist chan))
+    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
+    (uniq-gen alpha)
+    (conf group-dist))
+  (defrole init
+    (vars (x rndx) (y expt) (g base) (group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group g))
+      (send (enc (exp g x) (privk a)))
+      (recv (enc (exp g y) (exp g x) (privk b)))
+      (send (enc "final" (exp g y) (exp g x) (privk a))))
+    (uniq-gen x)
+    (auth group-dist))
+  (defrole resp
+    (vars (y rndx) (x expt) (g base) (group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group g))
+      (recv (enc (exp g x) (privk a)))
+      (send (enc (exp g y) (exp g x) (privk b)))
+      (recv (enc "final" (exp g y) (exp g x) (privk a))))
+    (uniq-gen y)
+    (absent (y x))
+    (auth group-dist))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dh_sig
+  (vars (group text) (a b name) (g base) (group-dist chan) (y rndx)
+    (x expt))
+  (defstrand resp 4 (group group) (a a) (b b) (g g)
+    (group-dist group-dist) (y y) (x x))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y)
+  (absent (y x))
+  (auth group-dist)
+  (traces
+    ((recv group-dist (cat "Group id" group g))
+      (recv (enc (exp g x) (privk a)))
+      (send (enc (exp g y) (exp g x) (privk b)))
+      (recv (enc "final" (exp g y) (exp g x) (privk a)))))
+  (label 8)
+  (unrealized (0 0) (0 1) (0 3))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group text) (a b b-0 name) (group-dist chan) (alpha y x rndx))
+  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
+    (group-dist group-dist) (y y) (x x))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand init 4 (group group) (a a) (b b-0) (g (exp (gen) alpha))
+    (group-dist group-dist) (x x) (y y))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
+    ((2 3) (0 3)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen alpha y x)
+  (absent (y x))
+  (conf group-dist)
+  (auth group-dist)
+  (operation encryption-test (displaced 2 3 init 4)
+    (enc "final" (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x-0))
+      (privk a)) (0 3))
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
+      (send
+        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (recv
+        (enc "final" (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
+          (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul alpha x)) (privk a)))
+      (recv
+        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
+          (privk b-0)))
+      (send
+        (enc "final" (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
+          (privk a)))))
+  (label 13)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (y y) (x x) (g (exp (gen) alpha)) (group group)
+        (group-dist group-dist))))
+  (origs))
+
+(defskeleton dh_sig
+  (vars (group group-0 text) (a b b-0 name)
+    (group-dist group-dist-0 chan) (y alpha alpha-0 x rndx))
+  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
+    (group-dist group-dist) (y y) (x (mul (rec alpha) alpha-0 x)))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (defstrand init 4 (group group-0) (a a) (b b-0)
+    (g (exp (gen) alpha-0)) (group-dist group-dist-0) (x x)
+    (y (mul y alpha (rec alpha-0))))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((2 0) (3 0)) ((3 1) (0 1))
+    ((3 3) (0 3)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y alpha alpha-0 x)
+  (absent (y (mul (rec alpha) alpha-0 x)))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation generalization weakened ((1 0) (3 0)))
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
+      (send
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
+          (privk b)))
+      (recv
+        (enc "final" (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha-0 x)) (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
+      (recv
+        (enc (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
+          (privk b-0)))
+      (send
+        (enc "final" (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha-0 x)) (privk a)))))
+  (label 17)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (y y) (x (mul (rec alpha) alpha-0 x))
+        (g (exp (gen) alpha)) (group group) (group-dist group-dist))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol dh_sig2 diffie-hellman
+  (defrole group-init
+    (vars (alpha rndx) (group text) (group-dist chan))
+    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
+    (uniq-gen alpha)
+    (conf group-dist))
+  (defrole init
+    (vars (x rndx) (y expt) (g base) (n group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group g))
+      (send (enc (exp g x) (privk a)))
+      (recv (enc (exp g y) (exp g x) (privk b)))
+      (send (enc n (exp g (mul x y)))) (recv n))
+    (uniq-gen n x)
+    (auth group-dist))
+  (defrole resp
+    (vars (y rndx) (x expt) (g base) (n group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group g))
+      (recv (enc (exp g x) (privk a)))
+      (send (enc (exp g y) (exp g x) (privk b)))
+      (recv (enc n (exp g (mul y x)))) (send n))
+    (uniq-gen y)
+    (absent (y x))
+    (auth group-dist))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dh_sig2
+  (vars (n group text) (a b name) (g base) (group-dist chan) (x rndx)
+    (y expt))
+  (defstrand init 5 (n n) (group group) (a a) (b b) (g g)
+    (group-dist group-dist) (x x) (y y))
+  (non-orig (privk a) (privk b))
+  (uniq-gen n x)
+  (auth group-dist)
+  (traces
+    ((recv group-dist (cat "Group id" group g))
+      (send (enc (exp g x) (privk a)))
+      (recv (enc (exp g y) (exp g x) (privk b)))
+      (send (enc n (exp g (mul x y)))) (recv n)))
+  (label 18)
+  (unrealized (0 0) (0 2))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig2
+  (vars (n group text) (a a-0 b name) (group-dist chan)
+    (alpha x y rndx))
+  (defstrand init 5 (n n) (group group) (a a) (b b)
+    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 5 (n n) (group group) (a a-0) (b b)
+    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
+  (precedes ((0 1) (2 1)) ((0 3) (2 3)) ((1 0) (0 0)) ((1 0) (2 0))
+    ((2 2) (0 2)) ((2 4) (0 4)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen n alpha x y)
+  (absent (y x))
+  (conf group-dist)
+  (auth group-dist)
+  (operation generalization weakened ((0 1) (2 0)))
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul alpha x)) (privk a)))
+      (recv
+        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
+          (privk b))) (send (enc n (exp (gen) (mul alpha x y))))
+      (recv n))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha x)) (privk a-0)))
+      (send
+        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
+          (privk b))) (recv (enc n (exp (gen) (mul alpha x y))))
+      (send n)))
+  (label 28)
+  (parent 18)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (x x) (y y) (g (exp (gen) alpha)) (n n) (group group)
+        (group-dist group-dist))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol dh_sig2 diffie-hellman
+  (defrole group-init
+    (vars (alpha rndx) (group text) (group-dist chan))
+    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
+    (uniq-gen alpha)
+    (conf group-dist))
+  (defrole init
+    (vars (x rndx) (y expt) (g base) (n group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group g))
+      (send (enc (exp g x) (privk a)))
+      (recv (enc (exp g y) (exp g x) (privk b)))
+      (send (enc n (exp g (mul x y)))) (recv n))
+    (uniq-gen n x)
+    (auth group-dist))
+  (defrole resp
+    (vars (y rndx) (x expt) (g base) (n group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group g))
+      (recv (enc (exp g x) (privk a)))
+      (send (enc (exp g y) (exp g x) (privk b)))
+      (recv (enc n (exp g (mul y x)))) (send n))
+    (uniq-gen y)
+    (absent (y x))
+    (auth group-dist))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dh_sig2
+  (vars (n group text) (a b name) (g base) (group-dist chan) (y rndx)
+    (x expt))
+  (defstrand resp 5 (n n) (group group) (a a) (b b) (g g)
+    (group-dist group-dist) (y y) (x x))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y)
+  (absent (y x))
+  (auth group-dist)
+  (traces
+    ((recv group-dist (cat "Group id" group g))
+      (recv (enc (exp g x) (privk a)))
+      (send (enc (exp g y) (exp g x) (privk b)))
+      (recv (enc n (exp g (mul y x)))) (send n)))
+  (label 39)
+  (unrealized (0 0) (0 1))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig2
+  (vars (n group text) (b a b-0 name) (group-dist chan)
+    (alpha y x rndx))
+  (defstrand resp 5 (n n) (group group) (a a) (b b)
+    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand init 4 (n n) (group group) (a a) (b b-0)
+    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
+    ((2 3) (0 3)))
+  (non-orig (privk b) (privk a))
+  (uniq-gen n alpha y x)
+  (absent (y x))
+  (conf group-dist)
+  (auth group-dist)
+  (operation encryption-test (displaced 2 3 init 4)
+    (enc n (exp (gen) (mul y-0 x-0 alpha))) (0 3))
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
+      (send
+        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
+          (privk b))) (recv (enc n (exp (gen) (mul alpha y x))))
+      (send n))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul alpha x)) (privk a)))
+      (recv
+        (enc (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
+          (privk b-0))) (send (enc n (exp (gen) (mul alpha y x))))))
+  (label 44)
+  (parent 39)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (y y) (x x) (g (exp (gen) alpha)) (n n) (group group)
+        (group-dist group-dist))))
+  (origs))
+
+(comment "Nothing left to do")
diff --git a/tst/dh_group_sig_shapes.tst b/tst/dh_group_sig_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/dh_group_sig_shapes.tst
@@ -0,0 +1,479 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Signed group DH exchange (improved version)"
+  (algebra diffie-hellman) (limit 100))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/dh_group_sig.scm")
+
+(comment "Step count limited to 100")
+
+(defprotocol dh_sig diffie-hellman
+  (defrole group-init
+    (vars (alpha rndx) (group text) (group-dist chan))
+    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
+    (uniq-gen alpha)
+    (conf group-dist))
+  (defrole init
+    (vars (x rndx) (y expt) (g base) (group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group g))
+      (send (enc (exp g x) (privk a)))
+      (recv (enc a (exp g y) (exp g x) (privk b)))
+      (send (enc "final" b (exp g y) (exp g x) (privk a))))
+    (uniq-gen x)
+    (auth group-dist))
+  (defrole resp
+    (vars (y rndx) (x expt) (g base) (group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group g))
+      (recv (enc (exp g x) (privk a)))
+      (send (enc a (exp g y) (exp g x) (privk b)))
+      (recv (enc "final" b (exp g y) (exp g x) (privk a))))
+    (uniq-gen y)
+    (absent (y x))
+    (auth group-dist))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dh_sig
+  (vars (group text) (a b name) (g base) (group-dist chan) (x rndx)
+    (y expt))
+  (defstrand init 4 (group group) (a a) (b b) (g g)
+    (group-dist group-dist) (x x) (y y))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x)
+  (auth group-dist)
+  (traces
+    ((recv group-dist (cat "Group id" group g))
+      (send (enc (exp g x) (privk a)))
+      (recv (enc a (exp g y) (exp g x) (privk b)))
+      (send (enc "final" b (exp g y) (exp g x) (privk a)))))
+  (label 0)
+  (unrealized (0 0) (0 2))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group text) (a b name) (group-dist chan) (y x alpha rndx))
+  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
+    (group-dist group-dist) (x x) (y y))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group) (a a) (b b) (g (exp (gen) alpha))
+    (group-dist group-dist) (y y) (x x))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x alpha)
+  (absent (y x))
+  (conf group-dist)
+  (auth group-dist)
+  (operation generalization weakened ((0 1) (2 0)))
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul x alpha)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))
+      (send
+        (enc "final" b (exp (gen) (mul y alpha))
+          (exp (gen) (mul x alpha)) (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul x alpha)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul x alpha))
+          (privk b)))))
+  (label 5)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (x x) (y y) (g (exp (gen) alpha)) (group group)
+        (group-dist group-dist))))
+  (origs))
+
+(defskeleton dh_sig
+  (vars (group group-0 text) (a b name) (group-dist group-dist-0 chan)
+    (y alpha x alpha-0 rndx))
+  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
+    (group-dist group-dist) (x x) (y (mul y (rec alpha) alpha-0)))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 3 (group group-0) (a a) (b b) (g (exp (gen) alpha-0))
+    (group-dist group-dist-0) (y y) (x (mul alpha x (rec alpha-0))))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((2 2) (0 2)) ((3 0) (2 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y alpha x alpha-0)
+  (absent (y (mul alpha x (rec alpha-0))))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation generalization weakened ((1 0) (2 0)))
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul alpha x)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (send
+        (enc "final" b (exp (gen) (mul y alpha-0))
+          (exp (gen) (mul alpha x)) (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha-0)) (exp (gen) (mul alpha x))
+          (privk b))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))))
+  (label 7)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (x x) (y (mul y (rec alpha) alpha-0))
+        (g (exp (gen) alpha)) (group group) (group-dist group-dist))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol dh_sig diffie-hellman
+  (defrole group-init
+    (vars (alpha rndx) (group text) (group-dist chan))
+    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
+    (uniq-gen alpha)
+    (conf group-dist))
+  (defrole init
+    (vars (x rndx) (y expt) (g base) (group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group g))
+      (send (enc (exp g x) (privk a)))
+      (recv (enc a (exp g y) (exp g x) (privk b)))
+      (send (enc "final" b (exp g y) (exp g x) (privk a))))
+    (uniq-gen x)
+    (auth group-dist))
+  (defrole resp
+    (vars (y rndx) (x expt) (g base) (group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group g))
+      (recv (enc (exp g x) (privk a)))
+      (send (enc a (exp g y) (exp g x) (privk b)))
+      (recv (enc "final" b (exp g y) (exp g x) (privk a))))
+    (uniq-gen y)
+    (absent (y x))
+    (auth group-dist))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dh_sig
+  (vars (group text) (a b name) (g base) (group-dist chan) (y rndx)
+    (x expt))
+  (defstrand resp 4 (group group) (a a) (b b) (g g)
+    (group-dist group-dist) (y y) (x x))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y)
+  (absent (y x))
+  (auth group-dist)
+  (traces
+    ((recv group-dist (cat "Group id" group g))
+      (recv (enc (exp g x) (privk a)))
+      (send (enc a (exp g y) (exp g x) (privk b)))
+      (recv (enc "final" b (exp g y) (exp g x) (privk a)))))
+  (label 8)
+  (unrealized (0 0) (0 1) (0 3))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig
+  (vars (group text) (a b name) (group-dist chan) (alpha y x rndx))
+  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
+    (group-dist group-dist) (y y) (x x))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand init 4 (group group) (a a) (b b) (g (exp (gen) alpha))
+    (group-dist group-dist) (x x) (y y))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
+    ((2 3) (0 3)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen alpha y x)
+  (absent (y x))
+  (conf group-dist)
+  (auth group-dist)
+  (operation encryption-test (displaced 2 3 init 4)
+    (enc "final" b (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x-0))
+      (privk a)) (0 3))
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (recv
+        (enc "final" b (exp (gen) (mul alpha y))
+          (exp (gen) (mul alpha x)) (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul alpha x)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
+          (privk b)))
+      (send
+        (enc "final" b (exp (gen) (mul alpha y))
+          (exp (gen) (mul alpha x)) (privk a)))))
+  (label 13)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (y y) (x x) (g (exp (gen) alpha)) (group group)
+        (group-dist group-dist))))
+  (origs))
+
+(defskeleton dh_sig
+  (vars (group group-0 text) (a b name) (group-dist group-dist-0 chan)
+    (y alpha alpha-0 x rndx))
+  (defstrand resp 4 (group group) (a a) (b b) (g (exp (gen) alpha))
+    (group-dist group-dist) (y y) (x (mul (rec alpha) alpha-0 x)))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand group-init 1 (group group-0) (group-dist group-dist-0)
+    (alpha alpha-0))
+  (defstrand init 4 (group group-0) (a a) (b b) (g (exp (gen) alpha-0))
+    (group-dist group-dist-0) (x x) (y (mul y alpha (rec alpha-0))))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((2 0) (3 0)) ((3 1) (0 1))
+    ((3 3) (0 3)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y alpha alpha-0 x)
+  (absent (y (mul (rec alpha) alpha-0 x)))
+  (conf group-dist group-dist-0)
+  (auth group-dist group-dist-0)
+  (operation generalization weakened ((1 0) (3 0)))
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha-0 x)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
+          (privk b)))
+      (recv
+        (enc "final" b (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha-0 x)) (privk a))))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((send group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0))))
+    ((recv group-dist-0 (cat "Group id" group-0 (exp (gen) alpha-0)))
+      (send (enc (exp (gen) (mul alpha-0 x)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul y alpha)) (exp (gen) (mul alpha-0 x))
+          (privk b)))
+      (send
+        (enc "final" b (exp (gen) (mul y alpha))
+          (exp (gen) (mul alpha-0 x)) (privk a)))))
+  (label 17)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (y y) (x (mul (rec alpha) alpha-0 x))
+        (g (exp (gen) alpha)) (group group) (group-dist group-dist))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol dh_sig2 diffie-hellman
+  (defrole group-init
+    (vars (alpha rndx) (group text) (group-dist chan))
+    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
+    (uniq-gen alpha)
+    (conf group-dist))
+  (defrole init
+    (vars (x rndx) (y expt) (g base) (n group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group g))
+      (send (enc (exp g x) (privk a)))
+      (recv (enc a (exp g y) (exp g x) (privk b)))
+      (send (enc n b (exp g (mul x y)))) (recv n))
+    (uniq-gen n x)
+    (auth group-dist))
+  (defrole resp
+    (vars (y rndx) (x expt) (g base) (n group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group g))
+      (recv (enc (exp g x) (privk a)))
+      (send (enc a (exp g y) (exp g x) (privk b)))
+      (recv (enc n b (exp g (mul y x)))) (send n))
+    (uniq-gen y)
+    (absent (y x))
+    (auth group-dist))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dh_sig2
+  (vars (n group text) (a b name) (g base) (group-dist chan) (x rndx)
+    (y expt))
+  (defstrand init 5 (n n) (group group) (a a) (b b) (g g)
+    (group-dist group-dist) (x x) (y y))
+  (non-orig (privk a) (privk b))
+  (uniq-gen n x)
+  (auth group-dist)
+  (traces
+    ((recv group-dist (cat "Group id" group g))
+      (send (enc (exp g x) (privk a)))
+      (recv (enc a (exp g y) (exp g x) (privk b)))
+      (send (enc n b (exp g (mul x y)))) (recv n)))
+  (label 18)
+  (unrealized (0 0) (0 2))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig2
+  (vars (n group text) (b a name) (group-dist chan) (alpha x y rndx))
+  (defstrand init 5 (n n) (group group) (a a) (b b)
+    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand resp 5 (n n) (group group) (a a) (b b)
+    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
+  (precedes ((0 1) (2 1)) ((0 3) (2 3)) ((1 0) (0 0)) ((1 0) (2 0))
+    ((2 2) (0 2)) ((2 4) (0 4)))
+  (non-orig (privk b) (privk a))
+  (uniq-gen n alpha x y)
+  (absent (y x))
+  (conf group-dist)
+  (auth group-dist)
+  (operation generalization weakened ((0 1) (2 0)))
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul alpha x)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
+          (privk b))) (send (enc n b (exp (gen) (mul alpha x y))))
+      (recv n))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
+          (privk b))) (recv (enc n b (exp (gen) (mul alpha x y))))
+      (send n)))
+  (label 28)
+  (parent 18)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (x x) (y y) (g (exp (gen) alpha)) (n n) (group group)
+        (group-dist group-dist))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol dh_sig2 diffie-hellman
+  (defrole group-init
+    (vars (alpha rndx) (group text) (group-dist chan))
+    (trace (send group-dist (cat "Group id" group (exp (gen) alpha))))
+    (uniq-gen alpha)
+    (conf group-dist))
+  (defrole init
+    (vars (x rndx) (y expt) (g base) (n group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group g))
+      (send (enc (exp g x) (privk a)))
+      (recv (enc a (exp g y) (exp g x) (privk b)))
+      (send (enc n b (exp g (mul x y)))) (recv n))
+    (uniq-gen n x)
+    (auth group-dist))
+  (defrole resp
+    (vars (y rndx) (x expt) (g base) (n group text) (a b name)
+      (group-dist chan))
+    (trace (recv group-dist (cat "Group id" group g))
+      (recv (enc (exp g x) (privk a)))
+      (send (enc a (exp g y) (exp g x) (privk b)))
+      (recv (enc n b (exp g (mul y x)))) (send n))
+    (uniq-gen y)
+    (absent (y x))
+    (auth group-dist))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dh_sig2
+  (vars (n group text) (a b name) (g base) (group-dist chan) (y rndx)
+    (x expt))
+  (defstrand resp 5 (n n) (group group) (a a) (b b) (g g)
+    (group-dist group-dist) (y y) (x x))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y)
+  (absent (y x))
+  (auth group-dist)
+  (traces
+    ((recv group-dist (cat "Group id" group g))
+      (recv (enc (exp g x) (privk a)))
+      (send (enc a (exp g y) (exp g x) (privk b)))
+      (recv (enc n b (exp g (mul y x)))) (send n)))
+  (label 39)
+  (unrealized (0 0) (0 1))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dh_sig2
+  (vars (n group text) (b a name) (group-dist chan) (alpha y x rndx))
+  (defstrand resp 5 (n n) (group group) (a a) (b b)
+    (g (exp (gen) alpha)) (group-dist group-dist) (y y) (x x))
+  (defstrand group-init 1 (group group) (group-dist group-dist)
+    (alpha alpha))
+  (defstrand init 4 (n n) (group group) (a a) (b b)
+    (g (exp (gen) alpha)) (group-dist group-dist) (x x) (y y))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
+    ((2 3) (0 3)))
+  (non-orig (privk b) (privk a))
+  (uniq-gen n alpha y x)
+  (absent (y x))
+  (conf group-dist)
+  (auth group-dist)
+  (operation encryption-test (displaced 2 3 init 4)
+    (enc n b (exp (gen) (mul y-0 x-0 alpha))) (0 3))
+  (traces
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (recv (enc (exp (gen) (mul alpha x)) (privk a)))
+      (send
+        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
+          (privk b))) (recv (enc n b (exp (gen) (mul alpha y x))))
+      (send n))
+    ((send group-dist (cat "Group id" group (exp (gen) alpha))))
+    ((recv group-dist (cat "Group id" group (exp (gen) alpha)))
+      (send (enc (exp (gen) (mul alpha x)) (privk a)))
+      (recv
+        (enc a (exp (gen) (mul alpha y)) (exp (gen) (mul alpha x))
+          (privk b))) (send (enc n b (exp (gen) (mul alpha y x))))))
+  (label 44)
+  (parent 39)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (y y) (x x) (g (exp (gen) alpha)) (n n) (group group)
+        (group-dist group-dist))))
+  (origs))
+
+(comment "Nothing left to do")
diff --git a/tst/dh_mim.lisp b/tst/dh_mim.lisp
deleted file mode 100644
--- a/tst/dh_mim.lisp
+++ /dev/null
@@ -1,65 +0,0 @@
-(defprotocol dh_mim reduced-diffie-hellman
-  (defrole init
-    (vars (x expn) (hy base) (n text))
-    (trace (send (gen x)) (recv hy) (send (enc n (exp hy x))))
-    (uniq-orig n x))
-  (defrole resp
-    (vars (y expn) (hx base) (n text))
-    (trace (recv hx) (send (gen y)) (recv (enc n (exp hx y))))
-    (uniq-orig y))
-  (comment "Diffie-hellman key exchange followed by an encryption"))
-
-(defskeleton dh_mim
-  (vars (n text) (hx hy base) (x y expn))
-  (defstrand init 3 (n n) (hy hy) (x x))
-  (defstrand resp 3 (n n) (hx hx) (y y))
-  (precedes ((0 2) (1 2)))
-  (uniq-orig n x y)
-  (comment "Agreement on the encrypted text only"))
-
-(defprotocol dh_mim reduced-diffie-hellman-with-penetrator
-  (defrole init
-    (vars (x expn) (hy base) (n text))
-    (trace (send (gen x)) (recv hy) (send (enc n (exp hy x))))
-    (uniq-orig n x))
-  (defrole resp
-    (vars (y expn) (hx base) (n text))
-    (trace (recv hx) (send (gen y)) (recv (enc n (exp hx y))))
-    (uniq-orig y))
-  (defrole pen-exp
-    (vars (x expn) (h base))
-    (trace (recv x) (recv h) (send (exp h x))))
-  (defrole pen-make
-    (vars (x expn))
-    (trace (send x)))
-  (defrole pen-gen
-    (vars (x expn))
-    (trace (recv x) (send (gen x))))
-  (defrole pen-dec
-    (vars (x mesg) (h base))
-    (trace (recv (enc x h)) (recv h) (send x)))
-  (defrole pen-enc
-    (vars (x mesg) (h base))
-    (trace (recv x) (recv h) (send (enc x h)))))
-
-(defskeleton dh_mim
-  (vars (n text) (hx hy base) (x y expn))
-  (defstrand init 3 (n n) (hy (gen v)) (x x))
-  (defstrand resp 3 (n n) (hx (gen u)) (y y))
-  (defstrand pen-make 1 (x u))
-  (defstrand pen-make 1 (x v))
-  (defstrand pen-gen 2 (x u))
-  (defstrand pen-gen 2 (x v))
-  (defstrand pen-exp 3 (x v) (h (gen x)))
-  (defstrand pen-dec 3 (x n) (h (exp (gen x) v)))
-  (defstrand pen-exp 3 (x u) (h (gen y)))
-  (defstrand pen-enc 3 (x n) (h (exp (gen y) u)))
-  (precedes ((2 0) (4 0)) ((3 0) (5 0))
-	    ((4 1) (1 0)) ((5 1) (0 1))
-	    ((0 0) (6 1)) ((3 0) (6 0))
-	    ((0 2) (7 0)) ((6 2) (7 1))
-	    ((7 2) (9 0)) ((9 2) (1 2))
-	    ((1 1) (8 1)) ((9 1) (8 2))
-	    ((2 0) (8 0)))
-  (uniq-orig n x y)
-  (comment "Bundle"))
diff --git a/tst/dh_mim_hack.tst b/tst/dh_mim_hack.tst
--- a/tst/dh_mim_hack.tst
+++ b/tst/dh_mim_hack.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/dh_mim_hack.scm")
 
 (defprotocol dh_mim basic
@@ -51,6 +51,7 @@
   (uniq-orig n gx gy)
   (operation encryption-test (displaced 2 0 init 3)
     (enc n (enc "dh" gx-0 gy-0 dhkey)) (1 2))
+  (strand-map 0 1)
   (traces ((send gx) (recv gy) (send (enc n (enc "dh" gx gy dhkey))))
     ((recv gx) (send gy) (recv (enc n (enc "dh" gx gy dhkey)))))
   (label 1)
@@ -71,6 +72,7 @@
   (uniq-orig n gx gy)
   (operation encryption-test (added-listener (enc "dh" gx-0 gy dhkey))
     (enc n (enc "dh" gx-0 gy dhkey)) (1 2))
+  (strand-map 0 1)
   (traces
     ((send gx) (recv gy-0) (send (enc n (enc "dh" gx gy-0 dhkey))))
     ((recv gx-0) (send gy) (recv (enc n (enc "dh" gx-0 gy dhkey))))
@@ -91,6 +93,7 @@
   (uniq-orig n gx gy)
   (operation encryption-test (added-strand CDHcalc2 2)
     (enc "dh" gx-0 gy dhkey) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((send gx) (recv gy-0) (send (enc n (enc "dh" gx gy-0 dhkey))))
     ((recv gx-0) (send gy) (recv (enc n (enc "dh" gx-0 gy dhkey))))
@@ -114,6 +117,7 @@
   (uniq-orig n gx gy)
   (operation nonce-test (added-listener (enc "dh" gx gy-0 dhkey)) n
     (1 2) (enc n (enc "dh" gx gy-0 dhkey)))
+  (strand-map 0 1 2 3)
   (traces
     ((send gx) (recv gy-0) (send (enc n (enc "dh" gx gy-0 dhkey))))
     ((recv gx-0) (send gy) (recv (enc n (enc "dh" gx-0 gy dhkey))))
@@ -139,6 +143,7 @@
   (uniq-orig n gx gy)
   (operation encryption-test (added-strand CDHcalc1 2)
     (enc "dh" gx gy-0 dhkey) (4 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send gx) (recv gy-0) (send (enc n (enc "dh" gx gy-0 dhkey))))
     ((recv gx-0) (send gy) (recv (enc n (enc "dh" gx-0 gy dhkey))))
@@ -163,6 +168,7 @@
   (non-orig dhkey (invk gx) (invk gy))
   (uniq-orig n gx gy)
   (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4 5)
   (traces
     ((send gx) (recv gy-0) (send (enc n (enc "dh" gx gy-0 dhkey))))
     ((recv gx-0) (send gy) (recv (enc n (enc "dh" gx-0 gy dhkey))))
@@ -185,6 +191,7 @@
   (non-orig dhkey (invk gx) (invk gy))
   (uniq-orig n gx gy)
   (operation generalization deleted (3 0))
+  (strand-map 0 1 2 4)
   (traces
     ((send gx) (recv gy-0) (send (enc n (enc "dh" gx gy-0 dhkey))))
     ((recv gx-0) (send gy) (recv (enc n (enc "dh" gx-0 gy dhkey))))
diff --git a/tst/dh_mim_hack_shapes.tst b/tst/dh_mim_hack_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/dh_mim_hack_shapes.tst
@@ -0,0 +1,93 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/dh_mim_hack.scm")
+
+(defprotocol dh_mim basic
+  (defrole init
+    (vars (gx gy akey) (n text) (dhkey skey))
+    (trace (send gx) (recv gy) (send (enc n (enc "dh" gx gy dhkey))))
+    (non-orig dhkey (invk gx))
+    (uniq-orig n gx))
+  (defrole resp
+    (vars (gx gy akey) (n text) (dhkey skey))
+    (trace (recv gx) (send gy) (recv (enc n (enc "dh" gx gy dhkey))))
+    (non-orig dhkey (invk gy))
+    (uniq-orig gy))
+  (defrole CDHcalc1
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gx (invk gy))) (send (enc "dh" gx gy dhkey))))
+  (defrole CDHcalc2
+    (vars (gx gy akey) (dhkey skey))
+    (trace (recv (cat gy (invk gx))) (send (enc "dh" gx gy dhkey))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Diffie-hellman key exchange followed by an encryption"))
+
+(defskeleton dh_mim
+  (vars (dhkey skey) (n text) (gx gy gy-0 gx-0 akey))
+  (defstrand init 3 (dhkey dhkey) (n n) (gx gx) (gy gy-0))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gx gx-0) (gy gy))
+  (precedes ((0 2) (1 2)))
+  (non-orig dhkey (invk gx) (invk gy))
+  (uniq-orig n gx gy)
+  (comment "Agreement on the encrypted text only")
+  (traces
+    ((send gx) (recv gy-0) (send (enc n (enc "dh" gx gy-0 dhkey))))
+    ((recv gx-0) (send gy) (recv (enc n (enc "dh" gx-0 gy dhkey)))))
+  (label 0)
+  (unrealized (1 2))
+  (origs (gy (1 1)) (gx (0 0)) (n (0 2)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dh_mim
+  (vars (dhkey skey) (n text) (gx gy akey))
+  (defstrand init 3 (dhkey dhkey) (n n) (gx gx) (gy gy))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gx gx) (gy gy))
+  (precedes ((0 0) (1 0)) ((0 2) (1 2)) ((1 1) (0 1)))
+  (non-orig dhkey (invk gx) (invk gy))
+  (uniq-orig n gx gy)
+  (operation encryption-test (displaced 2 0 init 3)
+    (enc n (enc "dh" gx-0 gy-0 dhkey)) (1 2))
+  (traces ((send gx) (recv gy) (send (enc n (enc "dh" gx gy dhkey))))
+    ((recv gx) (send gy) (recv (enc n (enc "dh" gx gy dhkey)))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1) ((n n) (gx gx) (gy gy) (dhkey dhkey) (gy-0 gy) (gx-0 gx))))
+  (origs (n (0 2)) (gx (0 0)) (gy (1 1))))
+
+(defskeleton dh_mim
+  (vars (dhkey skey) (n text) (gx gy gy-0 gx-0 akey))
+  (defstrand init 3 (dhkey dhkey) (n n) (gx gx) (gy gy-0))
+  (defstrand resp 3 (dhkey dhkey) (n n) (gx gx-0) (gy gy))
+  (defstrand CDHcalc2 2 (dhkey dhkey) (gx gx-0) (gy gy))
+  (defstrand CDHcalc1 2 (dhkey dhkey) (gx gx) (gy gy-0))
+  (precedes ((0 0) (3 0)) ((0 2) (1 2)) ((1 1) (2 0)) ((2 1) (1 2))
+    ((3 1) (1 2)))
+  (non-orig dhkey (invk gx) (invk gy))
+  (uniq-orig n gx gy)
+  (operation generalization deleted (3 0))
+  (traces
+    ((send gx) (recv gy-0) (send (enc n (enc "dh" gx gy-0 dhkey))))
+    ((recv gx-0) (send gy) (recv (enc n (enc "dh" gx-0 gy dhkey))))
+    ((recv (cat gy (invk gx-0))) (send (enc "dh" gx-0 gy dhkey)))
+    ((recv (cat gx (invk gy-0))) (send (enc "dh" gx gy-0 dhkey))))
+  (label 7)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((n n) (gx gx) (gy gy) (dhkey dhkey) (gy-0 gy-0) (gx-0 gx-0))))
+  (origs (gy (1 1)) (gx (0 0)) (n (0 2))))
+
+(comment "Nothing left to do")
diff --git a/tst/dhcr_um.lisp b/tst/dhcr_um.lisp
deleted file mode 100644
--- a/tst/dhcr_um.lisp
+++ /dev/null
@@ -1,206 +0,0 @@
-;;; Unified Model  This version used in the paper, tooldev/dh/conf_dh/dh_ebn.tex
-
-;;; This file models the "Unified Model" method of determining a fresh
-;;; key from long-term and ephemeral Diffie-Hellman exponents.  We use
-;;; function relation declarations to link names to long-term public
-;;; values.
-
-;;; This file contains the standard version, in which the two
-;;; ephemeral are mixed, as are the two static exponents.
-
-;;; A role is provided in which a party signs a fresh long-term
-;;; Diffie-Hellman value, and then leaks the exponent.  The latter step
-;;; is used to test the notion of forward security.
-
-;;; Two inputs are analyzed.  In the first, we model that two
-;;; participants exist that agree on the UM key.  The notion of
-;;; "implicit authentication" suggests that if one participant exists
-;;; and another party knows the same key, that party must be either the
-;;; participant or the participant's intended partner.
-
-;;; In this version, we assume that the long-term keys of the
-;;; participants do not leak.
-
-;;; The second input checks whether the key can be learned when the key
-;;; is generated honestly.  In this version, we do NOT assume that the
-;;; long-term keys of the participants do not leak.
-
-;;; CPSA4 revisions:
-;;;
-;;; 1.  Self certify my public value in ltx-gen,
-;;;     and assume signing keys non.
-;;; 2.  Deposit private value in state and retrieve
-;;;	it at the beginning of each init or resp run.
-;;; 3.  Discard the private value from state before
-;;;	disclosing it, when testing forward secrecy.  
-
-
-
-(herald "DHCR: unified model (UM) original"
-	(bound 20)
-	(limit 12000)
-	(algebra diffie-hellman))
-
-(defmacro (kcfa l gb x gy)
-  (hash (exp gb l) (exp gy x)))
-
-(defmacro (kcfb l ga y gx)
-  (hash (exp ga l) (exp gx y)))
-
-(defprotocol dhcr-um diffie-hellman
-  (defrole init
-    (vars (l x rndx) (gb gy base) (a b name) (na nb data) (priv-stor locn))
-    (trace
-     (load priv-stor (pv a l))
-     (recv (sig (body b gb (pubk "sig" b))
-		(privk "sig" b)))
-     (send (cat na a b (exp (gen) x)))
-     (recv (cat gy (enc na nb a b (kcfa l gb x gy))))
-     (send nb)
-     )
-    (uniq-gen x)
-    (uniq-orig na)
-    ;; (facts (neq gy (gen)))
-    (gen-st (pv a l))
-    (fn-of ("principal-of" (ltxa a) (ltxb b))
-           ("ltx-of" (a ltxa) (b ltxb))))
-
-  (defrole resp
-    (vars (l y rndx) (ga gx base) (a b name) (na nb data) (priv-stor locn))
-    (trace
-     (load priv-stor (pv b l))
-     (recv (sig (body a ga (pubk "sig" a))
-		(privk "sig" a)))
-     (recv (cat na a b gx))
-     (send (cat (exp (gen) y) (enc na nb a b (kcfb l ga y gx))))
-     (recv nb)
-     )
-    (uniq-gen y)
-    (uniq-orig nb)
-    ;; (facts (neq gx (gen)))
-    (gen-st (pv b l))
-    (fn-of ("principal-of" (ltxa a) (ltxb b))
-	   ("ltx-of" (a ltxa) (b ltxb))))
-
-  (defrole ltx-gen
-    (vars (self name) (l rndx)
-	  (priv-stor locn) (ignore mesg))
-    (trace
-     (load priv-stor ignore)
-     (stor priv-stor (pv self l))
-     (send (sig (body self (exp (gen) l) (pubk "sig" self))
-		(privk "sig" self))))
-    (uniq-orig l)    
-    (fn-of ("principal-of" (l self))
-	   ("ltx-of" (self l))))
-
-  (defrole ltx-disclose
-    (vars (self name) (l rndx)
-	  (priv-stor locn) (ignore mesg))
-    (trace
-     (load priv-stor (pv self l))
-     (stor priv-stor "nil")
-     (send l))
-    (gen-st (pv self l)) 
-    (fn-of ("principal-of" (l self))
-	   ("ltx-of" (self l))))
-
-  (defrule undisclosed-not-disclosed
-    (forall
-     ((z strd) (l rndx))
-     (implies
-      (and (fact undisclosed l)
-	  (p "ltx-disclose" z 2)
-	  (p "ltx-disclose" "l" z l))
-      (false))))
-
-  (lang (sig sign)
-	(body (tuple 3))
-	(pv (tuple 2))))
-
-; Initiator point of view: both LTX exponents secret
-(defskeleton dhcr-um
-  (vars (a b name) (l l-peer rndx))
-  (defstrand init 4 (a a) (b b) (l l) (gb (exp (gen) l-peer)))
-  (non-orig (privk "sig" b))
-  (facts (neq a b)
-	 (undisclosed l)
-	 (undisclosed l-peer)))
-
-
-; Initiator point of view:  peer exponent secret
-(defskeleton dhcr-um
-  (vars (a b name) (l l-peer rndx))
-  (defstrand init 4 (a a) (b b) (l l) (gb (exp (gen) l-peer)))
-  (non-orig (privk "sig" b))
-  (facts (neq a b)
-	 ;;	 (undisclosed l)
-	 (undisclosed l-peer)))
-
-
-; Initiator point of view:  my exponent secret
-(defskeleton dhcr-um
-  (vars (a b name) (l l-peer rndx))
-  (defstrand init 4 (a a) (b b) (l l) (gb (exp (gen) l-peer)))
-  (non-orig (privk "sig" b))
-  (facts (neq a b)
-	 ;;	 (undisclosed l-peer)
-	 (undisclosed l)))
-
-; Initiator point of view:  neither exponent secret
-
-(defskeleton dhcr-um
-  (vars (a b name) (l l-peer rndx))
-  (defstrand init 4 (a a) (b b) (l l) (gb (exp (gen) l-peer)))
-  (non-orig (privk "sig" b))
-  (facts (neq a b)
-	 ;;	 (undisclosed l-peer)
-	 ;;	 (undisclosed l)
-	 ))
-
-(comment 
-					; Initiator point of view: partner's exponent secret
- (defskeleton dhcr-um
-   (vars (ltxa ltxb rndx) (a b name))
-   (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-   (defstrand ltx-gen 1 (l ltxb))
-   (non-orig ltxb)
-   (neq (a b)))
-
-					; Responder point of view; both exponents secret
- (defskeleton dhcr-um
-   (vars (ltxa ltxb rndx) (a b name))
-   (defstrand resp 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-   (defstrand ltx-gen 1 (l ltxa))
-   (defstrand ltx-gen 1 (l ltxb))
-   (non-orig ltxa ltxb)
-   (neq (a b)))
-
-					; Responder point of view; partner's exponent secre
- (defskeleton dhcr-um
-   (vars (ltxa ltxb rndx) (a b name))
-   (defstrand resp 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-   (defstrand ltx-gen 1 (l ltxa))
-   (non-orig ltxa)
-   (neq (a b)))
-
-;;; Forward secrecy, neither long-term exponent secure
- (defskeleton dhcr-um
-   (vars (ltxa ltxb x rndx) (y expt) (a b name))
-   (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (x x) (y y) (a a) (b b))
-   (deflistener (kcfa ltxa ltxb x (exp (gen) y)))
-   (defstrand ltx-gen 3 (l ltxa))
-   (defstrand ltx-gen 3 (l ltxb))
-   (precedes ((0 3) (3 1)) ((0 3) (2 1)))
-   (neq (a b)))
-
-;;; Forward secrecy, neither long-term exponent secure
- (defskeleton dhcr-um
-   (vars (ltxa ltxb x rndx) (y expt) (a b name))
-   (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (x x) (y y) (a a) (b b))
-   (deflistener (exp (gen) (mul x y)))
-   (defstrand ltx-gen 3 (l ltxa))
-   (defstrand ltx-gen 3 (l ltxb))
-   (precedes ((0 3) (3 1)) ((0 3) (2 1)))
-   (neq (a b)))
- )
diff --git a/tst/dhcr_um.scm b/tst/dhcr_um.scm
--- a/tst/dhcr_um.scm
+++ b/tst/dhcr_um.scm
@@ -2,28 +2,31 @@
 
 ;;; This file models the "Unified Model" method of determining a fresh
 ;;; key from long-term and ephemeral Diffie-Hellman exponents.  We use
-;;; function relation declarations to link names to long-term public
-;;; values.
+;;; self-signed certificates to link names to long-term public values.
 
 ;;; This file contains the standard version, in which the two
 ;;; ephemeral are mixed, as are the two static exponents.
 
-;;; A role is provided in which a party signs a fresh long-term
-;;; Diffie-Hellman value, and then leaks the exponent.  The latter step
-;;; is used to test the notion of forward security.
+;;; A role is provided to expose the long term exponent.  The latter
+;;; step is used to test the notion of forward security, assuming that
+;;; it happens *after* the session which agrees the key in question.  
 
-;;; Two inputs are analyzed.  In the first, we model that two
-;;; participants exist that agree on the UM key.  The notion of
-;;; "implicit authentication" suggests that if one participant exists
-;;; and another party knows the same key, that party must be either the
-;;; participant or the participant's intended partner.
+;;; A sequence of queries are analyzed.  Four show what happens given
+;;; an initiator run, depnding which long term values are exposed.
+;;; Then four ask the corresponding questions about the responder.  In
+;;; each group of four, we first assume neither long term exponent is
+;;; exposed, then consider each exposure individually, and then both
+;;; exposed.  
 
-;;; In this version, we assume that the long-term keys of the
-;;; participants do not leak.
+;;; Then we consider the forward secrecy question, first from the
+;;; initiator's point of view, and then from the responder's.
 
-;;; The second input checks whether the key can be learned when the key
-;;; is generated honestly.  In this version, we do NOT assume that the
-;;; long-term keys of the participants do not leak.
+;;; The UM key derivation achieves forward secrecy.  Its weakness is
+;;; that if a participant's *own* long term value is exposed, an
+;;; adversary can acquire a key shared with them for any claimed peer.
+;;; This remains true if we stipulate that the partcipant generates a
+;;; long trem key only once.  If my peer's long term value is exposed
+;;; of course anyone can impersonate them.
 
 ;;; CPSA4 revisions:
 ;;;
@@ -35,8 +38,8 @@
 ;;;	disclosing it, when testing forward secrecy.
 
 (herald "DHCR: unified model (UM) original"
-	(bound 20)
-	(limit 2000)
+	(bound 30)
+	(limit 4000)
 	(algebra diffie-hellman))
 
 (defmacro (kcfa l gb x gy)
@@ -47,38 +50,43 @@
 
 (defprotocol dhcr-um diffie-hellman
   (defrole init
-    (vars (l x rndx) (gb gy base) (a b name) (na nb data) (priv-stor locn))
+    (vars (l x rndx) (beta eta expt) (a b name) (na nb data) (priv-stor locn))
     (trace
      (load priv-stor (pv a l))
-     (recv (sig (body b gb (pubk "sig" b))
+     (recv (sig (body b (exp (gen) beta) (pubk "sig" b))
 		(privk "sig" b)))
      (send (cat na a b (exp (gen) x)))
-     (recv (cat gy (enc na nb a b (kcfa l gb x gy))))
+     (recv (cat (exp (gen) eta)
+		(enc na nb a b
+		     (kcfa l (exp (gen) beta)
+			   x (exp (gen) eta)))))
      (send nb)
      )
     (uniq-gen x)
     (uniq-orig na)
-    ;; (facts (neq gy (gen)))
-    (gen-st (pv a l))
-    (fn-of ("principal-of" (ltxa a) (ltxb b))
-           ("ltx-of" (a ltxa) (b ltxb))))
+    (facts (neq a b))
+    ;; (facts (neq (exp (gen) eta) (gen)))
+    (gen-st (pv a l)))
 
   (defrole resp
-    (vars (l y rndx) (ga gx base) (a b name) (na nb data) (priv-stor locn))
+    (vars (l y rndx) (alpha chi expt) (a b name) (na nb data) (priv-stor locn))
     (trace
      (load priv-stor (pv b l))
-     (recv (sig (body a ga (pubk "sig" a))
+     (recv (sig (body a (exp (gen) alpha) (pubk "sig" a))
 		(privk "sig" a)))
-     (recv (cat na a b gx))
-     (send (cat (exp (gen) y) (enc na nb a b (kcfb l ga y gx))))
+     (recv (cat na a b (exp (gen) chi)))
+     (send (cat (exp (gen) y)
+		(enc na nb a b
+		     (kcfb l (exp (gen) alpha)
+			   y (exp (gen) chi)))))
      (recv nb)
+     (send "done")
      )
     (uniq-gen y)
     (uniq-orig nb)
-    ;;    (facts (neq gx (gen)))
-    (gen-st (pv b l))
-    (fn-of ("principal-of" (ltxa a) (ltxb b))
-	   ("ltx-of" (a ltxa) (b ltxb))))
+    (facts (neq a b))
+    ;;    (facts (neq (exp (gen) chi) (gen)))
+    (gen-st (pv b l)))
 
   (defrole ltx-gen
     (vars (self name) (l rndx)
@@ -88,9 +96,7 @@
      (stor priv-stor (pv self l))
      (send (sig (body self (exp (gen) l) (pubk "sig" self))
 		(privk "sig" self))))
-    (uniq-orig l)
-    (fn-of ("principal-of" (l self))
-	   ("ltx-of" (self l))))
+    (uniq-orig l))
 
   (defrole ltx-disclose
     (vars (self name) (l rndx)
@@ -99,19 +105,7 @@
      (load priv-stor (pv self l))
      (stor priv-stor "nil")
      (send l))
-    (gen-st (pv self l))
-    (fn-of ("principal-of" (l self))
-	   ("ltx-of" (self l))))
-
-  (defrule fact-resp-neq0
-    (forall ((z strd) ;(gx base)
-	     )
-	    (implies (and (p "resp" z 3) (p "resp" "gx" z (gen))) (false))))
-
-  (defrule fact-init-neq0
-    (forall ((z strd) ;(gx base)
-	     )
-	    (implies (and (p "init" z 4) (p "init" "gy" z (gen))) (false))))
+    (gen-st (pv self l)))
 
   (defrule undisclosed-not-disclosed
     (forall
@@ -122,14 +116,34 @@
 	  (p "ltx-disclose" "l" z l))
       (false))))
 
+  (defrule ltx-gen-once-inference
+    (forall
+     ((z1 z2 strd) (self name))
+     (implies
+      (and
+       (fact ltx-gen-once self)
+       (p "ltx-gen" z1 2)
+       (p "ltx-gen" "self" z1 self)
+       (p "ltx-gen" z2 2)
+       (p "ltx-gen" "self" z2 self))
+      (= z1 z2))))
+
+  (defrule eq-means-=
+    (forall
+     ((v1 v2 mesg))
+     (implies
+      (fact eq v1 v2)
+      (= v1 v2))))
+
   (lang (sig sign)
 	(body (tuple 3))
 	(pv (tuple 2))))
+ 
 
 ; Initiator point of view: both LTX exponents secret
 (defskeleton dhcr-um
   (vars (a b name) (l l-peer rndx))
-  (defstrand init 4 (a a) (b b) (l l) (gb (exp (gen) l-peer)))
+  (defstrand init 4 (a a) (b b) (l l) (beta l-peer))
   (non-orig (privk "sig" b))
   (facts (neq a b)
 	 (undisclosed l)
@@ -140,16 +154,25 @@
 ; Initiator point of view:  peer exponent secret
 (defskeleton dhcr-um
   (vars (a b name) (l l-peer rndx))
-  (defstrand init 4 (a a) (b b) (l l) (gb (exp (gen) l-peer)))
+  (defstrand init 4 (a a) (b b) (l l) ((exp (gen) beta) (exp (gen) l-peer)))
   (non-orig (privk "sig" b))
   (facts (neq a b)
 	 ;;	 (undisclosed l)
 	 (undisclosed l-peer)))
 
+(defskeleton dhcr-um
+  (vars (a b name) (l l-peer rndx))
+  (defstrand init 4 (a a) (b b) (l l) ((exp (gen) beta) (exp (gen) l-peer)))
+  (non-orig (privk "sig" b))
+  (facts (neq a b)
+	 (ltx-gen-once a)
+	 ;;	 (undisclosed l)
+	 (undisclosed l-peer)))
+
 ; Initiator point of view:  my exponent secret
 (defskeleton dhcr-um
   (vars (a b name) (l rndx) (l-peer expt))
-  (defstrand init 4 (a a) (b b) (l l) (gb (exp (gen) l-peer)))
+  (defstrand init 4 (a a) (b b) (l l) (beta l-peer))
   (non-orig (privk "sig" b))
   (facts (neq a b)
 	 ;;	 (undisclosed l-peer)
@@ -159,56 +182,74 @@
 
 (defskeleton dhcr-um
   (vars (a b name) (l rndx) (l-peer expt))
-  (defstrand init 4 (a a) (b b) (l l) (gb (exp (gen) l-peer)))
+  (defstrand init 4 (a a) (b b) (l l) (beta l-peer))
   (non-orig (privk "sig" b))
   (facts (neq a b)
 	 ;;	 (undisclosed l-peer)
 	 ;;	 (undisclosed l)
 	 ))
 
-(comment
-					; Initiator point of view: partner's exponent secret
- (defskeleton dhcr-um
-   (vars (ltxa ltxb rndx) (a b name))
-   (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-   (defstrand ltx-gen 1 (l ltxb))
-   (non-orig ltxb)
-   (neq (a b)))
 
-					; Responder point of view; both exponents secret
- (defskeleton dhcr-um
-   (vars (ltxa ltxb rndx) (a b name))
-   (defstrand resp 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-   (defstrand ltx-gen 1 (l ltxa))
-   (defstrand ltx-gen 1 (l ltxb))
-   (non-orig ltxa ltxb)
-   (neq (a b)))
+;;; Responder cases
 
-					; Responder point of view; partner's exponent secre
- (defskeleton dhcr-um
-   (vars (ltxa ltxb rndx) (a b name))
-   (defstrand resp 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-   (defstrand ltx-gen 1 (l ltxa))
-   (non-orig ltxa)
-   (neq (a b)))
+(defskeleton dhcr-um
+  (vars (a b name) (l l-peer rndx))
+  (defstrand resp 5 (a a) (b b) (l l) (alpha l-peer))
+  (non-orig (privk "sig" a))
+  (facts (neq a b)
+	 (undisclosed l)
+	 (undisclosed l-peer)))
 
-;;; Forward secrecy, neither long-term exponent secure
+(defskeleton dhcr-um
+  (vars (a b name) (l l-peer rndx))
+  (defstrand resp 5 (a a) (b b) (l l) (alpha l-peer))
+  (non-orig (privk "sig" a))
+  (facts (neq a b)
+	 ;; 	 (undisclosed l)
+	 (undisclosed l-peer)))
+
+(defskeleton dhcr-um
+  (vars (a b name) (l l-peer rndx))
+  (defstrand resp 5 (a a) (b b) (l l) (alpha l-peer))
+  (non-orig (privk "sig" a))
+  (facts (neq a b)
+	 (undisclosed l)
+	 ;;	 (undisclosed l-peer)
+	 ))
+
+(defskeleton dhcr-um
+  (vars (a b name) (l l-peer rndx))
+  (defstrand resp 5 (a a) (b b) (l l) (alpha l-peer))
+  (non-orig (privk "sig" a))
+  (facts (neq a b)
+	 ;;      (undisclosed l)
+	 ;;	 (undisclosed l-peer)
+	 ))
+
+;; Forward secrecy for each participant 
+
+(comment
+;;; These forward secrecy queries are commented out because they take
+;;; a long time to run (10 minutes plus).  They're not suitable for
+;;; the regular test suite for this reason.
+
+;;; They should however be checked from time to time.  
+
  (defskeleton dhcr-um
    (vars (ltxa ltxb x rndx) (y expt) (a b name))
-   (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (x x) (y y) (a a) (b b))
-   (deflistener (kcfa ltxa ltxb x (exp (gen) y)))
-   (defstrand ltx-gen 3 (l ltxa))
-   (defstrand ltx-gen 3 (l ltxb))
-   (precedes ((0 3) (3 1)) ((0 3) (2 1)))
+   (defstrand init 5 (l ltxa) (beta ltxb) (x x) (eta y) (a a) (b b))
+   (deflistener (kcfa ltxa (exp (gen) ltxb) x (exp (gen) y)))
+   (defstrand ltx-disclose 3 (l ltxa))
+   (defstrand ltx-disclose 3 (l ltxb))
+   (precedes ((0 4) (3 0)) ((0 4) (2 0)))
    (neq (a b)))
 
-;;; Forward secrecy, neither long-term exponent secure
  (defskeleton dhcr-um
-   (vars (ltxa ltxb x rndx) (y expt) (a b name))
-   (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (x x) (y y) (a a) (b b))
-   (deflistener (exp (exp (gen) x) y))
-   (defstrand ltx-gen 3 (l ltxa))
-   (defstrand ltx-gen 3 (l ltxb))
-   (precedes ((0 3) (3 1)) ((0 3) (2 1)))
-   (neq (a b)))
- )
+   (vars (ltxa ltxb y rndx) (chi expt) (a b name))
+   (defstrand resp 6 (l ltxa) (alpha ltxb) (y y) (chi chi) (a a) (b b))
+   (deflistener (kcfb ltxb (exp (gen) ltxa) y (exp (gen) chi)))
+   (defstrand ltx-disclose 3 (l ltxa))
+   (defstrand ltx-disclose 3 (l ltxb))
+   (precedes ((0 5) (3 0)) ((0 5) (2 0)))
+   (neq (a b))))
+
diff --git a/tst/dhcr_um.tst b/tst/dhcr_um.tst
# file too large to diff: tst/dhcr_um.tst
diff --git a/tst/dhcr_um3.scm b/tst/dhcr_um3.scm
--- a/tst/dhcr_um3.scm
+++ b/tst/dhcr_um3.scm
@@ -1,126 +1,275 @@
-; Unified Model.   This version used in the paper, tooldev/dh/conf_dh/dh_ebn.tex
+;;; Unified Model  This version used in the paper, tooldev/dh/conf_dh/dh_ebn.tex
 
-; This file models the "Unified Model" method of determining a fresh
-; key from long-term and ephemeral Diffie-Hellman exponents.  We use
-; function relation declarations to link names to long-term public
-; values.
+;;; This file models the "Unified Model" method of determining a fresh
+;;; key from long-term and ephemeral Diffie-Hellman exponents.  We use
+;;; self-signed certificates to link names to long-term public values.
 
-;;; This file contains the three-part version, in which each ephemeral
-;;; is mixed with the peer's static exponent, and also with the other
-;;; ephemeral.
+;;; This file contains the UM3 version, in which each ephemeral is
+;;; mixed with the peer's static exponent, and the two ephemerals are
+;;; also mixed with each other.  Hence, there are three DH
+;;; combinations that get hashed together.  Only the key derivation
+;;; macros differ from the version in dhcr_um.scm
 
-; A role is provided in which a party signs a fresh long-term
-; Diffie-Hellman value, and then leaks the exponent.  The latter step
-; is used to test forward security.
+;;; A role is provided to expose the long term exponent.  The latter
+;;; step is used to test the notion of forward security, assuming that
+;;; it happens *after* the session which agrees the key in question.  
 
-; Two inputs are analyzed.  In the first, we model that two
-; participants exist that agree on the UM key.  The notion of
-; "implicit authentication" suggests that if one participant exists
-; and another party knows the same key, that party must be either the
-; participant or the participant's intended partner.
+;;; A sequence of queries are analyzed.  Four show what happens given
+;;; an initiator run, depnding which long term values are exposed.
+;;; Then four ask the corresponding questions about the responder.  In
+;;; each group of four, we first assume neither long term exponent is
+;;; exposed, then consider each exposure individually, and then both
+;;; exposed.  
 
-; In this version, we assume that the long-term keys of the
-; participants do not leak.
+;;; Then we consider the forward secrecy question, first from the
+;;; initiator's point of view, and then from the responder's.
 
-; The second input checks whether the key can be learned when the key
-; is generated honestly.  In this version, we do NOT assume that the
-; long-term keys of the participants do not leak.
+;;; The UM3 key derivation achieves forward secrecy.  Its weakness is
+;;; that if a participant's *own* long term value is exposed, an
+;;; adversary can acquire a key shared with them for any claimed peer.
+;;; This remains true if we stipulate that the partcipant generates a
+;;; long trem key only once.  If my peer's long term value is exposed
+;;; of course anyone can impersonate them.
 
-(herald "DHCR: unified model (UM) three-part" (bound 20) (limit 8000) (algebra diffie-hellman))
+;;; CPSA4 revisions:
+;;;
+;;; 1.  Self certify my public value in ltx-gen,
+;;;     and assume signing keys non.
+;;; 2.  Deposit private value in state and retrieve
+;;;	it at the beginning of each init or resp run.
+;;; 3.  Discard the private value from state before
+;;;	disclosing it, when testing forward secrecy.
 
-(defmacro (kcfa ltxa ltxb x hy)
-  (hash (exp hy ltxa) (exp (gen) (mul ltxb x)) (exp hy x)))
+(herald "DHCR: unified model (UM) three-component version"
+	(bound 30)
+	(limit 8000)
+	(algebra diffie-hellman))
 
-(defmacro (kcfb ltxa ltxb y hx)
-  (hash (exp (gen) (mul ltxa y)) (exp hx ltxb) (exp hx y)))
 
-(defprotocol dhcr-um3 diffie-hellman
+
+(defmacro (kcfa ltxa gbeta x hy)
+  (hash (exp hy ltxa) (exp gbeta x) (exp hy x)))
+
+(defmacro (kcfb ltxb galpha y hx)
+  (hash (exp galpha y) (exp hx ltxb) (exp hx y)))
+
+
+(defprotocol dhcr-um diffie-hellman
   (defrole init
-    (vars (ltxa ltxb x rndx) (y expt) (a b name) (na nb data))
+    (vars (l x rndx) (beta eta expt) (a b name) (na nb data) (priv-stor locn))
     (trace
-     (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+     (load priv-stor (pv a l))
+     (recv (sig (body b (exp (gen) beta) (pubk "sig" b))
+		(privk "sig" b)))
      (send (cat na a b (exp (gen) x)))
-     (recv (cat (exp (gen) y) (enc na nb a b (kcfa ltxa ltxb x (exp (gen) y)))))
+     (recv (cat (exp (gen) eta)
+		(enc na nb a b
+		     (kcfa l (exp (gen) beta)
+			   x (exp (gen) eta)))))
      (send nb)
      )
-    (fn-of ("principal-of" (ltxa a) (ltxb b))
-           ("ltx-of" (a ltxa) (b ltxb)))
     (uniq-gen x)
     (uniq-orig na)
-    (neq ((exp (gen) y) (gen))))
+    (facts (neq a b))
+    ;; (facts (neq (exp (gen) eta) (gen)))
+    (gen-st (pv a l)))
 
   (defrole resp
-    (vars (ltxa ltxb y rndx) (x expt) (a b name) (na nb data))
+    (vars (l y rndx) (alpha chi expt) (a b name) (na nb data) (priv-stor locn))
     (trace
-     (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
-     (recv (cat na a b (exp (gen) x)))
-     (send (cat (exp (gen) y) (enc na nb a b (kcfb ltxa ltxb y (exp (gen) x)))))
+     (load priv-stor (pv b l))
+     (recv (sig (body a (exp (gen) alpha) (pubk "sig" a))
+		(privk "sig" a)))
+     (recv (cat na a b (exp (gen) chi)))
+     (send (cat (exp (gen) y)
+		(enc na nb a b
+		     (kcfb l (exp (gen) alpha)
+			   y (exp (gen) chi)))))
      (recv nb)
+     (send "done")
      )
-    (fn-of ("principal-of" (ltxa a) (ltxb b))
-	   ("ltx-of" (a ltxa) (b ltxb)))
     (uniq-gen y)
     (uniq-orig nb)
-    (neq ((exp (gen) x) (gen))))
+    (facts (neq a b))
+    ;;    (facts (neq (exp (gen) chi) (gen)))
+    (gen-st (pv b l)))
 
   (defrole ltx-gen
-    (vars (self name) (l rndx))
+    (vars (self name) (l rndx)
+	  (priv-stor locn) (ignore mesg))
     (trace
-     (send (cat self (exp (gen) l)))
-     (recv "end-of-protocol")
+     (load priv-stor ignore)
+     (stor priv-stor (pv self l))
+     (send (sig (body self (exp (gen) l) (pubk "sig" self))
+		(privk "sig" self))))
+    (uniq-orig l))
+
+  (defrole ltx-disclose
+    (vars (self name) (l rndx)
+	  (priv-stor locn) (ignore mesg))
+    (trace
+     (load priv-stor (pv self l))
+     (stor priv-stor "nil")
      (send l))
-    (uniq-gen l)
-    (fn-of ("principal-of" (l self))
-	   ("ltx-of" (self l)))))
+    (gen-st (pv self l)))
 
+  (defrule undisclosed-not-disclosed
+    (forall
+     ((z strd) (l rndx))
+     (implies
+      (and (fact undisclosed l)
+	  (p "ltx-disclose" z 2)
+	  (p "ltx-disclose" "l" z l))
+      (false))))
+
+  (defrule ltx-gen-once-inference
+    (forall
+     ((z1 z2 strd) (self name))
+     (implies
+      (and
+       (fact ltx-gen-once self)
+       (p "ltx-gen" z1 2)
+       (p "ltx-gen" "self" z1 self)
+       (p "ltx-gen" z2 2)
+       (p "ltx-gen" "self" z2 self))
+      (= z1 z2))))
+
+  (defrule eq-means-=
+    (forall
+     ((v1 v2 mesg))
+     (implies
+      (fact eq v1 v2)
+      (= v1 v2))))
+
+  (lang (sig sign)
+	(body (tuple 3))
+	(pv (tuple 2))))
+ 
+
 ; Initiator point of view: both LTX exponents secret
-(defskeleton dhcr-um3
-  (vars (ltxa ltxb rndx) (a b name))
-  (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-  (defstrand ltx-gen 1 (l ltxa))
-  (defstrand ltx-gen 1 (l ltxb))
-  (non-orig ltxa ltxb) (neq (a b)))
+(defskeleton dhcr-um
+  (vars (a b name) (l l-peer rndx))
+  (defstrand init 4 (a a) (b b) (l l) (beta l-peer))
+  (non-orig (privk "sig" b))
+  (facts (neq a b)
+	 (undisclosed l)
+	 (undisclosed l-peer)))
 
-; Initiator point of view: partner's exponent secret
-(defskeleton dhcr-um3
-  (vars (ltxa ltxb rndx) (a b name))
-  (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-  (defstrand ltx-gen 1 (l ltxb))
-  (non-orig ltxb)
-  (neq (a b)))
 
-; Initiator point of view: partner's exponent secret, listener for xy
-(defskeleton dhcr-um3
-  (vars (ltxa ltxb x y rndx) (a b name))
-  (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b) (x x) (y y))
-  (defstrand ltx-gen 1 (l ltxb))
-  (deflistener (exp (gen) (mul x y)))
-  (non-orig ltxb)
-  (neq (a b)))
 
-; Responder point of view; both exponents secret
-(defskeleton dhcr-um3
-  (vars (ltxa ltxb rndx) (a b name))
-  (defstrand resp 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-  (defstrand ltx-gen 1 (l ltxa))
-  (defstrand ltx-gen 1 (l ltxb))
-  (non-orig ltxa ltxb)
-  (neq (a b)))
+; Initiator point of view:  peer exponent secret
+(defskeleton dhcr-um
+  (vars (a b name) (l l-peer rndx))
+  (defstrand init 4 (a a) (b b) (l l) ((exp (gen) beta) (exp (gen) l-peer)))
+  (non-orig (privk "sig" b))
+  (facts (neq a b)
+	 ;;	 (undisclosed l)
+	 (undisclosed l-peer)))
 
-; Responder point of view; partner's exponent secre
-(defskeleton dhcr-um3
-  (vars (ltxa ltxb rndx) (a b name))
-  (defstrand resp 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-  (defstrand ltx-gen 1 (l ltxa))
-  (non-orig ltxa)
-  (neq (a b)))
+(defskeleton dhcr-um
+  (vars (a b name) (l l-peer rndx))
+  (defstrand init 4 (a a) (b b) (l l) ((exp (gen) beta) (exp (gen) l-peer)))
+  (non-orig (privk "sig" b))
+  (facts (neq a b)
+	 (ltx-gen-once a)
+	 ;;	 (undisclosed l)
+	 (undisclosed l-peer)))
 
-;;; Forward secrecy, neither long-term exponent secure
-(defskeleton dhcr-um3
-  (vars (ltxa ltxb x rndx) (y expt) (a b name))
-  (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (x x) (y y) (a a) (b b))
-  (deflistener (kcfa ltxa ltxb x (exp (gen) y)))
-  (defstrand ltx-gen 3 (l ltxa))
-  (defstrand ltx-gen 3 (l ltxb))
-  (precedes ((0 3) (3 1)) ((0 3) (2 1)))
-  (neq (a b)))
+; Initiator point of view:  my exponent secret
+(defskeleton dhcr-um
+  (vars (a b name) (l rndx) (l-peer expt))
+  (defstrand init 4 (a a) (b b) (l l) (beta l-peer))
+  (non-orig (privk "sig" b))
+  (facts (neq a b)
+	 ;;	 (undisclosed l-peer)
+	 (undisclosed l)))
+
+; Initiator point of view:  neither exponent secret
+
+(comment
+;;; This query shows the myriad failure cases if there's no assumption
+;;; about long term non-disclosure.  It's commented out because it
+;;; take a long time to run.  It's not suitable for the regular test
+;;; suite for this reason.
+
+;;; It should however be checked from time to time.  
+ (defskeleton dhcr-um
+   (vars (a b name) (l rndx) (l-peer expt))
+   (defstrand init 4 (a a) (b b) (l l) (beta l-peer))
+   (non-orig (privk "sig" b))
+   (facts (neq a b)
+	  ;;	 (undisclosed l-peer)
+	  ;;	 (undisclosed l)
+	  )))
+
+
+;;; Responder cases
+
+(defskeleton dhcr-um
+  (vars (a b name) (l l-peer rndx))
+  (defstrand resp 5 (a a) (b b) (l l) (alpha l-peer))
+  (non-orig (privk "sig" a))
+  (facts (neq a b)
+	 (undisclosed l)
+	 (undisclosed l-peer)))
+
+(defskeleton dhcr-um
+  (vars (a b name) (l l-peer rndx))
+  (defstrand resp 5 (a a) (b b) (l l) (alpha l-peer))
+  (non-orig (privk "sig" a))
+  (facts (neq a b)
+	 ;; 	 (undisclosed l)
+	 (undisclosed l-peer)))
+
+(defskeleton dhcr-um
+  (vars (a b name) (l l-peer rndx))
+  (defstrand resp 5 (a a) (b b) (l l) (alpha l-peer))
+  (non-orig (privk "sig" a))
+  (facts (neq a b)
+	 (undisclosed l)
+	 ;;	 (undisclosed l-peer)
+	 ))
+
+(comment
+;;; This query shows the myriad failure cases if there's no assumption
+;;; about long term non-disclosure.  It's commented out because it
+;;; take a long time to run.  It's not suitable for the regular test
+;;; suite for this reason.
+
+;;; It should however be checked from time to time.  
+ (defskeleton dhcr-um
+   (vars (a b name) (l l-peer rndx))
+   (defstrand resp 5 (a a) (b b) (l l) (alpha l-peer))
+   (non-orig (privk "sig" a))
+   (facts (neq a b)
+	  ;;      (undisclosed l)
+	  ;;	 (undisclosed l-peer)
+	  )))
+
+;; Forward secrecy for each participant 
+
+(comment
+;;; These forward secrecy queries are commented out because they take
+;;; a long time to run (10 minutes plus).  They're not suitable for
+;;; the regular test suite for this reason.
+
+;;; They should however be checked from time to time.  
+
+ (defskeleton dhcr-um
+   (vars (ltxa ltxb x rndx) (y expt) (a b name))
+   (defstrand init 5 (l ltxa) (beta ltxb) (x x) (eta y) (a a) (b b))
+   (deflistener (kcfa ltxa (exp (gen) ltxb) x (exp (gen) y)))
+   (defstrand ltx-disclose 3 (l ltxa))
+   (defstrand ltx-disclose 3 (l ltxb))
+   (precedes ((0 4) (3 0)) ((0 4) (2 0)))
+   (neq (a b)))
+
+ (defskeleton dhcr-um
+   (vars (ltxa ltxb y rndx) (chi expt) (a b name))
+   (defstrand resp 6 (l ltxa) (alpha ltxb) (y y) (chi chi) (a a) (b b))
+   (deflistener (kcfb ltxb (exp (gen) ltxa) y (exp (gen) chi)))
+   (defstrand ltx-disclose 3 (l ltxa))
+   (defstrand ltx-disclose 3 (l ltxb))
+   (precedes ((0 5) (3 0)) ((0 5) (2 0)))
+   (neq (a b))))
+
diff --git a/tst/dhcr_um3.tst b/tst/dhcr_um3.tst
# file too large to diff: tst/dhcr_um3.tst
diff --git a/tst/dhcr_um3_goals.scm b/tst/dhcr_um3_goals.scm
new file mode 100644
--- /dev/null
+++ b/tst/dhcr_um3_goals.scm
@@ -0,0 +1,286 @@
+;;; Unified Model  This version used in the paper, tooldev/dh/conf_dh/dh_ebn.tex
+
+;;; This file models the "Unified Model" method of determining a fresh
+;;; key from long-term and ephemeral Diffie-Hellman exponents.  We use
+;;; self-signed certificates to link names to long-term public values.
+
+;;; This file contains the UM3 version, in which each ephemeral is
+;;; mixed with the peer's static exponent, and the two ephemerals are
+;;; also mixed with each other.  Hence, there are three DH
+;;; combinations that get hashed together.  Only the key derivation
+;;; macros differ from the version in dhcr_um.scm
+
+;;; A role is provided to expose the long term exponent.  The latter
+;;; step is used to test the notion of forward security, assuming that
+;;; it happens *after* the session which agrees the key in question.  
+
+;;; A sequence of queries are analyzed.  Four show what happens given
+;;; an initiator run, depnding which long term values are exposed.
+;;; Then four ask the corresponding questions about the responder.  In
+;;; each group of four, we first assume neither long term exponent is
+;;; exposed, then consider each exposure individually, and then both
+;;; exposed.  
+
+;;; Then we consider the forward secrecy question, first from the
+;;; initiator's point of view, and then from the responder's.
+
+;;; The UM3 key derivation achieves forward secrecy.  Its weakness is
+;;; that if a participant's *own* long term value is exposed, an
+;;; adversary can acquire a key shared with them for any claimed peer.
+;;; This remains true if we stipulate that the partcipant generates a
+;;; long trem key only once.  If my peer's long term value is exposed
+;;; of course anyone can impersonate them.
+
+;;; CPSA4 revisions:
+;;;
+;;; 1.  Self certify my public value in ltx-gen,
+;;;     and assume signing keys non.
+;;; 2.  Deposit private value in state and retrieve
+;;;	it at the beginning of each init or resp run.
+;;; 3.  Discard the private value from state before
+;;;	disclosing it, when testing forward secrecy.
+
+(herald "DHCR: unified model (UM) three-component version"
+	(bound 30)
+	(limit 8000)
+	(algebra diffie-hellman))
+
+
+
+(defmacro (kcfa ltxa gbeta x hy)
+  (hash (exp hy ltxa) (exp gbeta x) (exp hy x)))
+
+(defmacro (kcfb ltxb galpha y hx)
+  (hash (exp galpha y) (exp hx ltxb) (exp hx y)))
+
+
+(defprotocol dhcr-um3 diffie-hellman
+  (defrole init
+    (vars (l x rndx) (beta eta expt) (a b name) (na nb data) (priv-stor locn))
+    (trace
+     (load priv-stor (pv a l))
+     (recv (sig (body b (exp (gen) beta) (pubk "sig" b))
+		(privk "sig" b)))
+     (send (cat na a b (exp (gen) x)))
+     (recv (cat (exp (gen) eta)
+		(enc na nb a b
+		     (kcfa l (exp (gen) beta)
+			   x (exp (gen) eta)))))
+     (send nb)
+     )
+    (uniq-gen x)
+    (uniq-orig na)
+    (facts (neq a b))
+    ;; (facts (neq (exp (gen) eta) (gen)))
+    (gen-st (pv a l)))
+
+  (defrole resp
+    (vars (l y rndx) (alpha chi expt) (a b name) (na nb data) (priv-stor locn))
+    (trace
+     (load priv-stor (pv b l))
+     (recv (sig (body a (exp (gen) alpha) (pubk "sig" a))
+		(privk "sig" a)))
+     (recv (cat na a b (exp (gen) chi)))
+     (send (cat (exp (gen) y)
+		(enc na nb a b
+		     (kcfb l (exp (gen) alpha)
+			   y (exp (gen) chi)))))
+     (recv nb)
+     (send "done")
+     )
+    (uniq-gen y)
+    (uniq-orig nb)
+    (facts (neq a b))
+    ;;    (facts (neq (exp (gen) chi) (gen)))
+    (gen-st (pv b l)))
+
+  (defrole ltx-gen
+    (vars (self name) (l rndx)
+	  (priv-stor locn) (ignore mesg))
+    (trace
+     (load priv-stor ignore)
+     (stor priv-stor (pv self l))
+     (send (sig (body self (exp (gen) l) (pubk "sig" self))
+		(privk "sig" self))))
+    (uniq-orig l))
+
+  (defrole ltx-disclose
+    (vars (self name) (l rndx)
+	  (priv-stor locn) (ignore mesg))
+    (trace
+     (load priv-stor (pv self l))
+     (stor priv-stor "nil")
+     (send l))
+    (gen-st (pv self l)))
+
+  (defrule undisclosed-not-disclosed
+    (forall
+     ((z strd) (l rndx))
+     (implies
+      (and (fact undisclosed l)
+	  (p "ltx-disclose" z 2)
+	  (p "ltx-disclose" "l" z l))
+      (false))))
+
+  (defrule ltx-gen-once-inference
+    (forall
+     ((z1 z2 strd) (self name))
+     (implies
+      (and
+       (fact ltx-gen-once self)
+       (p "ltx-gen" z1 2)
+       (p "ltx-gen" "self" z1 self)
+       (p "ltx-gen" z2 2)
+       (p "ltx-gen" "self" z2 self))
+      (= z1 z2))))
+
+  (defrule eq-means-=
+    (forall
+     ((v1 v2 mesg))
+     (implies
+      (fact eq v1 v2)
+      (= v1 v2))))
+
+  (lang (sig sign)
+	(body (tuple 3))
+	(pv (tuple 2))))
+ 
+
+
+
+
+(defgoal dhcr-um3
+  (forall
+   ((na nb data) (a b name) (l l-peer x rndx)
+    (eta expt) (z strd))
+   (implies
+    (and
+     (p "init" z 4)
+     (p "init" "na" z na)
+     (p "init" "nb" z nb)     
+     (p "init" "a" z a)
+     (p "init" "b" z b)
+     (p "init" "l" z l)
+     (p "init" "x" z x)
+     (p "init" "beta" z l-peer)     
+     (p "init" "eta" z eta)
+      
+     (non (privk "sig" b))
+     (ugen x)
+     (uniq-at na z 2)
+     (fact neq a b)
+     ;; skip the ltx-gen-once assumption 
+     ;; (fact ltx-gen-once a)
+     (fact undisclosed l-peer))
+    ;; and still get the authentication we need 
+    (exists
+     ((z-1 strd) (y rndx) (w expt))
+     (and
+      (p "resp" z-1 4) 
+      (p "resp" "na" z-1 na)
+      (p "resp" "nb" z-1 nb) (p "resp" "a" z-1 a)
+      (p "resp" "b" z-1 b)       
+      (prec z 2 z-1 2))))))
+
+(defgoal dhcr-um3
+  (forall
+   ((z zl strd) (na nb data) (a b name)  (l x rndx)
+    (eta beta expt))
+   (implies
+    (and
+     (p "init" z 4)
+     (p "init" "na" z na)
+     (p "init" "nb" z nb)     
+     (p "init" "a" z a)
+     (p "init" "b" z b)
+     (p "init" "l" z l)
+     (p "init" "x" z x)
+     (p "init" "beta" z beta)     
+     (p "init" "eta" z eta)
+     (non (privk "sig" b))
+     (ugen x)
+     (uniq-at na z 2)
+     (fact neq a b)
+     ;; skip the ltx-gen-once assumption 
+     ;; (fact ltx-gen-once a)
+     (fact undisclosed beta)
+     ;; and still get the secrecy we need
+     (p "" zl 2)
+     (p "" "x" zl 
+	(kcfa l (exp (gen) beta)
+	      x (exp (gen) eta))))
+    (false))))
+
+(comment
+;;; comment this out for brevity in the tst suite run.
+;;; Be sure to test it periodically, though.  
+
+ (defgoal dhcr-um3
+   (forall
+    ((na nb data) (a b self self-0 name)
+     (ltxa ltxb x rndx)
+     (y expt) (z z-0 z-1 z-2 strd))
+    (implies
+     (and (p "init" z 5)
+	  (p "" z-0 2)
+	  (p "ltx-disclose" z-1 3)
+	  (p "ltx-disclose" z-2 3)
+
+	  (p "init" "na" z na)
+          (p "init" "nb" z nb)
+	  (p "init" "a" z a)
+	  (p "init" "b" z b)
+	  (p "init" "l" z ltxa)
+          (p "init" "x" z x)
+	  (p "init" "beta" z ltxb)
+	  (p "init" "eta" z y)
+	 
+          (p "" "x" z-0
+             (hash (exp (gen) (mul ltxa ltxb))
+		   (exp (gen) (mul x y))))
+	 
+          (p "ltx-disclose" "self" z-1 self)
+          (p "ltx-disclose" "l" z-1 ltxa)
+          (p "ltx-disclose" "self" z-2 self-0)
+          (p "ltx-disclose" "l" z-2 ltxb)
+	  (ugen x)
+	  (uniq-at na z 2)
+	  (prec z 4 z-1 0)
+	  (prec z 4 z-2 0))
+     (false))))
+
+ (defgoal dhcr-um3
+   (forall
+    ((na nb data) (a b self self-0 name)
+     (ltxa ltxb y rndx)
+     (chi expt) (z z-0 z-1 z-2 strd))
+    (implies
+     (and
+      (p "resp" z 6)
+      (p "" z-0 2)
+      (p "ltx-disclose" z-1 3)     
+      (p "ltx-disclose" z-2 3)
+     
+      (p "resp" "na" z na)
+      (p "resp" "nb" z nb)
+      (p "resp" "a" z a)
+      (p "resp" "b" z b)
+      (p "resp" "l" z ltxa)
+      (p "resp" "y" z y)
+      (p "resp" "alpha" z ltxb)
+      (p "resp" "chi" z chi)
+     
+      (p "" "x" z-0
+         (hash (exp (gen) (mul ltxa y))
+	       (exp (gen) (mul ltxb chi))
+	       (exp (gen) (mul y chi))))
+
+      (p "ltx-disclose" "self" z-1 self)
+      (p "ltx-disclose" "l" z-1 ltxa)
+      (p "ltx-disclose" "self" z-2 self-0)
+      (p "ltx-disclose" "l" z-2 ltxb)
+
+      (prec z 5 z-1 0) (prec z 5 z-2 0)
+      (ugen y) (uniq-at nb z 3)
+      (fact neq a b))
+     (false)))))
diff --git a/tst/dhcr_um3_goals.tst b/tst/dhcr_um3_goals.tst
new file mode 100644
--- /dev/null
+++ b/tst/dhcr_um3_goals.tst
@@ -0,0 +1,28448 @@
+(herald "DHCR: unified model (UM) three-component version" (bound 30)
+  (limit 8000) (algebra diffie-hellman))
+
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/dhcr_um3_goals.scm")
+(comment "Step count limited to 8000")
+(comment "Strand count bounded at 30")
+
+(defprotocol dhcr-um3 diffie-hellman
+  (defrole init
+    (vars (l x rndx) (beta eta expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a l))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))
+              (exp (gen) (mul x eta)))))) (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x l) (x beta))
+    (facts (neq a b))
+    (gen-st (pv a l)))
+  (defrole resp
+    (vars (l y rndx) (alpha chi expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b l))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul l chi))
+              (exp (gen) (mul y chi)))))) (recv nb) (send "done"))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y l) (y alpha) (y chi))
+    (facts (neq a b))
+    (gen-st (pv b l)))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l)))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z (idx 2))
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defrule ltx-gen-once-inference
+    (forall ((z1 z2 strd) (self name))
+      (implies
+        (and (fact ltx-gen-once self) (p "ltx-gen" z1 (idx 2))
+          (p "ltx-gen" "self" z1 self) (p "ltx-gen" z2 (idx 2))
+          (p "ltx-gen" "self" z2 self))
+        (= z1 z2))))
+  (defrule eq-means-=
+    (forall ((v1 v2 mesg)) (implies (fact eq v1 v2) (= v1 v2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "init" z (idx 2)) (p "init" "a" z a) (p "init" "b" z b))
+        (fact neq a b))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "resp" z (idx 2)) (p "resp" "a" z a) (p "resp" "b" z b))
+        (fact neq a b))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd))
+      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 1)))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd))
+      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 0)))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd))
+      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 1)))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd))
+      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 0)))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (a name) (l rndx))
+      (implies
+        (and (p "init" z (idx 1)) (p "init" "l" z l) (p "init" "a" z a))
+        (gen-st (pv a l)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (b name) (l rndx))
+      (implies
+        (and (p "resp" z (idx 1)) (p "resp" "l" z l) (p "resp" "b" z b))
+        (gen-st (pv b l)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (self name) (l rndx))
+      (implies
+        (and (p "ltx-disclose" z (idx 1)) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn)
+    (l l-peer x rndx) (eta expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-peer) (eta eta))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x l) (x l-peer))
+  (facts (neq a b) (undisclosed l-peer))
+  (goals
+    (forall
+      ((na nb data) (a b name) (l l-peer x rndx) (eta expt) (z strd))
+      (implies
+        (and (p "init" z 4) (p "init" "na" z na) (p "init" "nb" z nb)
+          (p "init" "a" z a) (p "init" "b" z b) (p "init" "l" z l)
+          (p "init" "x" z x) (p "init" "beta" z l-peer)
+          (p "init" "eta" z eta) (non (privk "sig" b)) (ugen x)
+          (uniq-at na z 2) (fact neq a b) (fact undisclosed l-peer))
+        (exists ((z-1 strd) (y rndx) (w expt))
+          (and (p "resp" z-1 4) (p "resp" "na" z-1 na)
+            (p "resp" "nb" z-1 nb) (p "resp" "a" z-1 a)
+            (p "resp" "b" z-1 b) (prec z 2 z-1 2))))))
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-peer) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l eta)) (exp (gen) (mul l-peer x))
+              (exp (gen) (mul x eta))))))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (na (0 2)))
+  (ugens (x (0 2)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn)
+    (l l-peer x rndx) (eta expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-peer) (eta eta))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x l) (x l-peer))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-peer))
+  (rule fact-resp-neq0 gen-st-ltx-disclose-0)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-peer) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l eta)) (exp (gen) (mul l-peer x))
+              (exp (gen) (mul x eta))))))))
+  (label 1)
+  (parent 0)
+  (unrealized (0 0) (0 1))
+  (origs (na (0 2)))
+  (ugens (x (0 2)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore mesg) (na nb data) (a b name) (pt pt-0 pval)
+    (priv-stor locn) (l-peer x rndx) (eta expt) (l rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-peer) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (precedes ((1 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l)
+  (uniq-gen x)
+  (absent (x l-peer) (x l))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-peer))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor (cat pt (pv a l))) (0 0))
+  (strand-map 0)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-peer) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul l-peer x))
+              (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l)))))
+  (label 2)
+  (parent 1)
+  (unrealized (0 1) (0 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 1) (0 0)) ((2 2) (0 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand ltx-gen 3)
+    (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)) (0 1))
+  (strand-map 0 1)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))))
+  (label 3)
+  (parent 2)
+  (unrealized (0 3))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 3) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 gen-st-ltx-disclose-0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand resp 4)
+    (enc na nb a b
+      (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+        (exp (gen) (mul y x l-0 (rec l-1))))) (0 3))
+  (strand-map 0 1 2)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1)))))))))
+  (label 4)
+  (parent 3)
+  (unrealized (0 3) (3 0) (3 1) (3 2))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x eta))))
+  (precedes ((0 2) (3 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+        (exp (gen) (mul x eta))))
+    (enc na nb a b
+      (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+        (exp (gen) (mul x eta)))) (0 3))
+  (strand-map 0 1 2)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x eta))))
+      (send
+        (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x eta))))))
+  (label 5)
+  (parent 3)
+  (unrealized (3 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
+    ((3 3) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 4 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x))))))))
+  (label 6)
+  (parent 4)
+  (unrealized (3 1))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 3) (0 3))
+    ((4 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1)))))
+  (label 7)
+  (parent 4)
+  (unrealized (0 3) (3 1) (3 2))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x eta))))
+  (deflistener
+    (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x eta))))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+        (exp (gen) (mul x eta))))
+    (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x eta))) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x eta))))
+      (send
+        (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x eta)))))
+    ((recv
+       (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x eta))))
+      (send
+        (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x eta))))))
+  (label 8)
+  (parent 5)
+  (unrealized (4 0))
+  (comment "8 in cohort - 8 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
+    ((3 1) (0 0)) ((3 2) (2 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 1 4 ltx-gen 3) (exp (gen) l-0) (3 1))
+  (strand-map 0 3 1 2)
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 9)
+  (parent 6)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps
+    ((0)
+      ((na na) (nb nb) (a self) (b b) (l l-0) (l-peer l) (x x) (eta y)
+        (priv-stor priv-stor-0))))
+  (origs (l-0 (3 1)) (pt-2 (3 1)) (l (1 1)) (pt-0 (1 1)) (nb (2 3))
+    (na (0 2)))
+  (ugens (y (2 3)) (x (0 2))))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx) (w expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (deflistener (cat (exp (gen) (mul l (rec w))) w))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l (rec w))) w)) (exp (gen) l)
+    (3 1))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) (mul l (rec w))) w))
+      (send (cat (exp (gen) (mul l (rec w))) w))))
+  (label 10)
+  (parent 6)
+  (unrealized (4 0))
+  (comment "7 in cohort - 7 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 3) (0 3))
+    ((4 1) (3 0)) ((4 1) (5 0)) ((5 1) (3 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l l-0)) l-1))
+    (exp (gen) (mul l l-0 (rec l-1))) (3 1))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1))))
+  (label 11)
+  (parent 7)
+  (unrealized (0 3) (3 2) (5 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l (rec l-1))) l-0))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((5 1) (3 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l (rec l-1))) l-0))
+    (exp (gen) (mul l l-0 (rec l-1))) (3 1))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l (rec l-1))) l-0))
+      (send (cat (exp (gen) (mul l (rec l-1))) l-0))))
+  (label 12)
+  (parent 7)
+  (unrealized (0 3) (3 2) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((5 1) (3 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+    (exp (gen) (mul l l-0 (rec l-1))) (3 1))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l))))
+  (label 13)
+  (parent 7)
+  (unrealized (0 3) (3 2) (5 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx)
+    (alpha chi expt) (l-1 y rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec l-1) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) y))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) y))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 3) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y l-0) (y alpha) (y chi))
+  (gen-st (pv a l-1) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-1) y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) y)))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) y))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) y)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul l-0 chi))
+              (exp (gen) (mul chi y))))))))
+  (label 14)
+  (parent 8)
+  (unrealized (0 3) (4 0) (5 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (beta expt)
+    (l-1 x-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec l-1) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) x-0))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-1) (x-0 l-0) (x-0 beta))
+  (gen-st (pv a l-1) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-1) x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) x-0)))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) x-0))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 15)
+  (parent 8)
+  (unrealized (0 3) (4 0) (5 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (rec l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+  (deflistener
+    (cat (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (contracted (eta (rec l-0)) (l-1 l-0)) (gen)
+    (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (rec l-0))
+          (enc na nb a b
+            (hash (gen) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+      (send
+        (hash (gen) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0))))))
+    ((recv
+       (cat (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+      (send
+        (cat (gen) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0)))))))
+  (label 16)
+  (parent 8)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul (rec l) x x))))
+  (deflistener
+    (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul (rec l) x x))))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 5 0 init 3) (exp (gen) x-0) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+              (exp (gen) (mul (rec l) x x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul (rec l) x x))))
+      (send
+        (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul (rec l) x x)))))
+    ((recv
+       (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul (rec l) x x))))
+      (send
+        (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul (rec l) x x))))))
+  (label 17)
+  (parent 8)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) l-0))))
+  (deflistener
+    (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) l-0))))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 5 2 ltx-gen 3) (exp (gen) l-1) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) l-0)))))
+    ((recv
+       (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) l-0))))))
+  (label 18)
+  (parent 8)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+  (deflistener
+    (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 2) (3 0)) ((1 2) (0 1)) ((2 1) (0 3)) ((3 1) (2 0))
+    ((4 1) (0 0)) ((4 2) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((4 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 1 5 ltx-gen 3) (exp (gen) l-1) (4 0))
+  (strand-map 0 4 1 2 3)
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (gen)
+          (enc na nb self b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l))
+              (exp (gen) x))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 19)
+  (parent 8)
+  (unrealized (3 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) l-1) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) l-1))))
+  (deflistener
+    (cat (exp (gen) l-1) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) l-1) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) l-1) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) l-1) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) l-1)))))
+    ((recv
+       (cat (exp (gen) l-1) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) l-1) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) l-1)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 20)
+  (parent 8)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx) (w expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x eta))))
+  (deflistener
+    (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x eta))))
+  (deflistener (cat (exp (gen) (mul eta l (rec w))) w))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul eta l (rec w))) w))
+    (exp (gen) (mul eta l)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x eta))))
+      (send
+        (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x eta)))))
+    ((recv
+       (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x eta))))
+      (send
+        (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x eta)))))
+    ((recv (cat (exp (gen) (mul eta l (rec w))) w))
+      (send (cat (exp (gen) (mul eta l (rec w))) w))))
+  (label 21)
+  (parent 8)
+  (unrealized (4 0) (5 0))
+  (comment "7 in cohort - 7 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 rndx)
+    (beta expt) (l-1 x-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-1) (chi x))
+  (deflistener (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 1)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-1)
+  (uniq-gen y x x-0)
+  (absent (y x) (y l) (y l-1) (x l) (x l-1) (x-0 l-0) (x-0 beta))
+  (precur (4 0))
+  (gen-st (pv a l-1) (pv b l) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-1 (rec x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 22)
+  (parent 10)
+  (unrealized (3 1) (4 0) (5 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y l l-0 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (deflistener (cat (exp (gen) x) (mul l (rec x))))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y l) (y l-0) (y x) (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 5 0 init 3) (exp (gen) x-0) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul l-0 x))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul l-0 x))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) x) (mul l (rec x))))
+      (send (cat (exp (gen) x) (mul l (rec x))))))
+  (label 23)
+  (parent 10)
+  (unrealized (3 1) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (gen) l-0))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (4 0)) ((2 1) (3 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (contracted (l-1 l-0) (w l-0)) (gen) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0))))
+  (label 24)
+  (parent 10)
+  (unrealized (4 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
+    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (3 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 1 5 ltx-gen 3) (exp (gen) l-1) (4 0))
+  (strand-map 0 4 1 2 3)
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 25)
+  (parent 10)
+  (seen 9)
+  (seen-ops
+    (9 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 rndx)
+    (alpha chi expt) (l-1 y-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-1) (chi x))
+  (deflistener (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 1)) ((5 3) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-1)
+  (uniq-gen y x y-0)
+  (absent (y x) (y l) (y l-1) (x l) (x l-1) (y-0 l-0) (y-0 alpha)
+    (y-0 chi))
+  (precur (4 0))
+  (gen-st (pv a l-1) (pv b l) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y-0) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-1 (rec y-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul l-0 chi))
+              (exp (gen) (mul chi y-0))))))))
+  (label 26)
+  (parent 10)
+  (unrealized (3 1) (4 0) (5 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (deflistener (cat (exp (gen) l-0) (mul l (rec l-0))))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
+    ((2 2) (4 0)) ((3 3) (0 3)) ((4 1) (3 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 5 2 ltx-gen 3) (exp (gen) l-1) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) l-0) (mul l (rec l-0))))
+      (send (cat (exp (gen) l-0) (mul l (rec l-0))))))
+  (label 27)
+  (parent 10)
+  (unrealized (3 1) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 1)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul l-0 (rec l-1)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 28)
+  (parent 10)
+  (unrealized (3 1) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 3) (0 3))
+    ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (5 0)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1)))
+  (label 29)
+  (parent 11)
+  (unrealized (0 3) (3 2) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul l (rec l-0))) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((5 1) (3 1)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (5 0)
+    (ch-msg priv-stor (cat pt (pv a l-1))))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul l (rec l-0))) l-1))
+      (send (cat (exp (gen) (mul l (rec l-0))) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-1)))
+  (label 30)
+  (parent 13)
+  (unrealized (0 3) (3 2) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x y (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x y (rec l-0)))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 3) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 6 1 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l))
+              (exp (gen) (mul x y (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x y (rec l-0)))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x y (rec l-0))))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x y (rec l-0)))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x y (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y))))))))
+  (label 31)
+  (parent 14)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) y))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) y))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 3) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 6 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) y)))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) y))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) y)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y))))))))
+  (label 32)
+  (parent 14)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 y l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) y))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) y))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 3) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((6 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) y)))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) y))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) y)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 33)
+  (parent 14)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x x-0 (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x x-0 (rec l-0)))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 6 1 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l))
+              (exp (gen) (mul x x-0 (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x x-0 (rec l-0))))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x x-0 (rec l-0)))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x x-0 (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 34)
+  (parent 15)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) x-0))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) x-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 6 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) x-0)))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) x-0))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) x-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 35)
+  (parent 15)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) x-0))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((6 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) x-0)))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) x-0))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
+  (label 36)
+  (parent 15)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (rec l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+  (deflistener
+    (cat (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (5 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (rec l-0))
+          (enc na nb a b
+            (hash (gen) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+      (send
+        (hash (gen) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0))))))
+    ((recv
+       (cat (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+      (send
+        (cat (gen) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0))))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 37)
+  (parent 16)
+  (unrealized (0 3) (4 0) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (rec l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+  (deflistener
+    (cat (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (5 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (rec l-0))
+          (enc na nb a b
+            (hash (gen) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+      (send
+        (hash (gen) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0))))))
+    ((recv
+       (cat (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+      (send
+        (cat (gen) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0))))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 38)
+  (parent 16)
+  (unrealized (4 0) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul (rec l) x x))))
+  (deflistener
+    (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul (rec l) x x))))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (5 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul l-0 x)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+              (exp (gen) (mul (rec l) x x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul (rec l) x x))))
+      (send
+        (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul (rec l) x x)))))
+    ((recv
+       (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul (rec l) x x))))
+      (send
+        (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul (rec l) x x)))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 39)
+  (parent 17)
+  (unrealized (4 0) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul (rec l) x x))))
+  (deflistener
+    (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul (rec l) x x))))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (5 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul l-0 x)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+              (exp (gen) (mul (rec l) x x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul (rec l) x x))))
+      (send
+        (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul (rec l) x x)))))
+    ((recv
+       (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul (rec l) x x))))
+      (send
+        (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul (rec l) x x)))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 40)
+  (parent 17)
+  (unrealized (0 3) (4 0) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) l-0))))
+  (deflistener
+    (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) l-0))))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (5 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) l-0)))))
+    ((recv
+       (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) l-0)))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 41)
+  (parent 18)
+  (unrealized (0 3) (4 0) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) l-0))))
+  (deflistener
+    (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) l-0))))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (5 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) l-0)))))
+    ((recv
+       (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) l-0)))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 42)
+  (parent 18)
+  (unrealized (4 0) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+  (deflistener
+    (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (5 0)) ((1 2) (0 1)) ((2 1) (0 3)) ((3 1) (2 0))
+    ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((4 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (3 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (gen)
+          (enc na nb self b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l))
+              (exp (gen) x))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 43)
+  (parent 19)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+  (deflistener
+    (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (5 0)) ((1 2) (0 1)) ((2 1) (0 3)) ((3 1) (2 0))
+    ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((4 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (3 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (gen)
+          (enc na nb self b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l))
+              (exp (gen) x))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 44)
+  (parent 19)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) l-1) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) l-1))))
+  (deflistener
+    (cat (exp (gen) l-1) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) l-1) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) l-1) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) l-1) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) l-1)))))
+    ((recv
+       (cat (exp (gen) l-1) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) l-1) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) l-1)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 45)
+  (parent 20)
+  (unrealized (0 3) (4 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) l-1) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) l-1))))
+  (deflistener
+    (cat (exp (gen) l-1) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) l-1) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) l-1) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) l-1) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) l-1)))))
+    ((recv
+       (cat (exp (gen) l-1) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) l-1) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) l-1)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 46)
+  (parent 20)
+  (unrealized (4 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (beta expt)
+    (l-1 rndx) (w expt) (x-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec l-1) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) w x-0))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) w x-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-1) (x-0 l-0) (x-0 beta))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-1) w x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) w x-0)))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) w x-0))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) w x-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 47)
+  (parent 21)
+  (unrealized (0 3) (4 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (w expt)
+    (l l-0 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul w (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul w (rec l) x x))))
+  (deflistener
+    (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul w (rec l) x x))))
+  (deflistener (cat (exp (gen) x) w))
+  (precedes ((0 2) (5 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 0 init 3) (exp (gen) x-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+              (exp (gen) (mul w (rec l) x x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul w (rec l) x x))))
+      (send
+        (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul w (rec l) x x)))))
+    ((recv
+       (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul w (rec l) x x))))
+      (send
+        (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul w (rec l) x x)))))
+    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w))))
+  (label 48)
+  (parent 21)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l l-0 rndx)
+    (w expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) w) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w))))
+  (deflistener
+    (cat (exp (gen) w) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w))))
+  (deflistener (cat (gen) w))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (eta (mul (rec l-0) w)) (l-1 l-0) (w-0 w)) (gen) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w))
+          (enc na nb a b
+            (hash (exp (gen) w) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) w) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w))))
+      (send
+        (hash (exp (gen) w) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w)))))
+    ((recv
+       (cat (exp (gen) w) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w))))
+      (send
+        (cat (exp (gen) w) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w)))))
+    ((recv (cat (gen) w)) (send (cat (gen) w))))
+  (label 49)
+  (parent 21)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta w))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w))))
+  (deflistener
+    (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 2) (3 0)) ((1 2) (0 1)) ((2 1) (0 3)) ((3 1) (2 0))
+    ((4 1) (3 0)) ((5 1) (0 0)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((5 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 1 6 ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 5 1 2 3 4)
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) w)
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w)))))
+    ((recv
+       (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w))))
+      (send
+        (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 50)
+  (parent 21)
+  (unrealized (3 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx)
+    (alpha chi expt) (l-1 rndx) (w expt) (y rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec l-1) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) w y))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) w y))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y l-0) (y alpha) (y chi))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-1) w y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) w y)))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) w y))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) w y)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul l-0 chi))
+              (exp (gen) (mul chi y))))))))
+  (label 51)
+  (parent 21)
+  (unrealized (0 3) (4 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w l-0))))
+  (deflistener
+    (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w l-0))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((2 2) (5 0))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 2 ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w l-0))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w l-0)))))
+    ((recv
+       (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w l-0))))
+      (send
+        (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w l-0)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w))))
+  (label 52)
+  (parent 21)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (w expt)
+    (l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w l-1))))
+  (deflistener
+    (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w l-1))))
+  (deflistener (cat (exp (gen) l-1) w))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w l-1))))
+      (send
+        (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w l-1)))))
+    ((recv
+       (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w l-1))))
+      (send
+        (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w l-1)))))
+    ((recv (cat (exp (gen) l-1) w)) (send (cat (exp (gen) l-1) w)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 53)
+  (parent 21)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y x l rndx)
+    (beta expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) x-0) (mul (rec x-0) l-0)))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 1) (3 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 1)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen y x x-0)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (4 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (5 0)) ((2 1) (3 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 6 1 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) x-0) (mul (rec x-0) l-0)))
+      (send (cat (exp (gen) x-0) (mul (rec x-0) l-0))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 54)
+  (parent 22)
+  (unrealized (3 1) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y x rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (deflistener (cat (exp (gen) x-0) (mul l (rec x-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 1) (5 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 1)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen y x x-0)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (4 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (3 0)) ((2 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 6 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) x-0) (mul l (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l (rec x-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 55)
+  (parent 22)
+  (unrealized (3 1) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 1)) ((5 2) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen y x x-0)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (4 0))
+  (gen-st (pv a l-0) (pv b l) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((2 1) (3 0)) ((6 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-0 (rec x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
+  (label 56)
+  (parent 22)
+  (unrealized (3 1) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (gen) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 1) (3 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 1)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (5 0)) ((2 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (4 0)
+    (ch-msg priv-stor (cat pt (pv a l-0))))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0)))
+  (label 57)
+  (parent 24)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y x l rndx)
+    (alpha chi expt) (y-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y-0) (mul (rec y-0) l-0)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 1) (3 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 1)) ((5 3) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen y x y-0)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0) (y-0 alpha) (y-0 chi)
+    (y-0 l-0))
+  (precur (4 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (5 0)) ((2 1) (3 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 6 1 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) y-0) (mul (rec y-0) l-0)))
+      (send (cat (exp (gen) y-0) (mul (rec y-0) l-0))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y-0))))))))
+  (label 58)
+  (parent 26)
+  (unrealized (3 1) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y x rndx)
+    (alpha chi expt) (l y-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (deflistener (cat (exp (gen) y-0) (mul l (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 1) (5 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 1)) ((5 3) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen y x y-0)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0) (y-0 alpha) (y-0 chi)
+    (y-0 l-0))
+  (precur (4 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (3 0)) ((2 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 6 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) y-0) (mul l (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l (rec y-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y-0))))))))
+  (label 59)
+  (parent 26)
+  (unrealized (3 1) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx)
+    (alpha chi expt) (l-0 y-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 1)) ((5 3) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen y x y-0)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0) (y-0 alpha) (y-0 chi)
+    (y-0 l-1))
+  (precur (4 0))
+  (gen-st (pv a l-0) (pv b l) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((2 1) (3 0)) ((6 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-0 (rec y-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 60)
+  (parent 26)
+  (unrealized (3 1) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) l-0))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (7 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) l-0))
+    (exp (gen) (mul l l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0))))
+  (label 61)
+  (parent 29)
+  (unrealized (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (7 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) l))
+    (exp (gen) (mul l l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l))))
+  (label 62)
+  (parent 29)
+  (unrealized (0 3) (3 2) (7 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul l (rec l-0))) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (deflistener (cat (exp (gen) l) l-0))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (7 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) l-0))
+    (exp (gen) (mul l (rec l-0))) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul l (rec l-0))) l-1))
+      (send (cat (exp (gen) (mul l (rec l-0))) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0))))
+  (label 63)
+  (parent 30)
+  (unrealized (0 3) (3 2) (7 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul l (rec l-0))) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (deflistener (cat (exp (gen) (rec l-0)) l))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 1) (7 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) (rec l-0)) l))
+    (exp (gen) (mul l (rec l-0))) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul l (rec l-0))) l-1))
+      (send (cat (exp (gen) (mul l (rec l-0))) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (rec l-0)) l))
+      (send (cat (exp (gen) (rec l-0)) l))))
+  (label 64)
+  (parent 30)
+  (unrealized (0 3) (3 2) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x y (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x y (rec l-0)))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 3) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l))
+              (exp (gen) (mul x y (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x y (rec l-0)))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x y (rec l-0))))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x y (rec l-0)))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x y (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y)))))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 65)
+  (parent 31)
+  (unrealized (0 3) (4 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x y (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x y (rec l-0)))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 3) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l))
+              (exp (gen) (mul x y (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x y (rec l-0)))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x y (rec l-0))))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x y (rec l-0)))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x y (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y)))))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 66)
+  (parent 31)
+  (unrealized (4 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) y))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) y))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 3) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) y)))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) y))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) y)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y)))))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 67)
+  (parent 32)
+  (unrealized (0 3) (4 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) y))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) y))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 3) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) y)))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) y))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) y)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y)))))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 68)
+  (parent 32)
+  (unrealized (4 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 y l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) y))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) y))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 3) (4 0)) ((6 1) (5 0)) ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((6 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) y)))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) y))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) y)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 69)
+  (parent 33)
+  (unrealized (0 3) (4 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 y l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) y))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) y))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 3) (4 0)) ((6 1) (5 0)) ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((6 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) y)))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) y))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) y)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 70)
+  (parent 33)
+  (unrealized (4 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x x-0 (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x x-0 (rec l-0)))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l))
+              (exp (gen) (mul x x-0 (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x x-0 (rec l-0))))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x x-0 (rec l-0)))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x x-0 (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 71)
+  (parent 34)
+  (unrealized (0 3) (4 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x x-0 (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x x-0 (rec l-0)))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l))
+              (exp (gen) (mul x x-0 (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x x-0 (rec l-0))))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x x-0 (rec l-0)))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x x-0 (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 72)
+  (parent 34)
+  (unrealized (4 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) x-0))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) x-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) x-0)))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) x-0))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) x-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 73)
+  (parent 35)
+  (unrealized (0 3) (4 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) x-0))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) x-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) x-0)))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) x-0))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) x-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 74)
+  (parent 35)
+  (unrealized (4 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) x-0))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (5 0)) ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((6 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) x-0)))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) x-0))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 75)
+  (parent 36)
+  (unrealized (0 3) (4 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) x-0))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (5 0)) ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((6 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) x-0)))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) x-0))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 76)
+  (parent 36)
+  (unrealized (4 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta w expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w x-0 (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w x-0 (rec l-0)))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 1 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w x-0 (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w x-0 (rec l-0))))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w x-0 (rec l-0)))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w x-0 (rec l-0))))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 77)
+  (parent 47)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l rndx) (w expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w x-0))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w x-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w x-0)))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w x-0))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w x-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 78)
+  (parent 47)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 rndx) (w expt) (x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w x-0))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w x-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w x-0)))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w x-0))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w x-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
+  (label 79)
+  (parent 47)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (w expt)
+    (l l-0 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul w (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul w (rec l) x x))))
+  (deflistener
+    (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul w (rec l) x x))))
+  (deflistener (cat (exp (gen) x) w))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (5 0)) ((0 2) (6 0)) ((1 1) (0 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul l-0 x)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+              (exp (gen) (mul w (rec l) x x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul w (rec l) x x))))
+      (send
+        (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul w (rec l) x x)))))
+    ((recv
+       (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul w (rec l) x x))))
+      (send
+        (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul w (rec l) x x)))))
+    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w)))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 80)
+  (parent 48)
+  (unrealized (4 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (w expt)
+    (l l-0 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul w (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul w (rec l) x x))))
+  (deflistener
+    (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul w (rec l) x x))))
+  (deflistener (cat (exp (gen) x) w))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (5 0)) ((0 2) (6 0)) ((1 1) (0 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul l-0 x)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+              (exp (gen) (mul w (rec l) x x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul w (rec l) x x))))
+      (send
+        (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul w (rec l) x x)))))
+    ((recv
+       (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul w (rec l) x x))))
+      (send
+        (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul w (rec l) x x)))))
+    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w)))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 81)
+  (parent 48)
+  (unrealized (0 3) (4 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l l-0 rndx)
+    (w expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) w) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w))))
+  (deflistener
+    (cat (exp (gen) w) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w))))
+  (deflistener (cat (gen) w))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w))
+          (enc na nb a b
+            (hash (exp (gen) w) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) w) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w))))
+      (send
+        (hash (exp (gen) w) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w)))))
+    ((recv
+       (cat (exp (gen) w) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w))))
+      (send
+        (cat (exp (gen) w) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w)))))
+    ((recv (cat (gen) w)) (send (cat (gen) w)))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 82)
+  (parent 49)
+  (unrealized (0 3) (4 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l l-0 rndx)
+    (w expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) w) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w))))
+  (deflistener
+    (cat (exp (gen) w) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w))))
+  (deflistener (cat (gen) w))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w))
+          (enc na nb a b
+            (hash (exp (gen) w) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) w) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w))))
+      (send
+        (hash (exp (gen) w) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w)))))
+    ((recv
+       (cat (exp (gen) w) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w))))
+      (send
+        (cat (exp (gen) w) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w)))))
+    ((recv (cat (gen) w)) (send (cat (gen) w)))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 83)
+  (parent 49)
+  (unrealized (4 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta w))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w))))
+  (deflistener
+    (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (6 0)) ((1 2) (0 1)) ((2 1) (0 3)) ((3 1) (2 0))
+    ((4 1) (3 0)) ((5 1) (0 0)) ((5 2) (4 0)) ((6 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((5 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (3 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) w)
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w)))))
+    ((recv
+       (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w))))
+      (send
+        (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 84)
+  (parent 50)
+  (unrealized (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta w))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w))))
+  (deflistener
+    (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (6 0)) ((1 2) (0 1)) ((2 1) (0 3)) ((3 1) (2 0))
+    ((4 1) (3 0)) ((5 1) (0 0)) ((5 2) (4 0)) ((6 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((5 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (3 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) w)
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w)))))
+    ((recv
+       (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w))))
+      (send
+        (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 85)
+  (parent 50)
+  (unrealized (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi w expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w y (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w y (rec l-0)))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 1 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w y (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w y (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w y (rec l-0))))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w y (rec l-0)))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w y (rec l-0))))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y))))))))
+  (label 86)
+  (parent 51)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l rndx) (w expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w y))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w y))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w y)))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w y))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w y)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y))))))))
+  (label 87)
+  (parent 51)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 rndx) (w expt) (y l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w y))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w y))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w y)))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w y))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w y)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 88)
+  (parent 51)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w l-0))))
+  (deflistener
+    (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w l-0))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((2 2) (5 0))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w l-0))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w l-0)))))
+    ((recv
+       (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w l-0))))
+      (send
+        (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w l-0)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 89)
+  (parent 52)
+  (unrealized (0 3) (4 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w l-0))))
+  (deflistener
+    (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w l-0))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((2 2) (5 0))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w l-0))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w l-0)))))
+    ((recv
+       (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w l-0))))
+      (send
+        (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w l-0)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 90)
+  (parent 52)
+  (unrealized (4 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (w expt)
+    (l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w l-1))))
+  (deflistener
+    (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w l-1))))
+  (deflistener (cat (exp (gen) l-1) w))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)) ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w l-1))))
+      (send
+        (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w l-1)))))
+    ((recv
+       (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w l-1))))
+      (send
+        (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w l-1)))))
+    ((recv (cat (exp (gen) l-1) w)) (send (cat (exp (gen) l-1) w)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 91)
+  (parent 53)
+  (unrealized (0 3) (4 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (w expt)
+    (l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w l-1))))
+  (deflistener
+    (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w l-1))))
+  (deflistener (cat (exp (gen) l-1) w))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)) ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w l-1))))
+      (send
+        (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w l-1)))))
+    ((recv
+       (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w l-1))))
+      (send
+        (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w l-1)))))
+    ((recv (cat (exp (gen) l-1) w)) (send (cat (exp (gen) l-1) w)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 92)
+  (parent 53)
+  (unrealized (4 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (4 0)) ((2 1) (3 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 2) (3 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (4 0)) ((2 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation generalization deleted (4 0))
+  (strand-map 0 1 2 3 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0)))
+  (label 93)
+  (parent 57)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps
+    ((0)
+      ((na na) (nb nb) (a a) (b b) (l l-0) (l-peer l) (x x) (eta y)
+        (priv-stor priv-stor))))
+  (origs (pt-3 (4 1)) (l (2 1)) (pt-2 (2 1)) (nb (3 3)) (l-0 (1 1))
+    (pt (1 1)) (na (0 2)))
+  (ugens (y (3 3)) (x (0 2))))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul l l-1)) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) l) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (7 0)
+    (ch-msg priv-stor (cat pt (pv a l-1))))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul l l-1)) l-0))
+      (send (cat (exp (gen) (mul l l-1)) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l) l-1)) (send (cat (exp (gen) l) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-1)))
+  (label 94)
+  (parent 62)
+  (unrealized (0 3) (3 2) (7 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l (rec l-1))) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) l) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l-0) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (7 0)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l (rec l-1))) l-0))
+      (send (cat (exp (gen) (mul l (rec l-1))) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l) l-1)) (send (cat (exp (gen) l) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1)))
+  (label 95)
+  (parent 63)
+  (unrealized (0 3) (3 2) (7 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta w expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w x-0 (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w x-0 (rec l-0)))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w x-0 (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w x-0 (rec l-0))))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w x-0 (rec l-0)))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w x-0 (rec l-0))))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 96)
+  (parent 77)
+  (unrealized (0 3) (4 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta w expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w x-0 (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w x-0 (rec l-0)))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w x-0 (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w x-0 (rec l-0))))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w x-0 (rec l-0)))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w x-0 (rec l-0))))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 97)
+  (parent 77)
+  (unrealized (4 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l rndx) (w expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w x-0))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w x-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w x-0)))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w x-0))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w x-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 98)
+  (parent 78)
+  (unrealized (0 3) (4 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l rndx) (w expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w x-0))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w x-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w x-0)))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w x-0))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w x-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 99)
+  (parent 78)
+  (unrealized (4 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 rndx) (w expt) (x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w x-0))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w x-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (8 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)) ((7 1) (6 0))
+    ((8 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w x-0)))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w x-0))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w x-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 100)
+  (parent 79)
+  (unrealized (0 3) (4 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 rndx) (w expt) (x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w x-0))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w x-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (8 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)) ((7 1) (6 0))
+    ((8 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w x-0)))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w x-0))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w x-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 101)
+  (parent 79)
+  (unrealized (4 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi w expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w y (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w y (rec l-0)))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w y (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w y (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w y (rec l-0))))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w y (rec l-0)))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w y (rec l-0))))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y)))))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 102)
+  (parent 86)
+  (unrealized (0 3) (4 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi w expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w y (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w y (rec l-0)))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w y (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w y (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w y (rec l-0))))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w y (rec l-0)))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w y (rec l-0))))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y)))))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 103)
+  (parent 86)
+  (unrealized (4 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l rndx) (w expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w y))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w y))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w y)))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w y))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w y)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y)))))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 104)
+  (parent 87)
+  (unrealized (0 3) (4 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l rndx) (w expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w y))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w y))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w y)))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w y))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w y)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y)))))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 105)
+  (parent 87)
+  (unrealized (4 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 rndx) (w expt) (y l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w y))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w y))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (8 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0)) ((7 1) (6 0))
+    ((8 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w y)))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w y))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w y)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 106)
+  (parent 88)
+  (unrealized (0 3) (4 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 rndx) (w expt) (y l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w y))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w y))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (8 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0)) ((7 1) (6 0))
+    ((8 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w y)))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w y))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w y)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 107)
+  (parent 88)
+  (unrealized (4 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((2 2) (7 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 9 2 ltx-gen 3) (exp (gen) l-1) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0)))
+  (label 108)
+  (parent 94)
+  (unrealized (0 3) (3 2))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx)
+    (w expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul l l-1)) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) l) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (deflistener (cat (exp (gen) (mul l (rec w))) w))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (precur (9 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l (rec w))) w)) (exp (gen) l)
+    (7 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul l l-1)) l-0))
+      (send (cat (exp (gen) (mul l l-1)) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l) l-1)) (send (cat (exp (gen) l) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul l (rec w))) w))
+      (send (cat (exp (gen) (mul l (rec w))) w))))
+  (label 109)
+  (parent 94)
+  (unrealized (0 3) (3 2) (9 0))
+  (comment "8 in cohort - 8 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((2 2) (7 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 9 2 ltx-gen 3) (exp (gen) l-1) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0)))
+  (label 110)
+  (parent 95)
+  (unrealized (0 3) (3 2))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx)
+    (w expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l (rec l-1))) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) l) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l (rec w))) w))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (9 0))
+  (gen-st (pv a l-0) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l (rec w))) w)) (exp (gen) l)
+    (7 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l (rec l-1))) l-0))
+      (send (cat (exp (gen) (mul l (rec l-1))) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l) l-1)) (send (cat (exp (gen) l) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul l (rec w))) w))
+      (send (cat (exp (gen) (mul l (rec w))) w))))
+  (label 111)
+  (parent 95)
+  (unrealized (0 3) (3 2) (9 0))
+  (comment "8 in cohort - 8 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul x (rec l))) l-1))
+  (precedes ((0 2) (9 0)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((2 2) (7 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (3 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x (rec l))) l-1))
+    (exp (gen) (mul x (rec l) l-1)) (3 2))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul x (rec l))) l-1))
+      (send (cat (exp (gen) (mul x (rec l))) l-1))))
+  (label 112)
+  (parent 108)
+  (unrealized (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul x l-1)) l))
+  (precedes ((0 2) (9 0)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((2 2) (7 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((4 1) (9 0)) ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0))
+    ((8 2) (7 0)) ((9 1) (3 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) (mul x l-1)) l))
+    (exp (gen) (mul x (rec l) l-1)) (3 2))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul x l-1)) l))
+      (send (cat (exp (gen) (mul x l-1)) l))))
+  (label 113)
+  (parent 108)
+  (seen 134)
+  (seen-ops
+    (134
+      (operation nonce-test (added-strand ltx-disclose 3) l-1 (9 0)
+        (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+      (strand-map 0 1 2 3 4 5 6 7 8 9)))
+  (unrealized (0 3) (9 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l) l-1)) x))
+  (precedes ((0 2) (9 0)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((2 2) (7 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (3 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul (rec l) l-1)) x))
+    (exp (gen) (mul x (rec l) l-1)) (3 2))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul (rec l) l-1)) x))
+      (send (cat (exp (gen) (mul (rec l) l-1)) x))))
+  (label 114)
+  (parent 108)
+  (unrealized (0 3) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 l-1 rndx) (alpha chi expt) (l-2 y-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-2) (eta (mul y (rec l) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-2))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-2)) (chi (mul x (rec l) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-2)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-2) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) y-0) (mul l-2 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-2) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0))
+    ((10 3) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-2)
+  (uniq-gen y x y-0)
+  (absent (y (mul x (rec l) l-2)) (y (mul (rec l) l-0 l-2)) (y l)
+    (x l-0) (x l-2) (y-0 l-1) (y-0 alpha) (y-0 chi))
+  (precur (9 0))
+  (gen-st (pv a l-0) (pv b l) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l-2))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y-0) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-2))
+              (exp (gen) (mul x l-2))
+              (exp (gen) (mul y x (rec l) l-2)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-2)))
+      (send
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-2)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-2))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-2))
+              (exp (gen) (mul x l-2))
+              (exp (gen) (mul y x (rec l) l-2)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-2)) l))
+      (send (cat (exp (gen) (mul l-0 l-2)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-2) l-0)) (send (cat (exp (gen) l-2) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) y-0) (mul l-2 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-2 (rec y-0)))))
+    ((load priv-stor-2 (cat pt-7 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul l-1 chi))
+              (exp (gen) (mul chi y-0))))))))
+  (label 115)
+  (parent 109)
+  (unrealized (0 3) (3 2) (7 0) (9 0) (10 0))
+  (comment "4 in cohort - 4 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 l-1 rndx) (beta expt) (l-2 x-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-2) (eta (mul y (rec l) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-2))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-2)) (chi (mul x (rec l) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-2)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-2) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) x-0) (mul l-2 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-2)
+    (l l-1) (x x-0) (beta beta))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0))
+    ((10 2) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-2)
+  (uniq-gen y x x-0)
+  (absent (y (mul x (rec l) l-2)) (y (mul (rec l) l-0 l-2)) (y l)
+    (x l-0) (x l-2) (x-0 l-1) (x-0 beta))
+  (precur (9 0))
+  (gen-st (pv a l-0) (pv b l) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l-2))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-2))
+              (exp (gen) (mul x l-2))
+              (exp (gen) (mul y x (rec l) l-2)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-2)))
+      (send
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-2)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-2))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-2))
+              (exp (gen) (mul x l-2))
+              (exp (gen) (mul y x (rec l) l-2)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-2)) l))
+      (send (cat (exp (gen) (mul l-0 l-2)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-2) l-0)) (send (cat (exp (gen) l-2) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x-0) (mul l-2 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-2 (rec x-0)))))
+    ((load priv-stor-2 (cat pt-7 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 116)
+  (parent 109)
+  (unrealized (0 3) (3 2) (7 0) (9 0) (10 0))
+  (comment "4 in cohort - 4 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (gen) l-1))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 1) (9 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (precur (9 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (contracted (l-2 l-1) (w l-1)) (gen) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (gen) l-1)) (send (cat (gen) l-1))))
+  (label 117)
+  (parent 109)
+  (unrealized (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y l l-0 l-1 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul (rec l) l-1 x)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) x) (mul l-1 (rec x))))
+  (precedes ((0 2) (9 0)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul (rec l) l-0 l-1)) (y (mul (rec l) l-1 x)) (y l)
+    (x l-0) (x l-1))
+  (precur (9 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 10 0 init 3) (exp (gen) x-0) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul l-1 x))
+              (exp (gen) (mul y (rec l) l-1 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul (rec l) l-1 x))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul l-1 x))
+              (exp (gen) (mul y (rec l) l-1 x)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x) (mul l-1 (rec x))))
+      (send (cat (exp (gen) x) (mul l-1 (rec x))))))
+  (label 118)
+  (parent 109)
+  (unrealized (0 3) (3 2) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) l-1) (one)))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((2 2) (9 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (precur (9 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 10 2 ltx-gen 3) (exp (gen) l-2)
+    (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) (one)))
+      (send (cat (exp (gen) l-1) (one)))))
+  (label 119)
+  (parent 109)
+  (unrealized (0 3) (3 2))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-1) (l l-1) (x x) (beta l-0)
+    (eta (mul y (rec l) l-0)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (y y) (alpha (mul (rec l) l-0 l-1))
+    (chi (mul x (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (2 2)) ((1 2) (0 1)) ((2 3) (0 3)) ((3 1) (2 0))
+    ((3 1) (5 0)) ((4 1) (2 1)) ((5 2) (4 0)) ((6 1) (4 0))
+    ((7 2) (6 0)) ((8 1) (6 0)) ((9 1) (0 0)) ((9 1) (7 0))
+    ((9 2) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-0)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (precur (8 0))
+  (gen-st (pv b l) (pv self l-1))
+  (facts (neq b self) (neq self b) (undisclosed l-0))
+  (leads-to ((3 1) (2 0)) ((3 1) (5 0)) ((9 1) (0 0)) ((9 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 1 10 ltx-gen 3) (exp (gen) l-2)
+    (9 0))
+  (strand-map 0 9 1 2 3 4 5 6 7 8)
+  (traces
+    ((load priv-stor-1 (cat pt-6 (pv self l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-0))
+          (enc na nb self b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-1 (pv b l)))
+      (recv
+        (sig
+          (body self (exp (gen) (mul (rec l) l-0 l-1))
+            (pubk "sig" self)) (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor-0 (cat pt-2 ignore-0))
+      (stor priv-stor-0 (cat pt-1 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-0 (cat pt-1 (pv b l)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-6 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-4 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul l-0 (rec l-1)))))
+    ((load priv-stor-1 (cat pt-5 ignore-1))
+      (stor priv-stor-1 (cat pt-6 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 120)
+  (parent 109)
+  (unrealized (0 3) (2 2) (6 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b self) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b self)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (7 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 1)) ((5 2) (4 0)) ((6 1) (4 0))
+    ((7 2) (6 0)) ((8 1) (6 0)) ((9 1) (3 0)) ((9 1) (5 0))
+    ((9 2) (8 0)))
+  (non-orig (privk "sig" self))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (8 0))
+  (gen-st (pv a l) (pv self l-1))
+  (facts (neq self a) (neq a self) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (7 0)) ((9 1) (3 0)) ((9 1) (5 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 4 10 ltx-gen 3) (exp (gen) l-2)
+    (9 0))
+  (strand-map 0 1 2 3 9 4 5 6 7 8)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (send (cat na a self (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a self
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor-1 (cat pt-6 (pv self l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a self (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a self
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-6 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-3 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-4 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul l-0 (rec l-1)))))
+    ((load priv-stor-1 (cat pt-5 ignore-1))
+      (stor priv-stor-1 (cat pt-6 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 121)
+  (parent 109)
+  (unrealized (0 3) (3 2) (6 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb data)
+    (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 l-1 l-2 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) l-2) (mul l-1 (rec l-2))))
+  (defstrand ltx-gen 3 (ignore ignore-2) (self self)
+    (priv-stor priv-stor-2) (l l-2))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0))
+    ((10 2) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1 l-2)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (precur (9 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-2) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-2) (mul l-1 (rec l-2))))
+      (send (cat (exp (gen) l-2) (mul l-1 (rec l-2)))))
+    ((load priv-stor-2 (cat pt-7 ignore-2))
+      (stor priv-stor-2 (cat pt-8 (pv self l-2)))
+      (send
+        (sig (body self (exp (gen) l-2) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 122)
+  (parent 109)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul x (rec l-0))) l-1))
+  (precedes ((0 2) (9 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((2 2) (7 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (3 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x (rec l-0))) l-1))
+    (exp (gen) (mul x (rec l-0) l-1)) (3 2))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul x (rec l-0))) l-1))
+      (send (cat (exp (gen) (mul x (rec l-0))) l-1))))
+  (label 123)
+  (parent 110)
+  (unrealized (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul x l-1)) l-0))
+  (precedes ((0 2) (9 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((2 2) (7 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((4 1) (9 0)) ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0))
+    ((8 2) (7 0)) ((9 1) (3 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x l-1)) l-0))
+    (exp (gen) (mul x (rec l-0) l-1)) (3 2))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul x l-1)) l-0))
+      (send (cat (exp (gen) (mul x l-1)) l-0))))
+  (label 124)
+  (parent 110)
+  (seen 146)
+  (seen-ops
+    (146
+      (operation nonce-test (added-strand ltx-disclose 3) l-1 (9 0)
+        (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+      (strand-map 0 1 2 3 4 5 6 7 8 9)))
+  (unrealized (0 3) (9 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) x))
+  (precedes ((0 2) (9 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((2 2) (7 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (3 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul (rec l-0) l-1)) x))
+    (exp (gen) (mul x (rec l-0) l-1)) (3 2))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) x))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) x))))
+  (label 125)
+  (parent 110)
+  (unrealized (0 3) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 l-1 rndx) (alpha chi expt) (l-2 y-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-2) (eta (mul y (rec l-0) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-2))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-2))
+    (chi (mul x (rec l-0) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-2)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-2) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) y-0) (mul l-2 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-2) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0))
+    ((10 3) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-2)
+  (uniq-gen y x y-0)
+  (absent (y (mul x (rec l-0) l-2)) (y (mul l (rec l-0) l-2)) (y l-0)
+    (x l) (x l-2) (y-0 l-1) (y-0 alpha) (y-0 chi))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l-2))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y-0) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-2))
+              (exp (gen) (mul x l-2))
+              (exp (gen) (mul y x (rec l-0) l-2)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-2)))
+      (send
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-2)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-2))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-2))
+              (exp (gen) (mul x l-2))
+              (exp (gen) (mul y x (rec l-0) l-2)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-2)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-2)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-2) l-0)) (send (cat (exp (gen) l-2) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) y-0) (mul l-2 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-2 (rec y-0)))))
+    ((load priv-stor-2 (cat pt-7 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul l-1 chi))
+              (exp (gen) (mul chi y-0))))))))
+  (label 126)
+  (parent 111)
+  (unrealized (0 3) (3 2) (7 0) (9 0) (10 0))
+  (comment "4 in cohort - 4 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 l-1 rndx) (beta expt) (l-2 x-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-2) (eta (mul y (rec l-0) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-2))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-2))
+    (chi (mul x (rec l-0) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-2)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-2) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) x-0) (mul l-2 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-2)
+    (l l-1) (x x-0) (beta beta))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0))
+    ((10 2) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-2)
+  (uniq-gen y x x-0)
+  (absent (y (mul x (rec l-0) l-2)) (y (mul l (rec l-0) l-2)) (y l-0)
+    (x l) (x l-2) (x-0 l-1) (x-0 beta))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l-2))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-2))
+              (exp (gen) (mul x l-2))
+              (exp (gen) (mul y x (rec l-0) l-2)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-2)))
+      (send
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-2)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-2))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-2))
+              (exp (gen) (mul x l-2))
+              (exp (gen) (mul y x (rec l-0) l-2)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-2)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-2)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-2) l-0)) (send (cat (exp (gen) l-2) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x-0) (mul l-2 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-2 (rec x-0)))))
+    ((load priv-stor-2 (cat pt-7 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 127)
+  (parent 111)
+  (unrealized (0 3) (3 2) (7 0) (9 0) (10 0))
+  (comment "4 in cohort - 4 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (gen) l-1))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 1) (9 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (contracted (l-2 l-1) (w l-1)) (gen) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (gen) l-1)) (send (cat (gen) l-1))))
+  (label 128)
+  (parent 111)
+  (unrealized (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y l l-0 l-1 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul (rec l) l-1 x)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul (rec l) l-1)) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) l-1) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) x) (mul l-1 (rec x))))
+  (precedes ((0 2) (9 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul (rec l) l-0 l-1)) (y (mul (rec l) l-1 x)) (y l)
+    (x l-0) (x l-1))
+  (precur (9 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 10 0 init 3) (exp (gen) x-0) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul l-1 x))
+              (exp (gen) (mul y (rec l) l-1 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul (rec l) l-1 x))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul l-1 x))
+              (exp (gen) (mul y (rec l) l-1 x)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul (rec l) l-1)) l-0))
+      (send (cat (exp (gen) (mul (rec l) l-1)) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) l)) (send (cat (exp (gen) l-1) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) x) (mul l-1 (rec x))))
+      (send (cat (exp (gen) x) (mul l-1 (rec x))))))
+  (label 129)
+  (parent 111)
+  (unrealized (0 3) (3 2) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) l-1) (one)))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((2 2) (9 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 10 2 ltx-gen 3) (exp (gen) l-2)
+    (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) (one)))
+      (send (cat (exp (gen) l-1) (one)))))
+  (label 130)
+  (parent 111)
+  (unrealized (0 3) (3 2))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-1) (l l-1) (x x) (beta l-0)
+    (eta (mul y (rec l) l-0)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (y y) (alpha (mul (rec l) l-0 l-1))
+    (chi (mul x (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) (mul (rec l) l-0)) l-1))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (2 2)) ((1 2) (0 1)) ((2 3) (0 3)) ((3 1) (2 0))
+    ((3 1) (7 0)) ((4 1) (2 1)) ((5 2) (4 0)) ((6 1) (4 0))
+    ((7 2) (6 0)) ((8 1) (6 0)) ((9 1) (0 0)) ((9 1) (5 0))
+    ((9 2) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-0)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (precur (8 0))
+  (gen-st (pv b l) (pv self l-1))
+  (facts (neq b self) (neq self b) (undisclosed l-0))
+  (leads-to ((3 1) (2 0)) ((3 1) (7 0)) ((9 1) (0 0)) ((9 1) (5 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 1 10 ltx-gen 3) (exp (gen) l-2)
+    (9 0))
+  (strand-map 0 9 1 2 3 4 5 6 7 8)
+  (traces
+    ((load priv-stor-1 (cat pt-6 (pv self l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-0))
+          (enc na nb self b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-1 (pv b l)))
+      (recv
+        (sig
+          (body self (exp (gen) (mul (rec l) l-0 l-1))
+            (pubk "sig" self)) (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor-0 (cat pt-2 ignore-0))
+      (stor priv-stor-0 (cat pt-1 (pv b l))))
+    ((recv (cat (exp (gen) (mul (rec l) l-0)) l-1))
+      (send (cat (exp (gen) (mul (rec l) l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-6 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-3 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor-0 (cat pt-1 (pv b l)))
+      (stor priv-stor-0 (cat pt-4 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul l-0 (rec l-1)))))
+    ((load priv-stor-1 (cat pt-5 ignore-1))
+      (stor priv-stor-1 (cat pt-6 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 131)
+  (parent 111)
+  (unrealized (0 3) (2 2) (6 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b self) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b self)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 1)) ((5 2) (4 0)) ((6 1) (4 0))
+    ((7 2) (6 0)) ((8 1) (6 0)) ((9 1) (3 0)) ((9 1) (7 0))
+    ((9 2) (8 0)))
+  (non-orig (privk "sig" self))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (8 0))
+  (gen-st (pv a l) (pv self l-1))
+  (facts (neq self a) (neq a self) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (5 0)) ((9 1) (3 0)) ((9 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 4 10 ltx-gen 3) (exp (gen) l-2)
+    (9 0))
+  (strand-map 0 1 2 3 9 4 5 6 7 8)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (send (cat na a self (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a self
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor-1 (cat pt-6 (pv self l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a self (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a self
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-3 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-6 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-4 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul l-0 (rec l-1)))))
+    ((load priv-stor-1 (cat pt-5 ignore-1))
+      (stor priv-stor-1 (cat pt-6 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 132)
+  (parent 111)
+  (unrealized (0 3) (3 2) (6 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb data)
+    (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 l-1 l-2 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) l-2) (mul l-1 (rec l-2))))
+  (defstrand ltx-gen 3 (ignore ignore-2) (self self)
+    (priv-stor priv-stor-2) (l l-2))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0))
+    ((10 2) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1 l-2)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-2) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-2) (mul l-1 (rec l-2))))
+      (send (cat (exp (gen) l-2) (mul l-1 (rec l-2)))))
+    ((load priv-stor-2 (cat pt-7 ignore-2))
+      (stor priv-stor-2 (cat pt-8 (pv self l-2)))
+      (send
+        (sig (body self (exp (gen) l-2) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 133)
+  (parent 111)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (precedes ((0 2) (9 0)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((2 2) (7 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((6 2) (9 0)) ((7 1) (5 0))
+    ((8 2) (7 0)) ((9 1) (3 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 10 6 ltx-disclose 3) l-1 (9 0)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1))))
+  (label 134)
+  (parent 113)
+  (unrealized (0 3) (9 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 rndx)
+    (alpha chi expt) (y-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) y-0) (mul (rec y-0) l-1)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 1) (10 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)) ((10 3) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen y x y-0)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1) (y-0 alpha) (y-0 chi) (y-0 l-1))
+  (precur (9 0))
+  (gen-st (pv a l-0) (pv b l) (pv b l-1))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((2 1) (10 0)) ((4 1) (3 0))
+    ((4 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 11 2 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv b-0 l-2))) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) y-0) (mul (rec y-0) l-1)))
+      (send (cat (exp (gen) y-0) (mul (rec y-0) l-1))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y-0))))))))
+  (label 135)
+  (parent 115)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx)
+    (alpha chi expt) (l-0 y-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-0) (eta (mul y (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (deflistener (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (8 0)) ((1 1) (10 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)) ((10 3) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen y x y-0)
+  (absent (y (mul x (rec l) l-0)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1) (y-0 alpha) (y-0 chi) (y-0 l-1))
+  (precur (9 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((1 1) (10 0)) ((4 1) (3 0))
+    ((4 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 11 1 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv b-0 l-2))) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-0 (rec y-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y-0))))))))
+  (label 136)
+  (parent 115)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx)
+    (alpha chi expt) (l-0 y-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-1) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0)) ((4 1) (10 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)) ((10 3) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen y x y-0)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0) (y-0 alpha) (y-0 chi) (y-0 l-1))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((4 1) (10 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 11 4 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv b-0 l-2))) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-0 (rec y-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y-0))))))))
+  (label 137)
+  (parent 115)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 rndx) (alpha chi expt) (l-1 y-0 l-2 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-2) (l l-2) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-2) (self b-0)
+    (priv-stor priv-stor-2) (l l-2))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0))
+    ((10 3) (9 0)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1 l-2)
+  (uniq-gen y x y-0)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1) (y-0 alpha) (y-0 chi) (y-0 l-2))
+  (precur (9 0))
+  (gen-st (pv a l-0) (pv b l) (pv b-0 l-2))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((11 1) (10 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv b-0 l-2))) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-1 (rec y-0)))))
+    ((load priv-stor-2 (cat pt-7 (pv b-0 l-2)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-2))
+              (exp (gen) (mul chi y-0)))))))
+    ((load priv-stor-2 (cat pt-8 ignore-2))
+      (stor priv-stor-2 (cat pt-7 (pv b-0 l-2)))))
+  (label 138)
+  (parent 115)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 rndx)
+    (beta expt) (x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) x-0) (mul (rec x-0) l-1)))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-1) (x x-0) (beta beta))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 1) (10 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)) ((10 2) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen y x x-0)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1) (x-0 beta) (x-0 l-1))
+  (precur (9 0))
+  (gen-st (pv a l-0) (pv b l) (pv b l-1))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((2 1) (10 0)) ((4 1) (3 0))
+    ((4 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 11 2 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv a-0 l-2))) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x-0) (mul (rec x-0) l-1)))
+      (send (cat (exp (gen) x-0) (mul (rec x-0) l-1))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 139)
+  (parent 116)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-0) (eta (mul y (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (deflistener (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-1) (x x-0) (beta beta))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (8 0)) ((1 1) (10 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)) ((10 2) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen y x x-0)
+  (absent (y (mul x (rec l) l-0)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1) (x-0 beta) (x-0 l-1))
+  (precur (9 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((1 1) (10 0)) ((4 1) (3 0))
+    ((4 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 11 1 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv a-0 l-2))) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-0 (rec x-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 140)
+  (parent 116)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0)) ((4 1) (10 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)) ((10 2) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen y x x-0)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((4 1) (10 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 11 4 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv a-0 l-2))) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-0 (rec x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 141)
+  (parent 116)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 rndx) (beta expt) (l-1 x-0 l-2 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-2)
+    (l l-2) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-2) (self a-0)
+    (priv-stor priv-stor-2) (l l-2))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0))
+    ((10 2) (9 0)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1 l-2)
+  (uniq-gen y x x-0)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1) (x-0 beta) (x-0 l-2))
+  (precur (9 0))
+  (gen-st (pv a l-0) (pv b l) (pv a-0 l-2))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((11 1) (10 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv a-0 l-2))) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-1 (rec x-0)))))
+    ((load priv-stor-2 (cat pt-7 (pv a-0 l-2)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-2 (cat pt-8 ignore-2))
+      (stor priv-stor-2 (cat pt-7 (pv a-0 l-2)))))
+  (label 142)
+  (parent 116)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) l-1) (one)))
+  (deflistener (cat (exp (gen) (mul x (rec l))) l-1))
+  (precedes ((0 2) (10 0)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((2 2) (9 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)) ((10 1) (3 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (precur (9 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x (rec l))) l-1))
+    (exp (gen) (mul x (rec l) l-1)) (3 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) (one)))
+      (send (cat (exp (gen) l-1) (one))))
+    ((recv (cat (exp (gen) (mul x (rec l))) l-1))
+      (send (cat (exp (gen) (mul x (rec l))) l-1))))
+  (label 143)
+  (parent 119)
+  (unrealized (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) l-1) (one)))
+  (deflistener (cat (exp (gen) (mul x l-1)) l))
+  (precedes ((0 2) (10 0)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((2 2) (9 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((4 1) (10 0)) ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0))
+    ((8 2) (7 0)) ((9 1) (7 0)) ((10 1) (3 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (precur (9 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) (mul x l-1)) l))
+    (exp (gen) (mul x (rec l) l-1)) (3 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) (one)))
+      (send (cat (exp (gen) l-1) (one))))
+    ((recv (cat (exp (gen) (mul x l-1)) l))
+      (send (cat (exp (gen) (mul x l-1)) l))))
+  (label 144)
+  (parent 119)
+  (seen 160)
+  (seen-ops
+    (160
+      (operation nonce-test (added-strand ltx-disclose 3) l-1 (10 0)
+        (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+      (strand-map 0 1 2 3 4 5 6 7 8 9 10)))
+  (unrealized (0 3) (10 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) l-1) (one)))
+  (deflistener (cat (exp (gen) (mul (rec l) l-1)) x))
+  (precedes ((0 2) (10 0)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((2 2) (9 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)) ((10 1) (3 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (precur (9 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul (rec l) l-1)) x))
+    (exp (gen) (mul x (rec l) l-1)) (3 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) (one)))
+      (send (cat (exp (gen) l-1) (one))))
+    ((recv (cat (exp (gen) (mul (rec l) l-1)) x))
+      (send (cat (exp (gen) (mul (rec l) l-1)) x))))
+  (label 145)
+  (parent 119)
+  (unrealized (0 3) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (precedes ((0 2) (9 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((2 2) (7 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((8 2) (9 0)) ((9 1) (3 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 10 8 ltx-disclose 3) l-1 (9 0)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1))))
+  (label 146)
+  (parent 124)
+  (unrealized (0 3) (9 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 rndx)
+    (alpha chi expt) (y-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) y-0) (mul (rec y-0) l-1)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 1) (10 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)) ((10 3) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen y x y-0)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1) (y-0 alpha) (y-0 chi) (y-0 l-1))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-0) (pv b l-1))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((2 1) (10 0)) ((4 1) (3 0))
+    ((4 1) (8 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 11 2 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv b-0 l-2))) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) y-0) (mul (rec y-0) l-1)))
+      (send (cat (exp (gen) y-0) (mul (rec y-0) l-1))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y-0))))))))
+  (label 147)
+  (parent 126)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx)
+    (alpha chi expt) (l-0 y-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-0) (eta (mul y (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul (rec l) l-0)) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((1 1) (10 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)) ((10 3) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen y x y-0)
+  (absent (y (mul x (rec l) l-0)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1) (y-0 alpha) (y-0 chi) (y-0 l-1))
+  (precur (9 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((1 1) (10 0)) ((4 1) (3 0))
+    ((4 1) (8 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 11 1 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv b-0 l-2))) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul (rec l) l-0)) l-1))
+      (send (cat (exp (gen) (mul (rec l) l-0)) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-0 (rec y-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y-0))))))))
+  (label 148)
+  (parent 126)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx)
+    (alpha chi expt) (l-0 y-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-1) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0)) ((4 1) (10 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)) ((10 3) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen y x y-0)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0) (y-0 alpha) (y-0 chi) (y-0 l-1))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((4 1) (10 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 11 4 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv b-0 l-2))) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-0 (rec y-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y-0))))))))
+  (label 149)
+  (parent 126)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 rndx) (alpha chi expt) (l-1 y-0 l-2 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-2) (l l-2) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-2) (self b-0)
+    (priv-stor priv-stor-2) (l l-2))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0))
+    ((10 3) (9 0)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1 l-2)
+  (uniq-gen y x y-0)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1) (y-0 alpha) (y-0 chi) (y-0 l-2))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-0) (pv b-0 l-2))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((11 1) (10 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv b-0 l-2))) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-1 (rec y-0)))))
+    ((load priv-stor-2 (cat pt-7 (pv b-0 l-2)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-2))
+              (exp (gen) (mul chi y-0)))))))
+    ((load priv-stor-2 (cat pt-8 ignore-2))
+      (stor priv-stor-2 (cat pt-7 (pv b-0 l-2)))))
+  (label 150)
+  (parent 126)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 rndx)
+    (beta expt) (x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) x-0) (mul (rec x-0) l-1)))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-1) (x x-0) (beta beta))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 1) (10 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)) ((10 2) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen y x x-0)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1) (x-0 beta) (x-0 l-1))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-0) (pv b l-1))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((2 1) (10 0)) ((4 1) (3 0))
+    ((4 1) (8 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 11 2 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv a-0 l-2))) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x-0) (mul (rec x-0) l-1)))
+      (send (cat (exp (gen) x-0) (mul (rec x-0) l-1))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 151)
+  (parent 127)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-0) (eta (mul y (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul (rec l) l-0)) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-1) (x x-0) (beta beta))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((1 1) (10 0))
+    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)) ((10 2) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen y x x-0)
+  (absent (y (mul x (rec l) l-0)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1) (x-0 beta) (x-0 l-1))
+  (precur (9 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((1 1) (10 0)) ((4 1) (3 0))
+    ((4 1) (8 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 11 1 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv a-0 l-2))) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul (rec l) l-0)) l-1))
+      (send (cat (exp (gen) (mul (rec l) l-0)) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-0 (rec x-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 152)
+  (parent 127)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0)) ((4 1) (10 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)) ((10 2) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen y x x-0)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((4 1) (10 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 11 4 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv a-0 l-2))) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-0 (rec x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 153)
+  (parent 127)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 rndx) (beta expt) (l-1 x-0 l-2 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-2)
+    (l l-2) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-2) (self a-0)
+    (priv-stor priv-stor-2) (l l-2))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0))
+    ((10 2) (9 0)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1 l-2)
+  (uniq-gen y x x-0)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1) (x-0 beta) (x-0 l-2))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-0) (pv a-0 l-2))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((11 1) (10 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv a-0 l-2))) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-1 (rec x-0)))))
+    ((load priv-stor-2 (cat pt-7 (pv a-0 l-2)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-2 (cat pt-8 ignore-2))
+      (stor priv-stor-2 (cat pt-7 (pv a-0 l-2)))))
+  (label 154)
+  (parent 127)
+  (unrealized (0 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) l-1) (one)))
+  (deflistener (cat (exp (gen) (mul x (rec l-0))) l-1))
+  (precedes ((0 2) (10 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((2 2) (9 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)) ((10 1) (3 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x (rec l-0))) l-1))
+    (exp (gen) (mul x (rec l-0) l-1)) (3 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) (one)))
+      (send (cat (exp (gen) l-1) (one))))
+    ((recv (cat (exp (gen) (mul x (rec l-0))) l-1))
+      (send (cat (exp (gen) (mul x (rec l-0))) l-1))))
+  (label 155)
+  (parent 130)
+  (unrealized (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) l-1) (one)))
+  (deflistener (cat (exp (gen) (mul x l-1)) l-0))
+  (precedes ((0 2) (10 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((2 2) (9 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((4 1) (10 0)) ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0))
+    ((8 2) (7 0)) ((9 1) (7 0)) ((10 1) (3 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x l-1)) l-0))
+    (exp (gen) (mul x (rec l-0) l-1)) (3 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) (one)))
+      (send (cat (exp (gen) l-1) (one))))
+    ((recv (cat (exp (gen) (mul x l-1)) l-0))
+      (send (cat (exp (gen) (mul x l-1)) l-0))))
+  (label 156)
+  (parent 130)
+  (seen 163)
+  (seen-ops
+    (163
+      (operation nonce-test (added-strand ltx-disclose 3) l-1 (10 0)
+        (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+      (strand-map 0 1 2 3 4 5 6 7 8 9 10)))
+  (unrealized (0 3) (10 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) l-1) (one)))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) x))
+  (precedes ((0 2) (10 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((2 2) (9 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (7 0)) ((10 1) (3 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul (rec l-0) l-1)) x))
+    (exp (gen) (mul x (rec l-0) l-1)) (3 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) (one)))
+      (send (cat (exp (gen) l-1) (one))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) x))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) x))))
+  (label 157)
+  (parent 130)
+  (unrealized (0 3) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (10 0)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((2 2) (7 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((6 2) (9 0)) ((7 1) (5 0))
+    ((8 2) (7 0)) ((9 1) (3 2)) ((10 1) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 158)
+  (parent 134)
+  (unrealized (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (10 0)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((2 2) (7 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((6 2) (9 0)) ((7 1) (5 0))
+    ((8 2) (7 0)) ((9 1) (3 2)) ((10 1) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 159)
+  (parent 134)
+  (unrealized (0 3) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (precedes ((0 2) (10 0)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((2 2) (9 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((6 2) (10 0)) ((7 1) (5 0))
+    ((8 2) (7 0)) ((9 1) (7 0)) ((10 1) (3 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 11 6 ltx-disclose 3) l-1 (10 0)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1))))
+  (label 160)
+  (parent 144)
+  (unrealized (0 3) (10 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (10 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((2 2) (7 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((8 2) (9 0)) ((9 1) (3 2)) ((10 1) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 161)
+  (parent 146)
+  (unrealized (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (10 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((2 2) (7 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((8 2) (9 0)) ((9 1) (3 2)) ((10 1) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 162)
+  (parent 146)
+  (unrealized (0 3) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (precedes ((0 2) (10 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((2 2) (9 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((8 2) (10 0)) ((9 1) (7 0)) ((10 1) (3 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 11 8 ltx-disclose 3) l-1 (10 0)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1))))
+  (label 163)
+  (parent 156)
+  (unrealized (0 3) (10 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (11 0)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((2 2) (9 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((6 2) (10 0)) ((7 1) (5 0))
+    ((8 2) (7 0)) ((9 1) (7 0)) ((10 1) (3 2)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 164)
+  (parent 160)
+  (unrealized (11 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (11 0)) ((1 1) (0 0)) ((1 1) (8 0)) ((2 2) (0 1))
+    ((2 2) (9 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((6 2) (10 0)) ((7 1) (5 0))
+    ((8 2) (7 0)) ((9 1) (7 0)) ((10 1) (3 2)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (8 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 165)
+  (parent 160)
+  (unrealized (0 3) (11 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (11 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((2 2) (9 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((8 2) (10 0)) ((9 1) (7 0)) ((10 1) (3 2)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 166)
+  (parent 163)
+  (unrealized (11 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (11 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((2 2) (9 0)) ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (8 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((8 2) (10 0)) ((9 1) (7 0)) ((10 1) (3 2)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (9 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)) ((4 1) (3 0)) ((4 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 167)
+  (parent 163)
+  (unrealized (0 3) (11 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-um3 diffie-hellman
+  (defrole init
+    (vars (l x rndx) (beta eta expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a l))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))
+              (exp (gen) (mul x eta)))))) (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x l) (x beta))
+    (facts (neq a b))
+    (gen-st (pv a l)))
+  (defrole resp
+    (vars (l y rndx) (alpha chi expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b l))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul l chi))
+              (exp (gen) (mul y chi)))))) (recv nb) (send "done"))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y l) (y alpha) (y chi))
+    (facts (neq a b))
+    (gen-st (pv b l)))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l)))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z (idx 2))
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defrule ltx-gen-once-inference
+    (forall ((z1 z2 strd) (self name))
+      (implies
+        (and (fact ltx-gen-once self) (p "ltx-gen" z1 (idx 2))
+          (p "ltx-gen" "self" z1 self) (p "ltx-gen" z2 (idx 2))
+          (p "ltx-gen" "self" z2 self))
+        (= z1 z2))))
+  (defrule eq-means-=
+    (forall ((v1 v2 mesg)) (implies (fact eq v1 v2) (= v1 v2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "init" z (idx 2)) (p "init" "a" z a) (p "init" "b" z b))
+        (fact neq a b))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "resp" z (idx 2)) (p "resp" "a" z a) (p "resp" "b" z b))
+        (fact neq a b))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd))
+      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 1)))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd))
+      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 0)))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd))
+      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 1)))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd))
+      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 0)))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (a name) (l rndx))
+      (implies
+        (and (p "init" z (idx 1)) (p "init" "l" z l) (p "init" "a" z a))
+        (gen-st (pv a l)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (b name) (l rndx))
+      (implies
+        (and (p "resp" z (idx 1)) (p "resp" "l" z l) (p "resp" "b" z b))
+        (gen-st (pv b l)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (self name) (l rndx))
+      (implies
+        (and (p "ltx-disclose" z (idx 1)) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn) (l x rndx)
+    (eta beta expt))
+  (deflistener
+    (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))
+      (exp (gen) (mul x eta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta beta) (eta eta))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x l) (x beta))
+  (facts (neq a b) (undisclosed beta))
+  (goals
+    (forall
+      ((z zl strd) (na nb data) (a b name) (l x rndx) (eta beta expt))
+      (implies
+        (and (p "init" z 4) (p "init" "na" z na) (p "init" "nb" z nb)
+          (p "init" "a" z a) (p "init" "b" z b) (p "init" "l" z l)
+          (p "init" "x" z x) (p "init" "beta" z beta)
+          (p "init" "eta" z eta) (non (privk "sig" b)) (ugen x)
+          (uniq-at na z 2) (fact neq a b) (fact undisclosed beta)
+          (p "" zl 2)
+          (p "" "x" zl
+            (hash (exp (exp (gen) eta) l) (exp (exp (gen) beta) x)
+              (exp (exp (gen) eta) x)))) (false))))
+  (traces
+    ((recv
+       (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))
+         (exp (gen) (mul x eta))))
+      (send
+        (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))
+          (exp (gen) (mul x eta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))
+              (exp (gen) (mul x eta))))))))
+  (label 168)
+  (unrealized (0 0) (1 1))
+  (preskeleton)
+  (origs (na (1 2)))
+  (ugens (x (1 2)))
+  (comment "Not a skeleton"))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn) (l x rndx)
+    (eta beta expt))
+  (deflistener
+    (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))
+      (exp (gen) (mul x eta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta beta) (eta eta))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x l) (x beta))
+  (facts (neq a b) (undisclosed beta))
+  (traces
+    ((recv
+       (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))
+         (exp (gen) (mul x eta))))
+      (send
+        (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))
+          (exp (gen) (mul x eta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))
+              (exp (gen) (mul x eta))))))))
+  (label 169)
+  (parent 168)
+  (unrealized (1 1))
+  (origs (na (1 2)))
+  (ugens (x (1 2)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn) (l x rndx)
+    (eta beta expt))
+  (deflistener
+    (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))
+      (exp (gen) (mul x eta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta beta) (eta eta))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x l) (x beta))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed beta))
+  (rule fact-resp-neq0 gen-st-ltx-disclose-0)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))
+         (exp (gen) (mul x eta))))
+      (send
+        (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))
+          (exp (gen) (mul x eta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))
+              (exp (gen) (mul x eta))))))))
+  (label 170)
+  (parent 169)
+  (unrealized (1 0) (1 1))
+  (origs (na (1 2)))
+  (ugens (x (1 2)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore mesg) (na nb data) (a b name) (pt pt-0 pval)
+    (priv-stor locn) (x rndx) (eta beta expt) (l rndx))
+  (deflistener
+    (hash (exp (gen) (mul eta l)) (exp (gen) (mul x beta))
+      (exp (gen) (mul x eta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta beta) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (precedes ((1 2) (0 0)) ((2 1) (1 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l)
+  (uniq-gen x)
+  (absent (x beta) (x l))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed beta))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor (cat pt (pv a l))) (1 0))
+  (strand-map 0 1)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul eta l)) (exp (gen) (mul x beta))
+         (exp (gen) (mul x eta))))
+      (send
+        (hash (exp (gen) (mul eta l)) (exp (gen) (mul x beta))
+          (exp (gen) (mul x eta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x beta))
+              (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l)))))
+  (label 171)
+  (parent 170)
+  (unrealized (0 0) (1 1) (1 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x eta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (0 0)) ((2 1) (1 0)) ((3 2) (1 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand ltx-gen 3)
+    (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)) (1 1))
+  (strand-map 0 1 2)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x eta))))
+      (send
+        (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x eta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))))
+  (label 172)
+  (parent 171)
+  (unrealized (0 0) (1 3))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 2) (1 1)) ((4 3) (0 0))
+    ((4 3) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 gen-st-ltx-disclose-0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand resp 4)
+    (enc na nb a b
+      (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+        (exp (gen) (mul y x l-0 (rec l-1))))) (1 3))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1)))))))))
+  (label 173)
+  (parent 172)
+  (unrealized (0 0) (1 3) (4 0) (4 1) (4 2))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x eta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x eta))))
+  (precedes ((1 2) (0 0)) ((1 2) (4 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+        (exp (gen) (mul x eta))))
+    (enc na nb a b
+      (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+        (exp (gen) (mul x eta)))) (1 3))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x eta))))
+      (send
+        (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x eta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x eta))))
+      (send
+        (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x eta))))))
+  (label 174)
+  (parent 172)
+  (unrealized (0 0) (4 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 5 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x))))))))
+  (label 175)
+  (parent 173)
+  (unrealized (0 0) (4 1))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 2) (1 1)) ((4 3) (0 0))
+    ((4 3) (1 3)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1)))))
+  (label 176)
+  (parent 173)
+  (unrealized (0 0) (1 3) (4 1) (4 2))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x eta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x eta))))
+  (deflistener
+    (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x eta))))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+        (exp (gen) (mul x eta))))
+    (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x eta))) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x eta))))
+      (send
+        (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x eta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x eta))))
+      (send
+        (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x eta)))))
+    ((recv
+       (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x eta))))
+      (send
+        (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x eta))))))
+  (label 177)
+  (parent 174)
+  (unrealized (0 0) (5 0))
+  (comment "8 in cohort - 8 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (1 3)) ((4 1) (1 0)) ((4 2) (3 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 2 5 ltx-gen 3) (exp (gen) l-0) (4 1))
+  (strand-map 0 1 4 2 3)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 178)
+  (parent 175)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx) (w expt))
+  (deflistener
+    (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (deflistener (cat (exp (gen) (mul l (rec w))) w))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l (rec w))) w)) (exp (gen) l)
+    (4 1))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) (mul l (rec w))) w))
+      (send (cat (exp (gen) (mul l (rec w))) w))))
+  (label 179)
+  (parent 175)
+  (unrealized (0 0) (5 0))
+  (comment "7 in cohort - 7 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 2) (1 1)) ((4 3) (0 0))
+    ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (6 0)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l l-0)) l-1))
+    (exp (gen) (mul l l-0 (rec l-1))) (4 1))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1))))
+  (label 180)
+  (parent 176)
+  (unrealized (0 0) (1 3) (4 2) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l (rec l-1))) l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (6 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l (rec l-1))) l-0))
+    (exp (gen) (mul l l-0 (rec l-1))) (4 1))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l (rec l-1))) l-0))
+      (send (cat (exp (gen) (mul l (rec l-1))) l-0))))
+  (label 181)
+  (parent 176)
+  (unrealized (0 0) (1 3) (4 2) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+    (exp (gen) (mul l l-0 (rec l-1))) (4 1))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l))))
+  (label 182)
+  (parent 176)
+  (unrealized (0 0) (1 3) (4 2) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx)
+    (alpha chi expt) (l-1 y rndx))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) y))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec l-1) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) y))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) y))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0)) ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y l-0) (y alpha) (y chi))
+  (gen-st (pv a l-1) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) y)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-1) y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) y)))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) y))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) y)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul l-0 chi))
+              (exp (gen) (mul chi y))))))))
+  (label 183)
+  (parent 177)
+  (unrealized (0 0) (1 3) (5 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (beta expt)
+    (l-1 x-0 rndx))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec l-1) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) x-0))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-1) (x-0 l-0) (x-0 beta))
+  (gen-st (pv a l-1) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) x-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-1) x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) x-0)))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) x-0))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 184)
+  (parent 177)
+  (unrealized (0 0) (1 3) (5 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener
+    (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (rec l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+  (deflistener
+    (cat (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (contracted (eta (rec l-0)) (l-1 l-0)) (gen)
+    (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+      (send
+        (hash (gen) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (rec l-0))
+          (enc na nb a b
+            (hash (gen) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+      (send
+        (hash (gen) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0))))))
+    ((recv
+       (cat (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+      (send
+        (cat (gen) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0)))))))
+  (label 185)
+  (parent 177)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x rndx))
+  (deflistener
+    (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul (rec l) x x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul (rec l) x x))))
+  (deflistener
+    (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul (rec l) x x))))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 1 init 3) (exp (gen) x-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul (rec l) x x))))
+      (send
+        (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul (rec l) x x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+              (exp (gen) (mul (rec l) x x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul (rec l) x x))))
+      (send
+        (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul (rec l) x x)))))
+    ((recv
+       (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul (rec l) x x))))
+      (send
+        (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul (rec l) x x))))))
+  (label 186)
+  (parent 177)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) l-0))))
+  (deflistener
+    (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) l-0))))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 3 ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) l-0)))))
+    ((recv
+       (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) l-0))))))
+  (label 187)
+  (parent 177)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+  (deflistener
+    (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (4 0)) ((2 2) (1 1)) ((3 1) (1 3))
+    ((4 1) (3 0)) ((5 1) (1 0)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 2 6 ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 5 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (gen)
+          (enc na nb self b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l))
+              (exp (gen) x))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 188)
+  (parent 177)
+  (unrealized (0 0) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) l-1) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) l-1) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) l-1))))
+  (deflistener
+    (cat (exp (gen) l-1) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) l-1) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) l-1) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) l-1) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) l-1) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) l-1) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) l-1)))))
+    ((recv
+       (cat (exp (gen) l-1) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) l-1) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) l-1)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 189)
+  (parent 177)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx) (w expt))
+  (deflistener
+    (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x eta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x eta))))
+  (deflistener
+    (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x eta))))
+  (deflistener (cat (exp (gen) (mul eta l (rec w))) w))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul eta l (rec w))) w))
+    (exp (gen) (mul eta l)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x eta))))
+      (send
+        (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x eta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x eta))))
+      (send
+        (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x eta)))))
+    ((recv
+       (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x eta))))
+      (send
+        (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x eta)))))
+    ((recv (cat (exp (gen) (mul eta l (rec w))) w))
+      (send (cat (exp (gen) (mul eta l (rec w))) w))))
+  (label 190)
+  (parent 177)
+  (unrealized (0 0) (5 0) (6 0))
+  (comment "7 in cohort - 7 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (5 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+        (exp (gen) (mul y x))))
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))) (0 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv
+       (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x))))))
+  (label 191)
+  (parent 178)
+  (unrealized (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 rndx)
+    (beta expt) (l-1 x-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-1) (chi x))
+  (deflistener (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-1)
+  (uniq-gen y x x-0)
+  (absent (y x) (y l) (y l-1) (x l) (x l-1) (x-0 l-0) (x-0 beta))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv b l) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-1 (rec x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 192)
+  (parent 179)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y l l-0 x rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l)) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (deflistener (cat (exp (gen) x) (mul l (rec x))))
+  (precedes ((1 2) (5 0)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y l) (y l-0) (y x) (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 1 init 3) (exp (gen) x-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l)) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l)) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul l-0 x))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul l-0 x))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) x) (mul l (rec x))))
+      (send (cat (exp (gen) x) (mul l (rec x))))))
+  (label 193)
+  (parent 179)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (gen) l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (5 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (contracted (l-1 l-0) (w l-0)) (gen) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0))))
+  (label 194)
+  (parent 179)
+  (unrealized (0 0) (5 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (1 3)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 2 6 ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 5 2 3 4)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 195)
+  (parent 179)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 rndx)
+    (alpha chi expt) (l-1 y-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-1) (chi x))
+  (deflistener (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)) ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-1)
+  (uniq-gen y x y-0)
+  (absent (y x) (y l) (y l-1) (x l) (x l-1) (y-0 l-0) (y-0 alpha)
+    (y-0 chi))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv b l) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-1 (rec y-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul l-0 chi))
+              (exp (gen) (mul chi y-0))))))))
+  (label 196)
+  (parent 179)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (deflistener (cat (exp (gen) l-0) (mul l (rec l-0))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((3 2) (5 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 3 ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) l-0) (mul l (rec l-0))))
+      (send (cat (exp (gen) l-0) (mul l (rec l-0))))))
+  (label 197)
+  (parent 179)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul l-0 (rec l-1)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 198)
+  (parent 179)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 2) (1 1)) ((4 3) (0 0))
+    ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0)) ((6 1) (4 1))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (6 0)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1)))
+  (label 199)
+  (parent 180)
+  (unrealized (0 0) (1 3) (4 2) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x l (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul l (rec l-0))) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((6 1) (4 1))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (6 0)
+    (ch-msg priv-stor (cat pt (pv a l-1))))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x l (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x l (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul l (rec l-0))) l-1))
+      (send (cat (exp (gen) (mul l (rec l-0))) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-1)))
+  (label 200)
+  (parent 182)
+  (unrealized (0 0) (1 3) (4 2) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi expt) (y l-0 rndx))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x y (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x y (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x y (rec l-0)))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((2 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0))
+    ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x y (rec l-0)))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x y (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l))
+              (exp (gen) (mul x y (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x y (rec l-0)))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x y (rec l-0))))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x y (rec l-0)))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x y (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y))))))))
+  (label 201)
+  (parent 183)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l y l-0 rndx))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) y))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) y))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) y))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0))
+    ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) y)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) y)))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) y))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) y)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y))))))))
+  (label 202)
+  (parent 183)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 y l-1 rndx))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) y))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) y))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) y))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0)) ((6 3) (5 0))
+    ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) y)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) y)))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) y))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) y)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 203)
+  (parent 183)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta expt) (x-0 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x x-0 (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x x-0 (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x x-0 (rec l-0)))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((2 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x x-0 (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l))
+              (exp (gen) (mul x x-0 (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x x-0 (rec l-0))))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x x-0 (rec l-0)))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x x-0 (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 204)
+  (parent 184)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) x-0))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) x-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) x-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) x-0)))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) x-0))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) x-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 205)
+  (parent 184)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) x-0))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0)) ((6 2) (5 0))
+    ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) x-0)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) x-0)))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) x-0))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
+  (label 206)
+  (parent 184)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener
+    (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (rec l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+  (deflistener
+    (cat (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+      (send
+        (hash (gen) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (rec l-0))
+          (enc na nb a b
+            (hash (gen) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+      (send
+        (hash (gen) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0))))))
+    ((recv
+       (cat (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+      (send
+        (cat (gen) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0))))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 207)
+  (parent 185)
+  (unrealized (0 0) (1 3) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener
+    (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (rec l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+  (deflistener
+    (cat (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+      (send
+        (hash (gen) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (rec l-0))
+          (enc na nb a b
+            (hash (gen) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+      (send
+        (hash (gen) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0))))))
+    ((recv
+       (cat (gen) (exp (gen) (mul x l)) (exp (gen) (mul x (rec l-0)))))
+      (send
+        (cat (gen) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0))))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 208)
+  (parent 185)
+  (unrealized (0 0) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x rndx))
+  (deflistener
+    (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul (rec l) x x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul (rec l) x x))))
+  (deflistener
+    (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul (rec l) x x))))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul l-0 x)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul (rec l) x x))))
+      (send
+        (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul (rec l) x x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+              (exp (gen) (mul (rec l) x x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul (rec l) x x))))
+      (send
+        (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul (rec l) x x)))))
+    ((recv
+       (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul (rec l) x x))))
+      (send
+        (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul (rec l) x x)))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 209)
+  (parent 186)
+  (unrealized (0 0) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x rndx))
+  (deflistener
+    (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul (rec l) x x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul (rec l) x x))))
+  (deflistener
+    (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul (rec l) x x))))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul l-0 x)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul (rec l) x x))))
+      (send
+        (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul (rec l) x x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+              (exp (gen) (mul (rec l) x x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul (rec l) x x))))
+      (send
+        (hash (exp (gen) x) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul (rec l) x x)))))
+    ((recv
+       (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul (rec l) x x))))
+      (send
+        (cat (exp (gen) x) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul (rec l) x x)))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 210)
+  (parent 186)
+  (unrealized (0 0) (1 3) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) l-0))))
+  (deflistener
+    (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) l-0))))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) l-0)))))
+    ((recv
+       (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) l-0)))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 211)
+  (parent 187)
+  (unrealized (0 0) (1 3) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) l-0))))
+  (deflistener
+    (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) l-0))))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (hash (exp (gen) l-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) l-0)))))
+    ((recv
+       (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) l-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) l-0)))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 212)
+  (parent 187)
+  (unrealized (0 0) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+  (deflistener
+    (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 2) (1 1)) ((3 1) (1 3))
+    ((4 1) (3 0)) ((5 1) (1 0)) ((5 2) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (gen)
+          (enc na nb self b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l))
+              (exp (gen) x))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 213)
+  (parent 188)
+  (unrealized (0 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener
+    (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+  (deflistener
+    (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 2) (1 1)) ((3 1) (1 3))
+    ((4 1) (3 0)) ((5 1) (1 0)) ((5 2) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (gen)
+          (enc na nb self b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l))
+              (exp (gen) x))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x)))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l)) (exp (gen) x))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 214)
+  (parent 188)
+  (unrealized (0 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) l-1) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) l-1) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) l-1))))
+  (deflistener
+    (cat (exp (gen) l-1) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) l-1) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) l-1) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) l-1) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) l-1) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) l-1) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) l-1)))))
+    ((recv
+       (cat (exp (gen) l-1) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) l-1) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) l-1)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 215)
+  (parent 189)
+  (unrealized (0 0) (1 3) (5 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) l-1) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) l-1) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) l-1))))
+  (deflistener
+    (cat (exp (gen) l-1) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) l-1) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) l-1) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) l-1) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) l-1) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) l-1) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) l-1)))))
+    ((recv
+       (cat (exp (gen) l-1) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) l-1) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) l-1)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 216)
+  (parent 189)
+  (unrealized (0 0) (5 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (beta expt)
+    (l-1 rndx) (w expt) (x-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) w x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec l-1) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) w x-0))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) w x-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 2) (0 0))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-1) (x-0 l-0) (x-0 beta))
+  (precur (6 0))
+  (gen-st (pv a l-1) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) w x-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-1) w x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) w x-0)))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) w x-0))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) w x-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 217)
+  (parent 190)
+  (unrealized (0 0) (1 3) (5 0) (7 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (w expt)
+    (l l-0 x rndx))
+  (deflistener
+    (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul w (rec l) x x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul w (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul w (rec l) x x))))
+  (deflistener
+    (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul w (rec l) x x))))
+  (deflistener (cat (exp (gen) x) w))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 1 init 3) (exp (gen) x-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul w (rec l) x x))))
+      (send
+        (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul w (rec l) x x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+              (exp (gen) (mul w (rec l) x x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul w (rec l) x x))))
+      (send
+        (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul w (rec l) x x)))))
+    ((recv
+       (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul w (rec l) x x))))
+      (send
+        (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul w (rec l) x x)))))
+    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w))))
+  (label 218)
+  (parent 190)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l l-0 rndx)
+    (w expt))
+  (deflistener
+    (hash (exp (gen) w) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) w) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w))))
+  (deflistener
+    (cat (exp (gen) w) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w))))
+  (deflistener (cat (gen) w))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (eta (mul (rec l-0) w)) (l-1 l-0) (w-0 w)) (gen) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) w) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w))))
+      (send
+        (hash (exp (gen) w) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w))
+          (enc na nb a b
+            (hash (exp (gen) w) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) w) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w))))
+      (send
+        (hash (exp (gen) w) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w)))))
+    ((recv
+       (cat (exp (gen) w) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w))))
+      (send
+        (cat (exp (gen) w) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w)))))
+    ((recv (cat (gen) w)) (send (cat (gen) w))))
+  (label 219)
+  (parent 190)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta w))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w))))
+  (deflistener
+    (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (4 0)) ((2 2) (1 1)) ((3 1) (1 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (1 0)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 2 7 ltx-gen 3) (exp (gen) l-1) (6 0))
+  (strand-map 0 1 6 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) w)
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w)))))
+    ((recv
+       (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w))))
+      (send
+        (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 220)
+  (parent 190)
+  (unrealized (0 0) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx)
+    (alpha chi expt) (l-1 rndx) (w expt) (y rndx))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) w y))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec l-1) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) w y))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-1) w y))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 3) (0 0))
+    ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y l-0) (y alpha) (y chi))
+  (precur (6 0))
+  (gen-st (pv a l-1) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) w y)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-1) w y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) w y)))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-1) w y))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-1) w y)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul l-0 chi))
+              (exp (gen) (mul chi y))))))))
+  (label 221)
+  (parent 190)
+  (unrealized (0 0) (1 3) (5 0) (7 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w l-0))))
+  (deflistener
+    (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w l-0))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((3 2) (6 0)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 3 ltx-gen 3) (exp (gen) l-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w l-0))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w l-0))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w l-0)))))
+    ((recv
+       (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w l-0))))
+      (send
+        (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w l-0)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w))))
+  (label 222)
+  (parent 190)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (w expt)
+    (l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w l-1))))
+  (deflistener
+    (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w l-1))))
+  (deflistener (cat (exp (gen) l-1) w))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w l-1))))
+      (send
+        (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w l-1))))
+      (send
+        (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w l-1)))))
+    ((recv
+       (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w l-1))))
+      (send
+        (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w l-1)))))
+    ((recv (cat (exp (gen) l-1) w)) (send (cat (exp (gen) l-1) w)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 223)
+  (parent 190)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (6 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (0 0))
+    ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) y) l-0))
+    (exp (gen) (mul y l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv
+       (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0))))
+  (label 224)
+  (parent 191)
+  (unrealized (5 0) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (deflistener (cat (exp (gen) l-0) y))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (6 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (0 0))
+    ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) y))
+    (exp (gen) (mul y l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv
+       (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((recv (cat (exp (gen) l-0) y)) (send (cat (exp (gen) l-0) y))))
+  (label 225)
+  (parent 191)
+  (unrealized (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y x l rndx)
+    (beta expt) (x-0 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) x-0) (mul (rec x-0) l-0)))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen y x x-0)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) x-0) (mul (rec x-0) l-0)))
+      (send (cat (exp (gen) x-0) (mul (rec x-0) l-0))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 226)
+  (parent 192)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y x rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (deflistener (cat (exp (gen) x-0) (mul l (rec x-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen y x x-0)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) x-0) (mul l (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l (rec x-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 227)
+  (parent 192)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)) ((6 2) (5 0))
+    ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen y x x-0)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-0 (rec x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
+  (label 228)
+  (parent 192)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (gen) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (5 0)
+    (ch-msg priv-stor (cat pt (pv a l-0))))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0)))
+  (label 229)
+  (parent 194)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+        (exp (gen) (mul y x))))
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))) (0 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv
+       (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x))))))
+  (label 230)
+  (parent 195)
+  (unrealized (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y x l rndx)
+    (alpha chi expt) (y-0 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y-0) (mul (rec y-0) l-0)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1))
+    ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen y x y-0)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0) (y-0 alpha) (y-0 chi)
+    (y-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) y-0) (mul (rec y-0) l-0)))
+      (send (cat (exp (gen) y-0) (mul (rec y-0) l-0))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y-0))))))))
+  (label 231)
+  (parent 196)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y x rndx)
+    (alpha chi expt) (l y-0 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (deflistener (cat (exp (gen) y-0) (mul l (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1))
+    ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen y x y-0)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0) (y-0 alpha) (y-0 chi)
+    (y-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) y-0) (mul l (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l (rec y-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y-0))))))))
+  (label 232)
+  (parent 196)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx)
+    (alpha chi expt) (l-0 y-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)) ((6 3) (5 0))
+    ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen y x y-0)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0) (y-0 alpha) (y-0 chi)
+    (y-0 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-0 (rec y-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 233)
+  (parent 196)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (8 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) l-0))
+    (exp (gen) (mul l l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0))))
+  (label 234)
+  (parent 199)
+  (unrealized (0 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) l))
+    (exp (gen) (mul l l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l))))
+  (label 235)
+  (parent 199)
+  (unrealized (0 0) (1 3) (4 2) (8 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x l (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul l (rec l-0))) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (deflistener (cat (exp (gen) l) l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (8 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) l-0))
+    (exp (gen) (mul l (rec l-0))) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x l (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x l (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul l (rec l-0))) l-1))
+      (send (cat (exp (gen) (mul l (rec l-0))) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0))))
+  (label 236)
+  (parent 200)
+  (unrealized (0 0) (1 3) (4 2) (8 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x l (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul l (rec l-0))) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (deflistener (cat (exp (gen) (rec l-0)) l))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (8 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) (rec l-0)) l))
+    (exp (gen) (mul l (rec l-0))) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x l (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x l (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul l (rec l-0))) l-1))
+      (send (cat (exp (gen) (mul l (rec l-0))) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (rec l-0)) l))
+      (send (cat (exp (gen) (rec l-0)) l))))
+  (label 237)
+  (parent 200)
+  (unrealized (0 0) (1 3) (4 2) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi expt) (y l-0 rndx))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x y (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x y (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x y (rec l-0)))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((2 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0))
+    ((6 3) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x y (rec l-0)))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x y (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l))
+              (exp (gen) (mul x y (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x y (rec l-0)))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x y (rec l-0))))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x y (rec l-0)))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x y (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y)))))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 238)
+  (parent 201)
+  (unrealized (0 0) (1 3) (5 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi expt) (y l-0 rndx))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x y (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x y (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x y (rec l-0)))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((2 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0))
+    ((6 3) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x y (rec l-0)))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x y (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l))
+              (exp (gen) (mul x y (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x y (rec l-0)))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x y (rec l-0))))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x y (rec l-0)))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x y (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y)))))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 239)
+  (parent 201)
+  (unrealized (0 0) (5 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l y l-0 rndx))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) y))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) y))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) y))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0))
+    ((6 3) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) y)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) y)))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) y))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) y)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y)))))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 240)
+  (parent 202)
+  (unrealized (0 0) (1 3) (5 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l y l-0 rndx))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) y))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) y))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) y))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0))
+    ((6 3) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) y)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) y)))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) y))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) y)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y)))))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 241)
+  (parent 202)
+  (unrealized (0 0) (5 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 y l-1 rndx))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) y))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) y))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) y))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0)) ((6 3) (5 0))
+    ((7 1) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) y)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) y)))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) y))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) y)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 242)
+  (parent 203)
+  (unrealized (0 0) (1 3) (5 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 y l-1 rndx))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) y))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) y))))
+  (deflistener
+    (cat (exp (gen) y) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) y))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0)) ((6 3) (5 0))
+    ((7 1) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) y)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) y))))
+      (send
+        (hash (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) y)))))
+    ((recv
+       (cat (exp (gen) y) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) y))))
+      (send
+        (cat (exp (gen) y) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) y)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 243)
+  (parent 203)
+  (unrealized (0 0) (5 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta expt) (x-0 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x x-0 (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x x-0 (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x x-0 (rec l-0)))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((2 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0))
+    ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x x-0 (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l))
+              (exp (gen) (mul x x-0 (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x x-0 (rec l-0))))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x x-0 (rec l-0)))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x x-0 (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 244)
+  (parent 204)
+  (unrealized (0 0) (1 3) (5 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta expt) (x-0 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x x-0 (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x x-0 (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x x-0 (rec l-0)))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((2 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0))
+    ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x x-0 (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l))
+              (exp (gen) (mul x x-0 (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x x-0 (rec l-0))))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x x-0 (rec l-0)))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x x-0 (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 245)
+  (parent 204)
+  (unrealized (0 0) (5 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) x-0))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) x-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0))
+    ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) x-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) x-0)))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) x-0))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) x-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 246)
+  (parent 205)
+  (unrealized (0 0) (1 3) (5 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) x-0))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) x-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0))
+    ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) x-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) x-0)))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) x-0))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) x-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 247)
+  (parent 205)
+  (unrealized (0 0) (5 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) x-0))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0)) ((6 2) (5 0))
+    ((7 1) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) x-0)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) x-0)))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) x-0))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 248)
+  (parent 206)
+  (unrealized (0 0) (1 3) (5 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) x-0))))
+  (deflistener
+    (cat (exp (gen) x-0) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0)) ((6 2) (5 0))
+    ((7 1) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) x-0)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) x-0))))
+      (send
+        (hash (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) x-0)))))
+    ((recv
+       (cat (exp (gen) x-0) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) x-0))))
+      (send
+        (cat (exp (gen) x-0) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 249)
+  (parent 206)
+  (unrealized (0 0) (5 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta w expt) (x-0 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w x-0 (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w x-0 (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w x-0 (rec l-0)))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 2) (0 0)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w x-0 (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w x-0 (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w x-0 (rec l-0))))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w x-0 (rec l-0)))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w x-0 (rec l-0))))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 250)
+  (parent 217)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l rndx) (w expt) (x-0 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w x-0))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w x-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 2) (0 0)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w x-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w x-0)))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w x-0))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w x-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 251)
+  (parent 217)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 rndx) (w expt) (x-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w x-0))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w x-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 2) (0 0))
+    ((7 2) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (6 0))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w x-0)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w x-0)))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w x-0))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w x-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
+  (label 252)
+  (parent 217)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (w expt)
+    (l l-0 x rndx))
+  (deflistener
+    (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul w (rec l) x x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul w (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul w (rec l) x x))))
+  (deflistener
+    (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul w (rec l) x x))))
+  (deflistener (cat (exp (gen) x) w))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((1 2) (7 0)) ((2 1) (1 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul l-0 x)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul w (rec l) x x))))
+      (send
+        (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul w (rec l) x x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+              (exp (gen) (mul w (rec l) x x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul w (rec l) x x))))
+      (send
+        (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul w (rec l) x x)))))
+    ((recv
+       (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul w (rec l) x x))))
+      (send
+        (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul w (rec l) x x)))))
+    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w)))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 253)
+  (parent 218)
+  (unrealized (0 0) (5 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (w expt)
+    (l l-0 x rndx))
+  (deflistener
+    (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul w (rec l) x x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul w (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul w (rec l) x x))))
+  (deflistener
+    (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+      (exp (gen) (mul w (rec l) x x))))
+  (deflistener (cat (exp (gen) x) w))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((1 2) (7 0)) ((2 1) (1 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul l-0 x)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul w (rec l) x x))))
+      (send
+        (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul w (rec l) x x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+              (exp (gen) (mul w (rec l) x x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul w (rec l) x x))))
+      (send
+        (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul w (rec l) x x)))))
+    ((recv
+       (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+         (exp (gen) (mul w (rec l) x x))))
+      (send
+        (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))
+          (exp (gen) (mul w (rec l) x x)))))
+    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w)))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 254)
+  (parent 218)
+  (unrealized (0 0) (1 3) (5 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l l-0 rndx)
+    (w expt))
+  (deflistener
+    (hash (exp (gen) w) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) w) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w))))
+  (deflistener
+    (cat (exp (gen) w) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w))))
+  (deflistener (cat (gen) w))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) w) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w))))
+      (send
+        (hash (exp (gen) w) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w))
+          (enc na nb a b
+            (hash (exp (gen) w) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) w) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w))))
+      (send
+        (hash (exp (gen) w) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w)))))
+    ((recv
+       (cat (exp (gen) w) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w))))
+      (send
+        (cat (exp (gen) w) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w)))))
+    ((recv (cat (gen) w)) (send (cat (gen) w)))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 255)
+  (parent 219)
+  (unrealized (0 0) (1 3) (5 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l l-0 rndx)
+    (w expt))
+  (deflistener
+    (hash (exp (gen) w) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) w) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w))))
+  (deflistener
+    (cat (exp (gen) w) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w))))
+  (deflistener (cat (gen) w))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) w) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w))))
+      (send
+        (hash (exp (gen) w) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w))
+          (enc na nb a b
+            (hash (exp (gen) w) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) w) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w))))
+      (send
+        (hash (exp (gen) w) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w)))))
+    ((recv
+       (cat (exp (gen) w) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w))))
+      (send
+        (cat (exp (gen) w) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w)))))
+    ((recv (cat (gen) w)) (send (cat (gen) w)))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 256)
+  (parent 219)
+  (unrealized (0 0) (5 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta w))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w))))
+  (deflistener
+    (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 2) (1 1)) ((3 1) (1 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (1 0)) ((6 2) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) w)
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w)))))
+    ((recv
+       (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w))))
+      (send
+        (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 257)
+  (parent 220)
+  (unrealized (0 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta w))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w))))
+  (deflistener
+    (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 2) (1 1)) ((3 1) (1 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (1 0)) ((6 2) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) w)
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w)))))
+    ((recv
+       (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w))))
+      (send
+        (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 258)
+  (parent 220)
+  (unrealized (0 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi w expt) (y l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w y (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w y (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w y (rec l-0)))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 3) (0 0)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w y (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w y (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w y (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w y (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w y (rec l-0))))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w y (rec l-0)))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w y (rec l-0))))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y))))))))
+  (label 259)
+  (parent 221)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l rndx) (w expt) (y l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w y))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w y))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w y))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 3) (0 0)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w y)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w y)))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w y))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w y)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y))))))))
+  (label 260)
+  (parent 221)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 rndx) (w expt) (y l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w y))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w y))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w y))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 3) (0 0))
+    ((7 3) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (precur (6 0))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w y)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w y)))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w y))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w y)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 261)
+  (parent 221)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w l-0))))
+  (deflistener
+    (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w l-0))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((3 2) (6 0)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w l-0))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w l-0))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w l-0)))))
+    ((recv
+       (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w l-0))))
+      (send
+        (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w l-0)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 262)
+  (parent 222)
+  (unrealized (0 0) (1 3) (5 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w l-0))))
+  (deflistener
+    (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w l-0))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((3 2) (6 0)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w l-0))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w l-0))))
+      (send
+        (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w l-0)))))
+    ((recv
+       (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w l-0))))
+      (send
+        (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w l-0)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 263)
+  (parent 222)
+  (unrealized (0 0) (5 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (w expt)
+    (l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w l-1))))
+  (deflistener
+    (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w l-1))))
+  (deflistener (cat (exp (gen) l-1) w))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 2) (6 0))
+    ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w l-1))))
+      (send
+        (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w l-1))))
+      (send
+        (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w l-1)))))
+    ((recv
+       (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w l-1))))
+      (send
+        (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w l-1)))))
+    ((recv (cat (exp (gen) l-1) w)) (send (cat (exp (gen) l-1) w)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 264)
+  (parent 223)
+  (unrealized (0 0) (1 3) (5 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (w expt)
+    (l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w l-1))))
+  (deflistener
+    (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w l-1))))
+  (deflistener (cat (exp (gen) l-1) w))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 2) (6 0))
+    ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w l-1))))
+      (send
+        (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w l-1))))
+      (send
+        (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w l-1)))))
+    ((recv
+       (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w l-1))))
+      (send
+        (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w l-1)))))
+    ((recv (cat (exp (gen) l-1) w)) (send (cat (exp (gen) l-1) w)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 265)
+  (parent 223)
+  (unrealized (0 0) (5 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (6 0)) ((4 1) (1 0)) ((4 1) (7 0)) ((4 2) (3 1))
+    ((5 1) (0 0)) ((6 1) (5 0)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)) ((4 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (6 0)
+    (ch-msg priv-stor-0 (cat pt-2 (pv self l-0))))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv
+       (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l-0)))
+  (label 266)
+  (parent 224)
+  (unrealized (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (gen) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener
+    (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (1 3)) ((4 3) (7 0)) ((5 1) (4 1))
+    ((6 2) (5 0)) ((7 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+        (exp (gen) (mul y x))))
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))) (0 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv
+       (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x))))))
+  (label 267)
+  (parent 229)
+  (unrealized (7 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (7 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (0 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) y) l-0))
+    (exp (gen) (mul y l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv
+       (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0))))
+  (label 268)
+  (parent 230)
+  (unrealized (6 0) (7 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (deflistener (cat (exp (gen) l-0) y))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (7 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (0 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) y))
+    (exp (gen) (mul y l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv
+       (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((recv (cat (exp (gen) l-0) y)) (send (cat (exp (gen) l-0) y))))
+  (label 269)
+  (parent 230)
+  (unrealized (6 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x l (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul l l-1)) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) l) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)) ((9 2) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (8 0)
+    (ch-msg priv-stor (cat pt (pv a l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x l (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x l (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul l l-1)) l-0))
+      (send (cat (exp (gen) (mul l l-1)) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l) l-1)) (send (cat (exp (gen) l) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-1)))
+  (label 270)
+  (parent 235)
+  (unrealized (0 0) (1 3) (4 2) (8 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l))
+      (exp (gen) (mul y x l (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l (rec l-1))) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) l) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (9 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)) ((9 2) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l-0) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (8 0)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l))
+         (exp (gen) (mul y x l (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l))
+          (exp (gen) (mul y x l (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l (rec l-1))) l-0))
+      (send (cat (exp (gen) (mul l (rec l-1))) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l) l-1)) (send (cat (exp (gen) l) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1)))
+  (label 271)
+  (parent 236)
+  (unrealized (0 0) (1 3) (4 2) (8 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta w expt) (x-0 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w x-0 (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w x-0 (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w x-0 (rec l-0)))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 2) (0 0)) ((7 2) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w x-0 (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w x-0 (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w x-0 (rec l-0))))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w x-0 (rec l-0)))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w x-0 (rec l-0))))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 272)
+  (parent 250)
+  (unrealized (0 0) (1 3) (5 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta w expt) (x-0 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w x-0 (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w x-0 (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w x-0 (rec l-0)))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 2) (0 0)) ((7 2) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w x-0 (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w x-0 (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w x-0 (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w x-0 (rec l-0))))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w x-0 (rec l-0)))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w x-0 (rec l-0))))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 273)
+  (parent 250)
+  (unrealized (0 0) (5 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l rndx) (w expt) (x-0 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w x-0))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w x-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 2) (0 0)) ((7 2) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w x-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w x-0)))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w x-0))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w x-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 274)
+  (parent 251)
+  (unrealized (0 0) (1 3) (5 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l rndx) (w expt) (x-0 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w x-0))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w x-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 2) (0 0)) ((7 2) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w x-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w x-0)))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w x-0))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w x-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 275)
+  (parent 251)
+  (unrealized (0 0) (5 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 rndx) (w expt) (x-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w x-0))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w x-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (9 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 2) (0 0))
+    ((7 2) (6 0)) ((8 1) (7 0)) ((9 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (6 0))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w x-0)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w x-0)))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w x-0))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w x-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 276)
+  (parent 252)
+  (unrealized (0 0) (1 3) (5 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 rndx) (w expt) (x-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w x-0))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w x-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (9 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 2) (0 0))
+    ((7 2) (6 0)) ((8 1) (7 0)) ((9 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (6 0))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w x-0)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w x-0))))
+      (send
+        (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w x-0)))))
+    ((recv
+       (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w x-0))))
+      (send
+        (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w x-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 277)
+  (parent 252)
+  (unrealized (0 0) (5 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi w expt) (y l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w y (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w y (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w y (rec l-0)))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 3) (0 0)) ((7 3) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w y (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w y (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w y (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w y (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w y (rec l-0))))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w y (rec l-0)))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w y (rec l-0))))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y)))))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 278)
+  (parent 259)
+  (unrealized (0 0) (1 3) (5 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi w expt) (y l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w y (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w y (rec l-0)))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x w y (rec l-0)))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 3) (0 0)) ((7 3) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w y (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w y (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+              (exp (gen) (mul x w y (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w y (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w y (rec l-0))))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x w y (rec l-0)))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x w y (rec l-0))))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y)))))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 279)
+  (parent 259)
+  (unrealized (0 0) (5 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l rndx) (w expt) (y l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w y))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w y))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w y))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 3) (0 0)) ((7 3) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w y)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w y)))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w y))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w y)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y)))))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 280)
+  (parent 260)
+  (unrealized (0 0) (1 3) (5 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l rndx) (w expt) (y l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w y))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w y))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul x (rec l) w y))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 3) (0 0)) ((7 3) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w y)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+              (exp (gen) (mul x (rec l) w y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w y)))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul x (rec l) w y))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))
+          (exp (gen) (mul x (rec l) w y)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0))
+              (exp (gen) (mul chi y)))))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 281)
+  (parent 260)
+  (unrealized (0 0) (5 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 rndx) (w expt) (y l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w y))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w y))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w y))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (9 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 3) (0 0))
+    ((7 3) (6 0)) ((8 1) (7 0)) ((9 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (precur (6 0))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w y)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w y)))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w y))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w y)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 282)
+  (parent 261)
+  (unrealized (0 0) (1 3) (5 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 rndx) (w expt) (y l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w y))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w y))))
+  (deflistener
+    (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+      (exp (gen) (mul x (rec l-0) w y))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (9 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 3) (0 0))
+    ((7 3) (6 0)) ((8 1) (7 0)) ((9 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (precur (6 0))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w y)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+              (exp (gen) (mul x (rec l-0) w y)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv
+       (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w y))))
+      (send
+        (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w y)))))
+    ((recv
+       (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+         (exp (gen) (mul x (rec l-0) w y))))
+      (send
+        (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))
+          (exp (gen) (mul x (rec l-0) w y)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 283)
+  (parent 261)
+  (unrealized (0 0) (5 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (3 2)) ((1 2) (8 0)) ((2 1) (3 0)) ((2 2) (1 1))
+    ((3 3) (1 3)) ((3 3) (6 0)) ((4 1) (1 0)) ((4 1) (7 0))
+    ((4 2) (3 1)) ((5 1) (0 0)) ((6 1) (5 0)) ((7 2) (6 0))
+    ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)) ((4 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv
+       (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 284)
+  (parent 266)
+  (unrealized (5 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (3 2)) ((1 2) (8 0)) ((2 1) (3 0)) ((2 2) (1 1))
+    ((3 3) (1 3)) ((3 3) (6 0)) ((4 1) (1 0)) ((4 1) (7 0))
+    ((4 2) (3 1)) ((5 1) (0 0)) ((6 1) (5 0)) ((7 2) (6 0))
+    ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)) ((4 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv
+       (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 285)
+  (parent 266)
+  (unrealized (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (gen) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener
+    (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (4 2)) ((1 2) (8 0)) ((2 1) (1 0)) ((2 1) (6 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (1 3)) ((4 3) (7 0))
+    ((5 1) (4 1)) ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv
+       (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 286)
+  (parent 267)
+  (unrealized (7 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (gen) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener
+    (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (4 2)) ((1 2) (8 0)) ((2 1) (1 0)) ((2 1) (6 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (1 3)) ((4 3) (7 0))
+    ((5 1) (4 1)) ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv
+       (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 287)
+  (parent 267)
+  (unrealized (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (7 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 1) (8 0))
+    ((5 2) (4 0)) ((6 1) (0 0)) ((7 1) (6 0)) ((8 2) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)) ((5 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (7 0)
+    (ch-msg priv-stor-0 (cat pt-2 (pv self l-0))))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv
+       (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l-0)))
+  (label 288)
+  (parent 268)
+  (unrealized (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((3 2) (8 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 10 3 ltx-gen 3) (exp (gen) l-1)
+    (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l) l-1))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l) l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0)))
+  (label 289)
+  (parent 270)
+  (unrealized (0 0) (1 3) (4 2))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx)
+    (w expt))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x l (rec l-0)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x l (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul l l-1)) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) l) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (deflistener (cat (exp (gen) (mul l (rec w))) w))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)) ((9 2) (8 0))
+    ((10 1) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (precur (10 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l (rec w))) w)) (exp (gen) l)
+    (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x l (rec l-0)))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x l (rec l-0))))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-0))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul l l-1)) l-0))
+      (send (cat (exp (gen) (mul l l-1)) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l) l-1)) (send (cat (exp (gen) l) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul l (rec w))) w))
+      (send (cat (exp (gen) (mul l (rec w))) w))))
+  (label 290)
+  (parent 270)
+  (unrealized (0 0) (1 3) (4 2) (10 0))
+  (comment "8 in cohort - 8 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l-0) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((3 2) (8 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 10 3 ltx-gen 3) (exp (gen) l-1)
+    (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l-0) l-1)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0)))
+  (label 291)
+  (parent 271)
+  (unrealized (0 0) (1 3) (4 2))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx)
+    (w expt))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l))
+      (exp (gen) (mul y x l (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l (rec l-1))) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) l) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l (rec w))) w))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (9 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)) ((9 2) (8 0))
+    ((10 1) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (10 0))
+  (gen-st (pv a l-0) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l (rec w))) w)) (exp (gen) l)
+    (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l))
+         (exp (gen) (mul y x l (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l))
+          (exp (gen) (mul y x l (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l))
+              (exp (gen) (mul y x l (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l (rec l-1))) l-0))
+      (send (cat (exp (gen) (mul l (rec l-1))) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l) l-1)) (send (cat (exp (gen) l) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul l (rec w))) w))
+      (send (cat (exp (gen) (mul l (rec w))) w))))
+  (label 292)
+  (parent 271)
+  (unrealized (0 0) (1 3) (4 2) (10 0))
+  (comment "8 in cohort - 8 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (3 2)) ((1 2) (9 0)) ((2 1) (3 0)) ((2 2) (1 1))
+    ((3 3) (1 3)) ((3 3) (7 0)) ((4 1) (3 1)) ((5 1) (1 0))
+    ((5 1) (8 0)) ((5 2) (4 0)) ((6 1) (0 0)) ((7 1) (6 0))
+    ((8 2) (7 0)) ((9 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)) ((5 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv
+       (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 293)
+  (parent 288)
+  (unrealized (6 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+      (exp (gen) (mul y x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (3 2)) ((1 2) (9 0)) ((2 1) (3 0)) ((2 2) (1 1))
+    ((3 3) (1 3)) ((3 3) (7 0)) ((4 1) (3 1)) ((5 1) (1 0))
+    ((5 1) (8 0)) ((5 2) (4 0)) ((6 1) (0 0)) ((7 1) (6 0))
+    ((8 2) (7 0)) ((9 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)) ((5 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+              (exp (gen) (mul y x)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv
+       (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+         (exp (gen) (mul y x))))
+      (send
+        (cat (exp (gen) (mul y l-0)) (exp (gen) (mul x l))
+          (exp (gen) (mul y x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 294)
+  (parent 288)
+  (unrealized (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul x (rec l))) l-1))
+  (precedes ((1 2) (10 0)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((3 2) (8 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x (rec l))) l-1))
+    (exp (gen) (mul x (rec l) l-1)) (4 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l) l-1))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l) l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul x (rec l))) l-1))
+      (send (cat (exp (gen) (mul x (rec l))) l-1))))
+  (label 295)
+  (parent 289)
+  (unrealized (0 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul x l-1)) l))
+  (precedes ((1 2) (10 0)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((3 2) (8 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((5 1) (10 0)) ((6 1) (4 1)) ((7 2) (6 0))
+    ((8 1) (6 0)) ((9 2) (8 0)) ((10 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) (mul x l-1)) l))
+    (exp (gen) (mul x (rec l) l-1)) (4 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l) l-1))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l) l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul x l-1)) l))
+      (send (cat (exp (gen) (mul x l-1)) l))))
+  (label 296)
+  (parent 289)
+  (seen 317)
+  (seen-ops
+    (317
+      (operation nonce-test (added-strand ltx-disclose 3) l-1 (10 0)
+        (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+      (strand-map 0 1 2 3 4 5 6 7 8 9 10)))
+  (unrealized (0 0) (1 3) (10 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l) l-1)) x))
+  (precedes ((1 2) (10 0)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((3 2) (8 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul (rec l) l-1)) x))
+    (exp (gen) (mul x (rec l) l-1)) (4 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l) l-1))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l) l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul (rec l) l-1)) x))
+      (send (cat (exp (gen) (mul (rec l) l-1)) x))))
+  (label 297)
+  (parent 289)
+  (unrealized (0 0) (1 3) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 l-1 rndx) (alpha chi expt) (l-2 y-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-2)) (exp (gen) (mul x l-2))
+      (exp (gen) (mul y x (rec l) l-2))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-2) (eta (mul y (rec l) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-2))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-2)) (chi (mul x (rec l) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-2)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-2) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) y-0) (mul l-2 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-2) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)) ((9 2) (8 0))
+    ((10 1) (8 0)) ((11 3) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-2)
+  (uniq-gen y x y-0)
+  (absent (y (mul x (rec l) l-2)) (y (mul (rec l) l-0 l-2)) (y l)
+    (x l-0) (x l-2) (y-0 l-1) (y-0 alpha) (y-0 chi))
+  (precur (10 0))
+  (gen-st (pv a l-0) (pv b l) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l-2))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y-0) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-2)) (exp (gen) (mul x l-2))
+         (exp (gen) (mul y x (rec l) l-2))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-2))
+          (exp (gen) (mul x l-2)) (exp (gen) (mul y x (rec l) l-2)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-2))
+              (exp (gen) (mul x l-2))
+              (exp (gen) (mul y x (rec l) l-2)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-2)))
+      (send
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-2)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-2))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-2))
+              (exp (gen) (mul x l-2))
+              (exp (gen) (mul y x (rec l) l-2)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-2)) l))
+      (send (cat (exp (gen) (mul l-0 l-2)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-2) l-0)) (send (cat (exp (gen) l-2) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) y-0) (mul l-2 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-2 (rec y-0)))))
+    ((load priv-stor-2 (cat pt-7 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul l-1 chi))
+              (exp (gen) (mul chi y-0))))))))
+  (label 298)
+  (parent 290)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0) (11 0))
+  (comment "4 in cohort - 4 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 l-1 rndx) (beta expt) (l-2 x-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-2)) (exp (gen) (mul x l-2))
+      (exp (gen) (mul y x (rec l) l-2))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-2) (eta (mul y (rec l) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-2))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-2)) (chi (mul x (rec l) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-2)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-2) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) x-0) (mul l-2 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-2)
+    (l l-1) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)) ((9 2) (8 0))
+    ((10 1) (8 0)) ((11 2) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-2)
+  (uniq-gen y x x-0)
+  (absent (y (mul x (rec l) l-2)) (y (mul (rec l) l-0 l-2)) (y l)
+    (x l-0) (x l-2) (x-0 l-1) (x-0 beta))
+  (precur (10 0))
+  (gen-st (pv a l-0) (pv b l) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l-2))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-2)) (exp (gen) (mul x l-2))
+         (exp (gen) (mul y x (rec l) l-2))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-2))
+          (exp (gen) (mul x l-2)) (exp (gen) (mul y x (rec l) l-2)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-2))
+              (exp (gen) (mul x l-2))
+              (exp (gen) (mul y x (rec l) l-2)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-2)))
+      (send
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-2)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-2))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-2))
+              (exp (gen) (mul x l-2))
+              (exp (gen) (mul y x (rec l) l-2)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-2)) l))
+      (send (cat (exp (gen) (mul l-0 l-2)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-2) l-0)) (send (cat (exp (gen) l-2) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x-0) (mul l-2 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-2 (rec x-0)))))
+    ((load priv-stor-2 (cat pt-7 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 299)
+  (parent 290)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0) (11 0))
+  (comment "4 in cohort - 4 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (gen) l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 1) (10 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (precur (10 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (contracted (l-2 l-1) (w l-1)) (gen) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l) l-1))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l) l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (gen) l-1)) (send (cat (gen) l-1))))
+  (label 300)
+  (parent 290)
+  (unrealized (0 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y l l-0 l-1 x rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul l-1 x))
+      (exp (gen) (mul y (rec l) l-1 x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul (rec l) l-1 x)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) x) (mul l-1 (rec x))))
+  (precedes ((1 2) (10 0)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)) ((9 2) (8 0))
+    ((10 1) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul (rec l) l-0 l-1)) (y (mul (rec l) l-1 x)) (y l)
+    (x l-0) (x l-1))
+  (precur (10 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 11 1 init 3) (exp (gen) x-0) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul l-1 x))
+         (exp (gen) (mul y (rec l) l-1 x))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul l-1 x)) (exp (gen) (mul y (rec l) l-1 x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul l-1 x))
+              (exp (gen) (mul y (rec l) l-1 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul (rec l) l-1 x))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul l-1 x))
+              (exp (gen) (mul y (rec l) l-1 x)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x) (mul l-1 (rec x))))
+      (send (cat (exp (gen) x) (mul l-1 (rec x))))))
+  (label 301)
+  (parent 290)
+  (unrealized (0 0) (1 3) (4 2) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) l-1) (one)))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((3 2) (10 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (precur (10 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 11 3 ltx-gen 3) (exp (gen) l-2)
+    (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l) l-1))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l) l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) (one)))
+      (send (cat (exp (gen) l-1) (one)))))
+  (label 302)
+  (parent 290)
+  (unrealized (0 0) (1 3) (4 2))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x (rec l) l-0))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-1) (l l-1) (x x) (beta l-0)
+    (eta (mul y (rec l) l-0)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (y y) (alpha (mul (rec l) l-0 l-1))
+    (chi (mul x (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (3 2)) ((2 2) (1 1)) ((3 3) (0 0)) ((3 3) (1 3))
+    ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1)) ((6 2) (5 0))
+    ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0)) ((10 1) (1 0))
+    ((10 1) (8 0)) ((10 2) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-0)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (precur (9 0))
+  (gen-st (pv b l) (pv self l-1))
+  (facts (neq b self) (neq self b) (undisclosed l-0))
+  (leads-to ((4 1) (3 0)) ((4 1) (6 0)) ((10 1) (1 0)) ((10 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 2 11 ltx-gen 3) (exp (gen) l-2)
+    (10 0))
+  (strand-map 0 1 10 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x (rec l) l-0))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x (rec l) l-0)))))
+    ((load priv-stor-1 (cat pt-6 (pv self l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-0))
+          (enc na nb self b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-1 (pv b l)))
+      (recv
+        (sig
+          (body self (exp (gen) (mul (rec l) l-0 l-1))
+            (pubk "sig" self)) (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor-0 (cat pt-2 ignore-0))
+      (stor priv-stor-0 (cat pt-1 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-0 (cat pt-1 (pv b l)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-6 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-4 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul l-0 (rec l-1)))))
+    ((load priv-stor-1 (cat pt-5 ignore-1))
+      (stor priv-stor-1 (cat pt-6 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 303)
+  (parent 290)
+  (unrealized (0 0) (1 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b self) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b self)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)) ((6 2) (5 0))
+    ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0)) ((10 1) (4 0))
+    ((10 1) (6 0)) ((10 2) (9 0)))
+  (non-orig (privk "sig" self))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (9 0))
+  (gen-st (pv a l) (pv self l-1))
+  (facts (neq self a) (neq a self) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((10 1) (4 0)) ((10 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 5 11 ltx-gen 3) (exp (gen) l-2)
+    (10 0))
+  (strand-map 0 1 2 3 4 10 5 6 7 8 9)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (send (cat na a self (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a self
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor-1 (cat pt-6 (pv self l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a self (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a self
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-6 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-3 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-4 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul l-0 (rec l-1)))))
+    ((load priv-stor-1 (cat pt-5 ignore-1))
+      (stor priv-stor-1 (cat pt-6 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 304)
+  (parent 290)
+  (unrealized (0 0) (1 3) (4 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb data)
+    (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 l-1 l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) l-2) (mul l-1 (rec l-2))))
+  (defstrand ltx-gen 3 (ignore ignore-2) (self self)
+    (priv-stor priv-stor-2) (l l-2))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)) ((9 2) (8 0))
+    ((10 1) (8 0)) ((11 2) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1 l-2)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (precur (10 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-2) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l) l-1))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l) l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-2) (mul l-1 (rec l-2))))
+      (send (cat (exp (gen) l-2) (mul l-1 (rec l-2)))))
+    ((load priv-stor-2 (cat pt-7 ignore-2))
+      (stor priv-stor-2 (cat pt-8 (pv self l-2)))
+      (send
+        (sig (body self (exp (gen) l-2) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 305)
+  (parent 290)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l-0) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul x (rec l-0))) l-1))
+  (precedes ((1 2) (10 0)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((3 2) (8 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x (rec l-0))) l-1))
+    (exp (gen) (mul x (rec l-0) l-1)) (4 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l-0) l-1)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul x (rec l-0))) l-1))
+      (send (cat (exp (gen) (mul x (rec l-0))) l-1))))
+  (label 306)
+  (parent 291)
+  (unrealized (0 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l-0) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul x l-1)) l-0))
+  (precedes ((1 2) (10 0)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((3 2) (8 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((5 1) (10 0)) ((6 1) (4 1)) ((7 2) (6 0))
+    ((8 1) (6 0)) ((9 2) (8 0)) ((10 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x l-1)) l-0))
+    (exp (gen) (mul x (rec l-0) l-1)) (4 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l-0) l-1)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul x l-1)) l-0))
+      (send (cat (exp (gen) (mul x l-1)) l-0))))
+  (label 307)
+  (parent 291)
+  (seen 329)
+  (seen-ops
+    (329
+      (operation nonce-test (added-strand ltx-disclose 3) l-1 (10 0)
+        (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+      (strand-map 0 1 2 3 4 5 6 7 8 9 10)))
+  (unrealized (0 0) (1 3) (10 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l-0) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) x))
+  (precedes ((1 2) (10 0)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((3 2) (8 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul (rec l-0) l-1)) x))
+    (exp (gen) (mul x (rec l-0) l-1)) (4 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l-0) l-1)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) x))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) x))))
+  (label 308)
+  (parent 291)
+  (unrealized (0 0) (1 3) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 l-1 rndx) (alpha chi expt) (l-2 y-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-2)) (exp (gen) (mul x l-2))
+      (exp (gen) (mul y x (rec l-0) l-2))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-2) (eta (mul y (rec l-0) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-2))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-2))
+    (chi (mul x (rec l-0) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-2)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-2) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) y-0) (mul l-2 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-2) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (9 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)) ((9 2) (8 0))
+    ((10 1) (8 0)) ((11 3) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-2)
+  (uniq-gen y x y-0)
+  (absent (y (mul x (rec l-0) l-2)) (y (mul l (rec l-0) l-2)) (y l-0)
+    (x l) (x l-2) (y-0 l-1) (y-0 alpha) (y-0 chi))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l-2))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y-0) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-2)) (exp (gen) (mul x l-2))
+         (exp (gen) (mul y x (rec l-0) l-2))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-2))
+          (exp (gen) (mul x l-2)) (exp (gen) (mul y x (rec l-0) l-2)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-2))
+              (exp (gen) (mul x l-2))
+              (exp (gen) (mul y x (rec l-0) l-2)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-2)))
+      (send
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-2)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-2))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-2))
+              (exp (gen) (mul x l-2))
+              (exp (gen) (mul y x (rec l-0) l-2)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-2)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-2)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-2) l-0)) (send (cat (exp (gen) l-2) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) y-0) (mul l-2 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-2 (rec y-0)))))
+    ((load priv-stor-2 (cat pt-7 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul l-1 chi))
+              (exp (gen) (mul chi y-0))))))))
+  (label 309)
+  (parent 292)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0) (11 0))
+  (comment "4 in cohort - 4 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 l-1 rndx) (beta expt) (l-2 x-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-2)) (exp (gen) (mul x l-2))
+      (exp (gen) (mul y x (rec l-0) l-2))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-2) (eta (mul y (rec l-0) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-2))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-2))
+    (chi (mul x (rec l-0) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-2)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-2) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) x-0) (mul l-2 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-2)
+    (l l-1) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (9 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)) ((9 2) (8 0))
+    ((10 1) (8 0)) ((11 2) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-2)
+  (uniq-gen y x x-0)
+  (absent (y (mul x (rec l-0) l-2)) (y (mul l (rec l-0) l-2)) (y l-0)
+    (x l) (x l-2) (x-0 l-1) (x-0 beta))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l-2))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-2)) (exp (gen) (mul x l-2))
+         (exp (gen) (mul y x (rec l-0) l-2))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-2))
+          (exp (gen) (mul x l-2)) (exp (gen) (mul y x (rec l-0) l-2)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-2))
+              (exp (gen) (mul x l-2))
+              (exp (gen) (mul y x (rec l-0) l-2)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-2)))
+      (send
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-2)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-2))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-2))
+              (exp (gen) (mul x l-2))
+              (exp (gen) (mul y x (rec l-0) l-2)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-2)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-2)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-2) l-0)) (send (cat (exp (gen) l-2) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x-0) (mul l-2 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-2 (rec x-0)))))
+    ((load priv-stor-2 (cat pt-7 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 310)
+  (parent 292)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0) (11 0))
+  (comment "4 in cohort - 4 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l-0) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (gen) l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (10 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (contracted (l-2 l-1) (w l-1)) (gen) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l-0) l-1)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (gen) l-1)) (send (cat (gen) l-1))))
+  (label 311)
+  (parent 292)
+  (unrealized (0 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y l l-0 l-1 x rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul l-1 x))
+      (exp (gen) (mul y (rec l) l-1 x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul (rec l) l-1 x)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul (rec l) l-1)) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) l-1) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) x) (mul l-1 (rec x))))
+  (precedes ((1 2) (10 0)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (9 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)) ((9 2) (8 0))
+    ((10 1) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul (rec l) l-0 l-1)) (y (mul (rec l) l-1 x)) (y l)
+    (x l-0) (x l-1))
+  (precur (10 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 11 1 init 3) (exp (gen) x-0) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul l-1 x))
+         (exp (gen) (mul y (rec l) l-1 x))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul l-1 x)) (exp (gen) (mul y (rec l) l-1 x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul l-1 x))
+              (exp (gen) (mul y (rec l) l-1 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul (rec l) l-1 x))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul l-1 x))
+              (exp (gen) (mul y (rec l) l-1 x)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul (rec l) l-1)) l-0))
+      (send (cat (exp (gen) (mul (rec l) l-1)) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) l)) (send (cat (exp (gen) l-1) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) x) (mul l-1 (rec x))))
+      (send (cat (exp (gen) x) (mul l-1 (rec x))))))
+  (label 312)
+  (parent 292)
+  (unrealized (0 0) (1 3) (4 2) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l-0) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) l-1) (one)))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((3 2) (10 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 11 3 ltx-gen 3) (exp (gen) l-2)
+    (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l-0) l-1)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) (one)))
+      (send (cat (exp (gen) l-1) (one)))))
+  (label 313)
+  (parent 292)
+  (unrealized (0 0) (1 3) (4 2))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x (rec l) l-0))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-1) (l l-1) (x x) (beta l-0)
+    (eta (mul y (rec l) l-0)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (y y) (alpha (mul (rec l) l-0 l-1))
+    (chi (mul x (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) (mul (rec l) l-0)) l-1))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (3 2)) ((2 2) (1 1)) ((3 3) (0 0)) ((3 3) (1 3))
+    ((4 1) (3 0)) ((4 1) (8 0)) ((5 1) (3 1)) ((6 2) (5 0))
+    ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0)) ((10 1) (1 0))
+    ((10 1) (6 0)) ((10 2) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-0)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (precur (9 0))
+  (gen-st (pv b l) (pv self l-1))
+  (facts (neq b self) (neq self b) (undisclosed l-0))
+  (leads-to ((4 1) (3 0)) ((4 1) (8 0)) ((10 1) (1 0)) ((10 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 2 11 ltx-gen 3) (exp (gen) l-2)
+    (10 0))
+  (strand-map 0 1 10 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x (rec l) l-0))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x (rec l) l-0)))))
+    ((load priv-stor-1 (cat pt-6 (pv self l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-0))
+          (enc na nb self b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-1 (pv b l)))
+      (recv
+        (sig
+          (body self (exp (gen) (mul (rec l) l-0 l-1))
+            (pubk "sig" self)) (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor-0 (cat pt-2 ignore-0))
+      (stor priv-stor-0 (cat pt-1 (pv b l))))
+    ((recv (cat (exp (gen) (mul (rec l) l-0)) l-1))
+      (send (cat (exp (gen) (mul (rec l) l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-6 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-3 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor-0 (cat pt-1 (pv b l)))
+      (stor priv-stor-0 (cat pt-4 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul l-0 (rec l-1)))))
+    ((load priv-stor-1 (cat pt-5 ignore-1))
+      (stor priv-stor-1 (cat pt-6 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 314)
+  (parent 292)
+  (unrealized (0 0) (1 3) (3 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b self) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b self)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)) ((6 2) (5 0))
+    ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (7 0)) ((10 1) (4 0))
+    ((10 1) (8 0)) ((10 2) (9 0)))
+  (non-orig (privk "sig" self))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (9 0))
+  (gen-st (pv a l) (pv self l-1))
+  (facts (neq self a) (neq a self) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((10 1) (4 0)) ((10 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 5 11 ltx-gen 3) (exp (gen) l-2)
+    (10 0))
+  (strand-map 0 1 2 3 4 10 5 6 7 8 9)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (send (cat na a self (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a self
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor-1 (cat pt-6 (pv self l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a self (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a self
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-3 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-6 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-4 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul l-0 (rec l-1)))))
+    ((load priv-stor-1 (cat pt-5 ignore-1))
+      (stor priv-stor-1 (cat pt-6 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 315)
+  (parent 292)
+  (unrealized (0 0) (1 3) (4 2) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb data)
+    (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 l-1 l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l-0) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) l-2) (mul l-1 (rec l-2))))
+  (defstrand ltx-gen 3 (ignore ignore-2) (self self)
+    (priv-stor priv-stor-2) (l l-2))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (9 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)) ((9 2) (8 0))
+    ((10 1) (8 0)) ((11 2) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1 l-2)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-2) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l-0) l-1)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-2) (mul l-1 (rec l-2))))
+      (send (cat (exp (gen) l-2) (mul l-1 (rec l-2)))))
+    ((load priv-stor-2 (cat pt-7 ignore-2))
+      (stor priv-stor-2 (cat pt-8 (pv self l-2)))
+      (send
+        (sig (body self (exp (gen) l-2) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 316)
+  (parent 292)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (precedes ((1 2) (10 0)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((3 2) (8 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((7 2) (10 0))
+    ((8 1) (6 0)) ((9 2) (8 0)) ((10 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 11 7 ltx-disclose 3) l-1 (10 0)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1))))
+  (label 317)
+  (parent 296)
+  (unrealized (0 0) (1 3) (10 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 rndx)
+    (alpha chi expt) (y-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) y-0) (mul (rec y-0) l-1)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 1) (11 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)) ((11 3) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen y x y-0)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1) (y-0 alpha) (y-0 chi) (y-0 l-1))
+  (precur (10 0))
+  (gen-st (pv a l-0) (pv b l) (pv b l-1))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((3 1) (11 0)) ((5 1) (4 0))
+    ((5 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 12 3 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv b-0 l-2))) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l) l-1))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l) l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) y-0) (mul (rec y-0) l-1)))
+      (send (cat (exp (gen) y-0) (mul (rec y-0) l-1))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y-0))))))))
+  (label 318)
+  (parent 298)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx)
+    (alpha chi expt) (l-0 y-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x (rec l) l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-0) (eta (mul y (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (deflistener (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((2 1) (11 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)) ((11 3) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen y x y-0)
+  (absent (y (mul x (rec l) l-0)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1) (y-0 alpha) (y-0 chi) (y-0 l-1))
+  (precur (10 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((2 1) (11 0)) ((5 1) (4 0))
+    ((5 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 12 2 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv b-0 l-2))) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x (rec l) l-0))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x (rec l) l-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-0 (rec y-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y-0))))))))
+  (label 319)
+  (parent 298)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx)
+    (alpha chi expt) (l-0 y-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-1) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((5 1) (11 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)) ((11 3) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen y x y-0)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0) (y-0 alpha) (y-0 chi) (y-0 l-1))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((5 1) (11 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 12 5 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv b-0 l-2))) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-0 (rec y-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y-0))))))))
+  (label 320)
+  (parent 298)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 rndx) (alpha chi expt) (l-1 y-0 l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-2) (l l-2) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-2) (self b-0)
+    (priv-stor priv-stor-2) (l l-2))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)) ((9 2) (8 0))
+    ((10 1) (8 0)) ((11 3) (10 0)) ((12 1) (11 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1 l-2)
+  (uniq-gen y x y-0)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1) (y-0 alpha) (y-0 chi) (y-0 l-2))
+  (precur (10 0))
+  (gen-st (pv a l-0) (pv b l) (pv b-0 l-2))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((12 1) (11 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv b-0 l-2))) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l) l-1))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l) l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-1 (rec y-0)))))
+    ((load priv-stor-2 (cat pt-7 (pv b-0 l-2)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-2))
+              (exp (gen) (mul chi y-0)))))))
+    ((load priv-stor-2 (cat pt-8 ignore-2))
+      (stor priv-stor-2 (cat pt-7 (pv b-0 l-2)))))
+  (label 321)
+  (parent 298)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 rndx)
+    (beta expt) (x-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) x-0) (mul (rec x-0) l-1)))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-1) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 1) (11 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)) ((11 2) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen y x x-0)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1) (x-0 beta) (x-0 l-1))
+  (precur (10 0))
+  (gen-st (pv a l-0) (pv b l) (pv b l-1))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((3 1) (11 0)) ((5 1) (4 0))
+    ((5 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 12 3 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv a-0 l-2))) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l) l-1))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l) l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x-0) (mul (rec x-0) l-1)))
+      (send (cat (exp (gen) x-0) (mul (rec x-0) l-1))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 322)
+  (parent 299)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x (rec l) l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-0) (eta (mul y (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (deflistener (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-1) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((2 1) (11 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)) ((11 2) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen y x x-0)
+  (absent (y (mul x (rec l) l-0)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1) (x-0 beta) (x-0 l-1))
+  (precur (10 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((2 1) (11 0)) ((5 1) (4 0))
+    ((5 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 12 2 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv a-0 l-2))) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x (rec l) l-0))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x (rec l) l-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-0 (rec x-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 323)
+  (parent 299)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((5 1) (11 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)) ((11 2) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen y x x-0)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((5 1) (11 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 12 5 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv a-0 l-2))) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-0 (rec x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 324)
+  (parent 299)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 rndx) (beta expt) (l-1 x-0 l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-2)
+    (l l-2) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-2) (self a-0)
+    (priv-stor priv-stor-2) (l l-2))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)) ((9 2) (8 0))
+    ((10 1) (8 0)) ((11 2) (10 0)) ((12 1) (11 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1 l-2)
+  (uniq-gen y x x-0)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1) (x-0 beta) (x-0 l-2))
+  (precur (10 0))
+  (gen-st (pv a l-0) (pv b l) (pv a-0 l-2))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((12 1) (11 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv a-0 l-2))) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l) l-1))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l) l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-1 (rec x-0)))))
+    ((load priv-stor-2 (cat pt-7 (pv a-0 l-2)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-2 (cat pt-8 ignore-2))
+      (stor priv-stor-2 (cat pt-7 (pv a-0 l-2)))))
+  (label 325)
+  (parent 299)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) l-1) (one)))
+  (deflistener (cat (exp (gen) (mul x (rec l))) l-1))
+  (precedes ((1 2) (11 0)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((3 2) (10 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)) ((11 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (precur (10 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x (rec l))) l-1))
+    (exp (gen) (mul x (rec l) l-1)) (4 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l) l-1))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l) l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) (one)))
+      (send (cat (exp (gen) l-1) (one))))
+    ((recv (cat (exp (gen) (mul x (rec l))) l-1))
+      (send (cat (exp (gen) (mul x (rec l))) l-1))))
+  (label 326)
+  (parent 302)
+  (unrealized (0 0) (11 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) l-1) (one)))
+  (deflistener (cat (exp (gen) (mul x l-1)) l))
+  (precedes ((1 2) (11 0)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((3 2) (10 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((5 1) (11 0)) ((6 1) (4 1)) ((7 2) (6 0))
+    ((8 1) (6 0)) ((9 2) (8 0)) ((10 1) (8 0)) ((11 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (precur (10 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) (mul x l-1)) l))
+    (exp (gen) (mul x (rec l) l-1)) (4 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l) l-1))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l) l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) (one)))
+      (send (cat (exp (gen) l-1) (one))))
+    ((recv (cat (exp (gen) (mul x l-1)) l))
+      (send (cat (exp (gen) (mul x l-1)) l))))
+  (label 327)
+  (parent 302)
+  (seen 343)
+  (seen-ops
+    (343
+      (operation nonce-test (added-strand ltx-disclose 3) l-1 (11 0)
+        (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+      (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)))
+  (unrealized (0 0) (1 3) (11 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) l-1) (one)))
+  (deflistener (cat (exp (gen) (mul (rec l) l-1)) x))
+  (precedes ((1 2) (11 0)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((3 2) (10 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)) ((11 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1))
+  (precur (10 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul (rec l) l-1)) x))
+    (exp (gen) (mul x (rec l) l-1)) (4 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l) l-1))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l) l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) l))
+      (send (cat (exp (gen) (mul l-0 l-1)) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) (one)))
+      (send (cat (exp (gen) l-1) (one))))
+    ((recv (cat (exp (gen) (mul (rec l) l-1)) x))
+      (send (cat (exp (gen) (mul (rec l) l-1)) x))))
+  (label 328)
+  (parent 302)
+  (unrealized (0 0) (1 3) (11 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (precedes ((1 2) (10 0)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((3 2) (8 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((9 2) (10 0)) ((10 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 11 9 ltx-disclose 3) l-1 (10 0)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1))))
+  (label 329)
+  (parent 307)
+  (unrealized (0 0) (1 3) (10 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 rndx)
+    (alpha chi expt) (y-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l-0) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) y-0) (mul (rec y-0) l-1)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (11 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)) ((11 3) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen y x y-0)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1) (y-0 alpha) (y-0 chi) (y-0 l-1))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-0) (pv b l-1))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (11 0)) ((5 1) (4 0))
+    ((5 1) (9 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 12 3 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv b-0 l-2))) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l-0) l-1)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) y-0) (mul (rec y-0) l-1)))
+      (send (cat (exp (gen) y-0) (mul (rec y-0) l-1))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y-0))))))))
+  (label 330)
+  (parent 309)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx)
+    (alpha chi expt) (l-0 y-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x (rec l) l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-0) (eta (mul y (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul (rec l) l-0)) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((2 1) (11 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)) ((11 3) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen y x y-0)
+  (absent (y (mul x (rec l) l-0)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1) (y-0 alpha) (y-0 chi) (y-0 l-1))
+  (precur (10 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((2 1) (11 0)) ((5 1) (4 0))
+    ((5 1) (9 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 12 2 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv b-0 l-2))) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x (rec l) l-0))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x (rec l) l-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul (rec l) l-0)) l-1))
+      (send (cat (exp (gen) (mul (rec l) l-0)) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-0 (rec y-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y-0))))))))
+  (label 331)
+  (parent 309)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx)
+    (alpha chi expt) (l-0 y-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-1) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (9 0))
+    ((5 1) (11 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)) ((11 3) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen y x y-0)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0) (y-0 alpha) (y-0 chi) (y-0 l-1))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0))
+    ((5 1) (11 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 12 5 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv b-0 l-2))) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-0 (rec y-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-1))
+              (exp (gen) (mul chi y-0))))))))
+  (label 332)
+  (parent 309)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 rndx) (alpha chi expt) (l-1 y-0 l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l-0) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-2) (l l-2) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-2) (self b-0)
+    (priv-stor priv-stor-2) (l l-2))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (9 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)) ((9 2) (8 0))
+    ((10 1) (8 0)) ((11 3) (10 0)) ((12 1) (11 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1 l-2)
+  (uniq-gen y x y-0)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1) (y-0 alpha) (y-0 chi) (y-0 l-2))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-0) (pv b-0 l-2))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0))
+    ((12 1) (11 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv b-0 l-2))) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l-0) l-1)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-1 (rec y-0)))))
+    ((load priv-stor-2 (cat pt-7 (pv b-0 l-2)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0)) (exp (gen) (mul chi l-2))
+              (exp (gen) (mul chi y-0)))))))
+    ((load priv-stor-2 (cat pt-8 ignore-2))
+      (stor priv-stor-2 (cat pt-7 (pv b-0 l-2)))))
+  (label 333)
+  (parent 309)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 rndx)
+    (beta expt) (x-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l-0) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) x-0) (mul (rec x-0) l-1)))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-1) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (11 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)) ((11 2) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen y x x-0)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1) (x-0 beta) (x-0 l-1))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-0) (pv b l-1))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (11 0)) ((5 1) (4 0))
+    ((5 1) (9 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 12 3 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv a-0 l-2))) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l-0) l-1)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x-0) (mul (rec x-0) l-1)))
+      (send (cat (exp (gen) x-0) (mul (rec x-0) l-1))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 334)
+  (parent 310)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x (rec l) l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-0) (eta (mul y (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l) (y y) (alpha (mul (rec l) l-0 l-1)) (chi (mul x (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) (mul (rec l) l-0)) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l))
+  (deflistener (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-1) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((2 1) (11 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)) ((11 2) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen y x x-0)
+  (absent (y (mul x (rec l) l-0)) (y (mul (rec l) l-0 l-1)) (y l)
+    (x l-0) (x l-1) (x-0 beta) (x-0 l-1))
+  (precur (10 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((2 1) (11 0)) ((5 1) (4 0))
+    ((5 1) (9 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 12 2 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv a-0 l-2))) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) l-0 l-1)) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x (rec l) l-0))))
+      (send
+        (hash (exp (gen) (mul y (rec l) l-0 l-1))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x (rec l) l-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) l-0 l-1))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x (rec l) l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l))))
+    ((recv (cat (exp (gen) (mul (rec l) l-0)) l-1))
+      (send (cat (exp (gen) (mul (rec l) l-0)) l-1)))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor-1 (cat pt-3 (pv b l)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-0 (rec x-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 335)
+  (parent 310)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (9 0))
+    ((5 1) (11 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)) ((11 2) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen y x x-0)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0))
+    ((5 1) (11 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 12 5 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv a-0 l-2))) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-0 (rec x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 336)
+  (parent 310)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 rndx) (beta expt) (l-1 x-0 l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l-0) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-2)
+    (l l-2) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-2) (self a-0)
+    (priv-stor priv-stor-2) (l l-2))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (9 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)) ((9 2) (8 0))
+    ((10 1) (8 0)) ((11 2) (10 0)) ((12 1) (11 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1 l-2)
+  (uniq-gen y x x-0)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1) (x-0 beta) (x-0 l-2))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-0) (pv a-0 l-2))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0))
+    ((12 1) (11 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-7 (pv a-0 l-2))) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l-0) l-1)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-1 (rec x-0)))))
+    ((load priv-stor-2 (cat pt-7 (pv a-0 l-2)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-2 (cat pt-8 ignore-2))
+      (stor priv-stor-2 (cat pt-7 (pv a-0 l-2)))))
+  (label 337)
+  (parent 310)
+  (unrealized (0 0) (1 3) (4 2) (8 0) (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l-0) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) l-1) (one)))
+  (deflistener (cat (exp (gen) (mul x (rec l-0))) l-1))
+  (precedes ((1 2) (11 0)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((3 2) (10 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)) ((11 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x (rec l-0))) l-1))
+    (exp (gen) (mul x (rec l-0) l-1)) (4 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l-0) l-1)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) (one)))
+      (send (cat (exp (gen) l-1) (one))))
+    ((recv (cat (exp (gen) (mul x (rec l-0))) l-1))
+      (send (cat (exp (gen) (mul x (rec l-0))) l-1))))
+  (label 338)
+  (parent 313)
+  (unrealized (0 0) (11 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l-0) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) l-1) (one)))
+  (deflistener (cat (exp (gen) (mul x l-1)) l-0))
+  (precedes ((1 2) (11 0)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((3 2) (10 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((5 1) (11 0)) ((6 1) (4 1)) ((7 2) (6 0))
+    ((8 1) (6 0)) ((9 2) (8 0)) ((10 1) (8 0)) ((11 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x l-1)) l-0))
+    (exp (gen) (mul x (rec l-0) l-1)) (4 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l-0) l-1)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) (one)))
+      (send (cat (exp (gen) l-1) (one))))
+    ((recv (cat (exp (gen) (mul x l-1)) l-0))
+      (send (cat (exp (gen) (mul x l-1)) l-0))))
+  (label 339)
+  (parent 313)
+  (seen 346)
+  (seen-ops
+    (346
+      (operation nonce-test (added-strand ltx-disclose 3) l-1 (11 0)
+        (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+      (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)))
+  (unrealized (0 0) (1 3) (11 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+      (exp (gen) (mul y x (rec l-0) l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-0) (y y) (alpha (mul l (rec l-0) l-1))
+    (chi (mul x (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) l-1) (one)))
+  (deflistener (cat (exp (gen) (mul (rec l-0) l-1)) x))
+  (precedes ((1 2) (11 0)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((3 2) (10 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((10 1) (8 0)) ((11 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l-0) l-1)) (y (mul l (rec l-0) l-1)) (y l-0)
+    (x l) (x l-1))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul (rec l-0) l-1)) x))
+    (exp (gen) (mul x (rec l-0) l-1)) (4 2))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l (rec l-0) l-1)) (exp (gen) (mul x l-1))
+         (exp (gen) (mul y x (rec l-0) l-1))))
+      (send
+        (hash (exp (gen) (mul y l (rec l-0) l-1))
+          (exp (gen) (mul x l-1)) (exp (gen) (mul y x (rec l-0) l-1)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l (rec l-0) l-1))
+              (exp (gen) (mul x l-1))
+              (exp (gen) (mul y x (rec l-0) l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) l))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-0)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l-1) (one)))
+      (send (cat (exp (gen) l-1) (one))))
+    ((recv (cat (exp (gen) (mul (rec l-0) l-1)) x))
+      (send (cat (exp (gen) (mul (rec l-0) l-1)) x))))
+  (label 340)
+  (parent 313)
+  (unrealized (0 0) (1 3) (11 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (11 0)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((3 2) (8 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((7 2) (10 0))
+    ((8 1) (6 0)) ((9 2) (8 0)) ((10 1) (4 2)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 341)
+  (parent 317)
+  (unrealized (0 0) (11 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (11 0)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((3 2) (8 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((7 2) (10 0))
+    ((8 1) (6 0)) ((9 2) (8 0)) ((10 1) (4 2)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 342)
+  (parent 317)
+  (unrealized (0 0) (1 3) (11 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (precedes ((1 2) (11 0)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((3 2) (10 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((7 2) (11 0))
+    ((8 1) (6 0)) ((9 2) (8 0)) ((10 1) (8 0)) ((11 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 12 7 ltx-disclose 3) l-1 (11 0)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1))))
+  (label 343)
+  (parent 327)
+  (unrealized (0 0) (1 3) (11 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (11 0)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((3 2) (8 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((9 2) (10 0)) ((10 1) (4 2)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 344)
+  (parent 329)
+  (unrealized (0 0) (11 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (11 0)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((3 2) (8 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((9 2) (10 0)) ((10 1) (4 2)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 345)
+  (parent 329)
+  (unrealized (0 0) (1 3) (11 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (precedes ((1 2) (11 0)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((3 2) (10 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((9 2) (11 0)) ((10 1) (8 0)) ((11 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 12 9 ltx-disclose 3) l-1 (11 0)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1))))
+  (label 346)
+  (parent 339)
+  (unrealized (0 0) (1 3) (11 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (12 0)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((3 2) (10 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((7 2) (11 0))
+    ((8 1) (6 0)) ((9 2) (8 0)) ((10 1) (8 0)) ((11 1) (4 2))
+    ((12 1) (11 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 347)
+  (parent 343)
+  (unrealized (0 0) (12 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (12 0)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 2) (1 1))
+    ((3 2) (10 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (7 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((7 2) (11 0))
+    ((8 1) (6 0)) ((9 2) (8 0)) ((10 1) (8 0)) ((11 1) (4 2))
+    ((12 1) (11 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-6 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 348)
+  (parent 343)
+  (unrealized (0 0) (1 3) (12 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (12 0)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((3 2) (10 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((9 2) (11 0)) ((10 1) (8 0)) ((11 1) (4 2))
+    ((12 1) (11 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 349)
+  (parent 346)
+  (unrealized (0 0) (12 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um3
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+      (exp (gen) (mul y x l-0 (rec l-1)))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1)))
+    (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (12 0)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 2) (1 1))
+    ((3 2) (10 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0))
+    ((5 1) (9 0)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0))
+    ((9 2) (8 0)) ((9 2) (11 0)) ((10 1) (8 0)) ((11 1) (4 2))
+    ((12 1) (11 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y (mul l l-0 (rec l-1))) (y l-1)
+    (x l) (x l-0))
+  (precur (10 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((5 1) (4 0)) ((5 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y l l-0 (rec l-1))) (exp (gen) (mul x l-0))
+         (exp (gen) (mul y x l-0 (rec l-1)))))
+      (send
+        (hash (exp (gen) (mul y l l-0 (rec l-1)))
+          (exp (gen) (mul x l-0)) (exp (gen) (mul y x l-0 (rec l-1))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0 (rec l-1)))
+              (exp (gen) (mul x l-0))
+              (exp (gen) (mul y x l-0 (rec l-1))))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l)))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 350)
+  (parent 346)
+  (unrealized (0 0) (1 3) (12 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
diff --git a/tst/dhcr_um3_shapes.tst b/tst/dhcr_um3_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/dhcr_um3_shapes.tst
@@ -0,0 +1,791 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "DHCR: unified model (UM) three-part" (bound 20) (limit 8000)
+  (algebra diffie-hellman))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/dhcr_um3.scm")
+
+(comment "Step count limited to 8000")
+
+(comment "Strand count bounded at 20")
+
+(defprotocol dhcr-um3 diffie-hellman
+  (defrole init
+    (vars (ltxa ltxb x rndx) (y expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul x y)))))) (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x ltxa) (x ltxb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) y) (gen))))
+  (defrole resp
+    (vars (ltxa ltxb y rndx) (x expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul y x)))))) (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y ltxa) (y ltxb) (y x))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) x) (gen))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx))
+    (trace (send (cat self (exp (gen) l))) (recv "end-of-protocol")
+      (send l))
+    (uniq-gen l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b self self-0 name) (ltxa ltxb x rndx) (y expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (x x) (y y))
+  (defstrand ltx-gen 1 (self self) (l ltxa))
+  (defstrand ltx-gen 1 (self self-0) (l ltxb))
+  (non-orig ltxa ltxb)
+  (uniq-orig na)
+  (uniq-gen ltxa ltxb x)
+  (absent (x ltxa) (x ltxb))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul x y)))))) (send nb))
+    ((send (cat self (exp (gen) ltxa))))
+    ((send (cat self-0 (exp (gen) ltxb)))))
+  (label 0)
+  (unrealized (0 0) (0 2))
+  (preskeleton)
+  (origs (na (0 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b self self-0 name) (y x ltxa ltxb rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (x x) (y y))
+  (defstrand ltx-gen 1 (self self) (l ltxa))
+  (defstrand ltx-gen 1 (self self-0) (l ltxb))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (y y) (x x))
+  (precedes ((0 1) (3 1)) ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (0 0))
+    ((2 0) (3 0)) ((3 2) (0 2)))
+  (non-orig ltxa ltxb)
+  (uniq-orig na nb)
+  (uniq-gen y x ltxa ltxb)
+  (absent (y x) (y ltxa) (y ltxb) (x ltxa) (x ltxb))
+  (operation encryption-test (added-strand resp 3)
+    (enc na nb a b
+      (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul x ltxb))
+        (exp (gen) (mul y x)))) (0 2))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul x ltxb))
+              (exp (gen) (mul y x)))))) (send nb))
+    ((send (cat self (exp (gen) ltxa))))
+    ((send (cat self-0 (exp (gen) ltxb))))
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul x ltxb))
+              (exp (gen) (mul y x))))))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 2)
+      ((ltxa ltxa) (ltxb ltxb) (a a) (b b) (x x) (y y) (na na) (nb nb)
+        (self self) (self-0 self-0))))
+  (origs (nb (3 2)) (na (0 1))))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b self name) (y x ltxb rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxb) (ltxb ltxb)
+    (x x) (y y))
+  (defstrand ltx-gen 1 (self self) (l ltxb))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (ltxa ltxb) (ltxb ltxb)
+    (y y) (x x))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2)))
+  (non-orig ltxb)
+  (uniq-orig na nb)
+  (uniq-gen y x ltxb)
+  (absent (y x) (y ltxb) (x ltxb))
+  (operation encryption-test (added-strand resp 3)
+    (enc na nb a b
+      (hash (exp (gen) (mul y ltxb)) (exp (gen) (mul x ltxb))
+        (exp (gen) (mul y x)))) (0 2))
+  (traces
+    ((recv (cat (exp (gen) ltxb) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxb)) (exp (gen) (mul x ltxb))
+              (exp (gen) (mul y x)))))) (send nb))
+    ((send (cat self (exp (gen) ltxb))))
+    ((recv (cat (exp (gen) ltxb) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxb)) (exp (gen) (mul x ltxb))
+              (exp (gen) (mul y x))))))))
+  (label 6)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 1)
+      ((ltxa ltxb) (ltxb ltxb) (a a) (b b) (x x) (y y) (na na) (nb nb)
+        (self self) (self-0 self))))
+  (origs (nb (2 2)) (na (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-um3 diffie-hellman
+  (defrole init
+    (vars (ltxa ltxb x rndx) (y expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul x y)))))) (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x ltxa) (x ltxb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) y) (gen))))
+  (defrole resp
+    (vars (ltxa ltxb y rndx) (x expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul y x)))))) (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y ltxa) (y ltxb) (y x))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) x) (gen))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx))
+    (trace (send (cat self (exp (gen) l))) (recv "end-of-protocol")
+      (send l))
+    (uniq-gen l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b self name) (ltxa ltxb x rndx) (y expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (x x) (y y))
+  (defstrand ltx-gen 1 (self self) (l ltxb))
+  (non-orig ltxb)
+  (uniq-orig na)
+  (uniq-gen ltxb x)
+  (absent (x ltxa) (x ltxb))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul x y)))))) (send nb))
+    ((send (cat self (exp (gen) ltxb)))))
+  (label 13)
+  (unrealized (0 0) (0 2))
+  (preskeleton)
+  (origs (na (0 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b self name) (y x ltxa ltxb rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (x x) (y y))
+  (defstrand ltx-gen 1 (self self) (l ltxb))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (y y) (x x))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2)))
+  (non-orig ltxb)
+  (uniq-orig na nb)
+  (uniq-gen y x ltxb)
+  (absent (y x) (y ltxa) (y ltxb) (x ltxa) (x ltxb))
+  (operation encryption-test (added-strand resp 3)
+    (enc na nb a b
+      (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul x ltxb))
+        (exp (gen) (mul y x)))) (0 2))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul x ltxb))
+              (exp (gen) (mul y x)))))) (send nb))
+    ((send (cat self (exp (gen) ltxb))))
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul x ltxb))
+              (exp (gen) (mul y x))))))))
+  (label 15)
+  (parent 13)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ltxa ltxa) (ltxb ltxb) (a a) (b b) (x x) (y y) (na na) (nb nb)
+        (self self))))
+  (origs (nb (2 2)) (na (0 1))))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b self name) (y x ltxb rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxb) (ltxb ltxb)
+    (x x) (y y))
+  (defstrand ltx-gen 1 (self self) (l ltxb))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (ltxa ltxb) (ltxb ltxb)
+    (y y) (x x))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2)))
+  (non-orig ltxb)
+  (uniq-orig na nb)
+  (uniq-gen y x ltxb)
+  (absent (y x) (y ltxb) (x ltxb))
+  (operation nonce-test (displaced 3 0 init 2) (exp (gen) x) (2 1))
+  (traces
+    ((recv (cat (exp (gen) ltxb) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxb)) (exp (gen) (mul x ltxb))
+              (exp (gen) (mul y x)))))) (send nb))
+    ((send (cat self (exp (gen) ltxb))))
+    ((recv (cat (exp (gen) ltxb) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxb)) (exp (gen) (mul x ltxb))
+              (exp (gen) (mul y x))))))))
+  (label 18)
+  (parent 13)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ltxa ltxb) (ltxb ltxb) (a a) (b b) (x x) (y y) (na na) (nb nb)
+        (self self))))
+  (origs (na (0 1)) (nb (2 2))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-um3 diffie-hellman
+  (defrole init
+    (vars (ltxa ltxb x rndx) (y expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul x y)))))) (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x ltxa) (x ltxb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) y) (gen))))
+  (defrole resp
+    (vars (ltxa ltxb y rndx) (x expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul y x)))))) (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y ltxa) (y ltxb) (y x))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) x) (gen))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx))
+    (trace (send (cat self (exp (gen) l))) (recv "end-of-protocol")
+      (send l))
+    (uniq-gen l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b self name) (ltxa ltxb x y rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (x x) (y y))
+  (defstrand ltx-gen 1 (self self) (l ltxb))
+  (deflistener (exp (gen) (mul x y)))
+  (non-orig ltxb)
+  (uniq-orig na)
+  (uniq-gen ltxb x)
+  (absent (x ltxa) (x ltxb))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul x y)))))) (send nb))
+    ((send (cat self (exp (gen) ltxb))))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
+  (label 24)
+  (unrealized (0 0) (0 2) (2 0))
+  (preskeleton)
+  (origs (na (0 1)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-um3 diffie-hellman
+  (defrole init
+    (vars (ltxa ltxb x rndx) (y expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul x y)))))) (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x ltxa) (x ltxb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) y) (gen))))
+  (defrole resp
+    (vars (ltxa ltxb y rndx) (x expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul y x)))))) (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y ltxa) (y ltxb) (y x))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) x) (gen))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx))
+    (trace (send (cat self (exp (gen) l))) (recv "end-of-protocol")
+      (send l))
+    (uniq-gen l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b self self-0 name) (ltxa ltxb y rndx) (x expt))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (y y) (x x))
+  (defstrand ltx-gen 1 (self self) (l ltxa))
+  (defstrand ltx-gen 1 (self self-0) (l ltxb))
+  (non-orig ltxa ltxb)
+  (uniq-orig nb)
+  (uniq-gen ltxa ltxb y)
+  (absent (y ltxa) (y ltxb) (y x))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul y x)))))) (recv nb))
+    ((send (cat self (exp (gen) ltxa))))
+    ((send (cat self-0 (exp (gen) ltxb)))))
+  (label 32)
+  (unrealized (0 0) (0 3))
+  (preskeleton)
+  (origs (nb (0 2)))
+  (comment "Not a skeleton"))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b self self-0 name) (y x ltxa ltxb rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (y y) (x x))
+  (defstrand ltx-gen 1 (self self) (l ltxa))
+  (defstrand ltx-gen 1 (self self-0) (l ltxb))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (x x) (y y))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (0 0))
+    ((2 0) (3 0)) ((3 1) (0 1)) ((3 3) (0 3)))
+  (non-orig ltxa ltxb)
+  (uniq-orig na nb)
+  (uniq-gen y x ltxa ltxb)
+  (absent (y x) (y ltxa) (y ltxb) (x ltxa) (x ltxb))
+  (operation nonce-test (added-strand init 4) nb (0 3)
+    (enc na nb a b
+      (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul x ltxb))
+        (exp (gen) (mul y x)))))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul x ltxb))
+              (exp (gen) (mul y x)))))) (recv nb))
+    ((send (cat self (exp (gen) ltxa))))
+    ((send (cat self-0 (exp (gen) ltxb))))
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul x ltxb))
+              (exp (gen) (mul y x)))))) (send nb)))
+  (label 35)
+  (parent 32)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 2)
+      ((ltxa ltxa) (ltxb ltxb) (a a) (b b) (y y) (x x) (na na) (nb nb)
+        (self self) (self-0 self-0))))
+  (origs (na (3 1)) (nb (0 2))))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b self name) (y x ltxb rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ltxa ltxb) (ltxb ltxb)
+    (y y) (x x))
+  (defstrand ltx-gen 1 (self self) (l ltxb))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxb) (ltxb ltxb)
+    (x x) (y y))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
+    ((2 3) (0 3)))
+  (non-orig ltxb)
+  (uniq-orig na nb)
+  (uniq-gen y x ltxb)
+  (absent (y x) (y ltxb) (x ltxb))
+  (operation nonce-test (added-strand init 4) nb (0 3)
+    (enc na nb a b
+      (hash (exp (gen) (mul y ltxb)) (exp (gen) (mul x ltxb))
+        (exp (gen) (mul y x)))))
+  (traces
+    ((recv (cat (exp (gen) ltxb) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxb)) (exp (gen) (mul x ltxb))
+              (exp (gen) (mul y x)))))) (recv nb))
+    ((send (cat self (exp (gen) ltxb))))
+    ((recv (cat (exp (gen) ltxb) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxb)) (exp (gen) (mul x ltxb))
+              (exp (gen) (mul y x)))))) (send nb)))
+  (label 38)
+  (parent 32)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 1)
+      ((ltxa ltxb) (ltxb ltxb) (a a) (b b) (y y) (x x) (na na) (nb nb)
+        (self self) (self-0 self))))
+  (origs (na (2 1)) (nb (0 2))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-um3 diffie-hellman
+  (defrole init
+    (vars (ltxa ltxb x rndx) (y expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul x y)))))) (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x ltxa) (x ltxb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) y) (gen))))
+  (defrole resp
+    (vars (ltxa ltxb y rndx) (x expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul y x)))))) (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y ltxa) (y ltxb) (y x))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) x) (gen))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx))
+    (trace (send (cat self (exp (gen) l))) (recv "end-of-protocol")
+      (send l))
+    (uniq-gen l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b self name) (ltxa ltxb y rndx) (x expt))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (y y) (x x))
+  (defstrand ltx-gen 1 (self self) (l ltxa))
+  (non-orig ltxa)
+  (uniq-orig nb)
+  (uniq-gen ltxa y)
+  (absent (y ltxa) (y ltxb) (y x))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul y x)))))) (recv nb))
+    ((send (cat self (exp (gen) ltxa)))))
+  (label 45)
+  (unrealized (0 0) (0 3))
+  (preskeleton)
+  (origs (nb (0 2)))
+  (comment "Not a skeleton"))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b self name) (y x ltxa ltxb rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (y y) (x x))
+  (defstrand ltx-gen 1 (self self) (l ltxa))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (x x) (y y))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
+    ((2 3) (0 3)))
+  (non-orig ltxa)
+  (uniq-orig na nb)
+  (uniq-gen y x ltxa)
+  (absent (y x) (y ltxa) (y ltxb) (x ltxa) (x ltxb))
+  (operation nonce-test (added-strand init 4) nb (0 3)
+    (enc na nb a b
+      (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul x ltxb))
+        (exp (gen) (mul y x)))))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul x ltxb))
+              (exp (gen) (mul y x)))))) (recv nb))
+    ((send (cat self (exp (gen) ltxa))))
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul x ltxb))
+              (exp (gen) (mul y x)))))) (send nb)))
+  (label 47)
+  (parent 45)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ltxa ltxa) (ltxb ltxb) (a a) (b b) (y y) (x x) (na na) (nb nb)
+        (self self))))
+  (origs (na (2 1)) (nb (0 2))))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b self name) (y ltxb x rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ltxa ltxb) (ltxb ltxb)
+    (y y) (x x))
+  (defstrand ltx-gen 1 (self self) (l ltxb))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxb) (ltxb ltxb)
+    (x x) (y y))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
+    ((2 3) (0 3)))
+  (non-orig ltxb)
+  (uniq-orig na nb)
+  (uniq-gen y ltxb x)
+  (absent (y ltxb) (y x) (x ltxb))
+  (operation nonce-test (displaced 3 0 resp 3) (exp (gen) y) (2 2))
+  (traces
+    ((recv (cat (exp (gen) ltxb) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxb)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul y x)))))) (recv nb))
+    ((send (cat self (exp (gen) ltxb))))
+    ((recv (cat (exp (gen) ltxb) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxb)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul y x)))))) (send nb)))
+  (label 50)
+  (parent 45)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ltxa ltxb) (ltxb ltxb) (a a) (b b) (y y) (x x) (na na) (nb nb)
+        (self self))))
+  (origs (nb (0 2)) (na (2 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-um3 diffie-hellman
+  (defrole init
+    (vars (ltxa ltxb x rndx) (y expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul x y)))))) (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x ltxa) (x ltxb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) y) (gen))))
+  (defrole resp
+    (vars (ltxa ltxb y rndx) (x expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul y x)))))) (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y ltxa) (y ltxb) (y x))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) x) (gen))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx))
+    (trace (send (cat self (exp (gen) l))) (recv "end-of-protocol")
+      (send l))
+    (uniq-gen l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhcr-um3
+  (vars (na nb data) (a b self self-0 name) (ltxa ltxb x rndx) (y expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (x x) (y y))
+  (deflistener
+    (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+      (exp (gen) (mul x y))))
+  (defstrand ltx-gen 3 (self self) (l ltxa))
+  (defstrand ltx-gen 3 (self self-0) (l ltxb))
+  (precedes ((0 3) (2 1)) ((0 3) (3 1)))
+  (uniq-orig na)
+  (uniq-gen ltxa ltxb x)
+  (absent (x ltxa) (x ltxb))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+              (exp (gen) (mul x y)))))) (send nb))
+    ((recv
+       (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+         (exp (gen) (mul x y))))
+      (send
+        (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))
+          (exp (gen) (mul x y)))))
+    ((send (cat self (exp (gen) ltxa))) (recv "end-of-protocol")
+      (send ltxa))
+    ((send (cat self-0 (exp (gen) ltxb))) (recv "end-of-protocol")
+      (send ltxb)))
+  (label 56)
+  (unrealized (0 0) (0 2) (1 0))
+  (preskeleton)
+  (origs (na (0 1)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
diff --git a/tst/dhcr_um_exercise_resolved_bug.scm b/tst/dhcr_um_exercise_resolved_bug.scm
deleted file mode 100644
--- a/tst/dhcr_um_exercise_resolved_bug.scm
+++ /dev/null
@@ -1,220 +0,0 @@
-;;; Unified Model  This version used in the paper, tooldev/dh/conf_dh/dh_ebn.tex
-
-;;; This file models the "Unified Model" method of determining a fresh
-;;; key from long-term and ephemeral Diffie-Hellman exponents.  We use
-;;; function relation declarations to link names to long-term public
-;;; values.
-
-;;; This file contains the standard version, in which the two
-;;; ephemeral are mixed, as are the two static exponents.
-
-;;; A role is provided in which a party signs a fresh long-term
-;;; Diffie-Hellman value, and then leaks the exponent.  The latter step
-;;; is used to test the notion of forward security.
-
-;;; Two inputs are analyzed.  In the first, we model that two
-;;; participants exist that agree on the UM key.  The notion of
-;;; "implicit authentication" suggests that if one participant exists
-;;; and another party knows the same key, that party must be either the
-;;; participant or the participant's intended partner.
-
-;;; In this version, we assume that the long-term keys of the
-;;; participants do not leak.
-
-;;; The second input checks whether the key can be learned when the key
-;;; is generated honestly.  In this version, we do NOT assume that the
-;;; long-term keys of the participants do not leak.
-
-;;; CPSA4 revisions:
-;;;
-;;; 1.  Self certify my public value in ltx-gen,
-;;;     and assume signing keys non.
-;;; 2.  Deposit private value in state and retrieve
-;;;	it at the beginning of each init or resp run.
-;;; 3.  Discard the private value from state before
-;;;	disclosing it, when testing forward secrecy.
-
-(herald "DHCR: unified model (UM) original"
-	(bound 20)
-	(limit 12000)
-	(algebra diffie-hellman))
-
-(defmacro (kcfa l gb x gy)
-  (hash (exp gb l) (exp gy x)))
-
-(defmacro (kcfb l ga y gx)
-  (hash (exp ga l) (exp gx y)))
-
-(defprotocol dhcr-um diffie-hellman
-  (defrole init
-    (vars (l x rndx) (gb gy base) (a b name) (na nb data) (priv-stor locn))
-    (trace
-     (load priv-stor (pv a l))
-     (recv (sig (body b gb (pubk "sig" b))
-		(privk "sig" b)))
-     (send (cat na a b (exp (gen) x)))
-     (recv (cat gy (enc na nb a b (kcfa l gb x gy))))
-     (send nb)
-     )
-    (uniq-gen x)
-    (uniq-orig na)
-    ;; (facts (neq gy (gen)))
-    (gen-st (pv a l))
-    (fn-of ("principal-of" (ltxa a) (ltxb b))
-           ("ltx-of" (a ltxa) (b ltxb))))
-
-  (defrole resp
-    (vars (l y rndx) (ga gx base) (a b name) (na nb data) (priv-stor locn))
-    (trace
-     (load priv-stor (pv b l))
-     (recv (sig (body a ga (pubk "sig" a))
-		(privk "sig" a)))
-     (recv (cat na a b gx))
-     (send (cat (exp (gen) y) (enc na nb a b (kcfb l ga y gx))))
-     (recv nb)
-     )
-    (uniq-gen y)
-    (uniq-orig nb)
-    (facts (neq gx (gen)))
-    (gen-st (pv b l))
-    (fn-of ("principal-of" (ltxa a) (ltxb b))
-	   ("ltx-of" (a ltxa) (b ltxb))))
-
-  (defrole ltx-gen
-    (vars (self name) (l rndx)
-	  (priv-stor locn) (ignore mesg))
-    (trace
-     (load priv-stor ignore)
-     (stor priv-stor (pv self l))
-     (send (sig (body self (exp (gen) l) (pubk "sig" self))
-		(privk "sig" self))))
-    (uniq-orig l)
-    (fn-of ("principal-of" (l self))
-	   ("ltx-of" (self l))))
-
-  (defrole ltx-disclose
-    (vars (self name) (l rndx)
-	  (priv-stor locn) (ignore mesg))
-    (trace
-     (load priv-stor (pv self l))
-     (stor priv-stor "nil")
-     (send l))
-    (gen-st (pv self l))
-    (fn-of ("principal-of" (l self))
-	   ("ltx-of" (self l))))
-
-  (defrule fact-resp-silly
-    (forall ((z strd) (gx base)
-	     )
-	    (implies (and (p "resp" z 3) (p "resp" "gx" z gx))
-		     (fact silly gx))))
-
-  (defrule fact-resp-neq0
-    (forall ((z strd) ;(gx base)
-	     )
-	    (implies (and (p "resp" z 3) (p "resp" "gx" z (gen))) (false))))
-
-  (defrule fact-init-neq0
-    (forall ((z strd) ;(gx base)
-	     )
-	    (implies (and (p "init" z 4) (p "init" "gy" z (gen))) (false))))
-
-  (defrule undisclosed-not-disclosed
-    (forall
-     ((z strd) (l rndx))
-     (implies
-      (and (fact undisclosed l)
-	  (p "ltx-disclose" z 2)
-	  (p "ltx-disclose" "l" z l))
-      (false))))
-
-  (lang (sig sign)
-	(body (tuple 3))
-	(pv (tuple 2))))
-
-; Initiator point of view: both LTX exponents secret
-(defskeleton dhcr-um
-  (vars (a b name) (l l-peer rndx))
-  (defstrand init 4 (a a) (b b) (l l) (gb (exp (gen) l-peer)))
-  (non-orig (privk "sig" b))
-  (facts (neq a b)
-	 (undisclosed l)
-	 (undisclosed l-peer)))
-
-(comment
-
-; Initiator point of view:  peer exponent secret
-(defskeleton dhcr-um
-  (vars (a b name) (l l-peer rndx))
-  (defstrand init 4 (a a) (b b) (l l) (gb (exp (gen) l-peer)))
-  (non-orig (privk "sig" b))
-  (facts (neq a b)
-	 ;;	 (undisclosed l)
-	 (undisclosed l-peer)))
-
-; Initiator point of view:  my exponent secret
-(defskeleton dhcr-um
-  (vars (a b name) (l rndx) (l-peer expt))
-  (defstrand init 4 (a a) (b b) (l l) (gb (exp (gen) l-peer)))
-  (non-orig (privk "sig" b))
-  (facts (neq a b)
-	 ;;	 (undisclosed l-peer)
-	 (undisclosed l)))
-
-; Initiator point of view:  neither exponent secret
-
-(defskeleton dhcr-um
-  (vars (a b name) (l rndx) (l-peer expt))
-  (defstrand init 4 (a a) (b b) (l l) (gb (exp (gen) l-peer)))
-  (non-orig (privk "sig" b))
-  (facts (neq a b)
-	 ;;	 (undisclosed l-peer)
-	 ;;	 (undisclosed l)
-	 )))
-
-(comment
-					; Initiator point of view: partner's exponent secret
- (defskeleton dhcr-um
-   (vars (ltxa ltxb rndx) (a b name))
-   (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-   (defstrand ltx-gen 1 (l ltxb))
-   (non-orig ltxb)
-   (neq (a b)))
-
-					; Responder point of view; both exponents secret
- (defskeleton dhcr-um
-   (vars (ltxa ltxb rndx) (a b name))
-   (defstrand resp 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-   (defstrand ltx-gen 1 (l ltxa))
-   (defstrand ltx-gen 1 (l ltxb))
-   (non-orig ltxa ltxb)
-   (neq (a b)))
-
-					; Responder point of view; partner's exponent secre
- (defskeleton dhcr-um
-   (vars (ltxa ltxb rndx) (a b name))
-   (defstrand resp 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-   (defstrand ltx-gen 1 (l ltxa))
-   (non-orig ltxa)
-   (neq (a b)))
-
-;;; Forward secrecy, neither long-term exponent secure
- (defskeleton dhcr-um
-   (vars (ltxa ltxb x rndx) (y expt) (a b name))
-   (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (x x) (y y) (a a) (b b))
-   (deflistener (kcfa ltxa ltxb x (exp (gen) y)))
-   (defstrand ltx-gen 3 (l ltxa))
-   (defstrand ltx-gen 3 (l ltxb))
-   (precedes ((0 3) (3 1)) ((0 3) (2 1)))
-   (neq (a b)))
-
-;;; Forward secrecy, neither long-term exponent secure
- (defskeleton dhcr-um
-   (vars (ltxa ltxb x rndx) (y expt) (a b name))
-   (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (x x) (y y) (a a) (b b))
-   (deflistener (exp (exp (gen) x) y))
-   (defstrand ltx-gen 3 (l ltxa))
-   (defstrand ltx-gen 3 (l ltxb))
-   (precedes ((0 3) (3 1)) ((0 3) (2 1)))
-   (neq (a b)))
- )
diff --git a/tst/dhcr_um_exercise_resolved_bug.tst b/tst/dhcr_um_exercise_resolved_bug.tst
deleted file mode 100644
--- a/tst/dhcr_um_exercise_resolved_bug.tst
+++ /dev/null
@@ -1,21414 +0,0 @@
-(herald "DHCR: unified model (UM) original" (bound 20) (limit 12000)
-  (algebra diffie-hellman))
-
-(comment "CPSA 4.4.3")
-(comment "All input read from tst/dhcr_um_exercise_resolved_bug.scm")
-(comment "Step count limited to 12000")
-(comment "Strand count bounded at 20")
-
-(defprotocol dhcr-um diffie-hellman
-  (defrole init
-    (vars (l x rndx) (gb gy base) (a b name) (na nb data)
-      (priv-stor locn))
-    (trace (load priv-stor (pv a l))
-      (recv (sig (body b gb (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv (cat gy (enc na nb a b (hash (exp gb l) (exp gy x)))))
-      (send nb))
-    (uniq-orig na)
-    (uniq-gen x)
-    (absent (x l))
-    (gen-st (pv a l))
-    (fn-of ("principal-of" (ltxa a) (ltxb b))
-      ("ltx-of" (a ltxa) (b ltxb))))
-  (defrole resp
-    (vars (l y rndx) (ga gx base) (a b name) (na nb data)
-      (priv-stor locn))
-    (trace (load priv-stor (pv b l))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na a b gx))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp ga l) (exp gx y))))) (recv nb))
-    (uniq-orig nb)
-    (uniq-gen y)
-    (absent (y l))
-    (facts (neq gx (gen)))
-    (gen-st (pv b l))
-    (fn-of ("principal-of" (ltxa a) (ltxb b))
-      ("ltx-of" (a ltxa) (b ltxb))))
-  (defrole ltx-gen
-    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
-    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    (uniq-orig l)
-    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
-  (defrole ltx-disclose
-    (vars (self name) (l rndx) (priv-stor locn))
-    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
-    (gen-st (pv self l))
-    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
-  (defrule fact-resp-silly
-    (forall ((z strd) (gx base))
-      (implies
-        (and (p "resp" z (idx 3)) (p "resp" "gx" z gx))
-        (fact silly gx))))
-  (defrule fact-resp-neq0
-    (forall ((z strd))
-      (implies
-        (and (p "resp" z (idx 3)) (p "resp" "gx" z (gen)))
-        (false))))
-  (defrule fact-init-neq0
-    (forall ((z strd))
-      (implies
-        (and (p "init" z (idx 4)) (p "init" "gy" z (gen)))
-        (false))))
-  (defrule undisclosed-not-disclosed
-    (forall ((z strd) (l rndx))
-      (implies
-        (and (fact undisclosed l) (p "ltx-disclose" z (idx 2))
-          (p "ltx-disclose" "l" z l))
-        (false))))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defgenrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defgenrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
-  (defgenrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defgenrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defgenrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
-  (defgenrule fact-resp-neq0
-    (forall ((z strd) (gx base))
-      (implies (and (p "resp" z (idx 3)) (p "resp" "gx" z gx))
-        (fact neq gx (gen)))))
-  (defgenrule trRl_ltx-gen-at-1
-    (forall ((z strd))
-      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 1)))))
-  (defgenrule trRl_ltx-gen-at-0
-    (forall ((z strd))
-      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 0)))))
-  (defgenrule trRl_ltx-disclose-at-1
-    (forall ((z strd))
-      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 1)))))
-  (defgenrule trRl_ltx-disclose-at-0
-    (forall ((z strd))
-      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 0)))))
-  (defgenrule gen-st-init-0
-    (forall ((z strd) (a name) (l rndx))
-      (implies
-        (and (p "init" z (idx 1)) (p "init" "l" z l) (p "init" "a" z a))
-        (gen-st (pv a l)))))
-  (defgenrule gen-st-resp-0
-    (forall ((z strd) (b name) (l rndx))
-      (implies
-        (and (p "resp" z (idx 1)) (p "resp" "l" z l) (p "resp" "b" z b))
-        (gen-st (pv b l)))))
-  (defgenrule gen-st-ltx-disclose-0
-    (forall ((z strd) (self name) (l rndx))
-      (implies
-        (and (p "ltx-disclose" z (idx 1)) (p "ltx-disclose" "l" z l)
-          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
-  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
-
-(defskeleton dhcr-um
-  (vars (na nb data) (a b name) (pt pval) (gy base) (priv-stor locn)
-    (l l-peer x rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-peer))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (non-orig (privk "sig" b))
-  (uniq-orig na)
-  (uniq-gen x)
-  (absent (x l))
-  (facts (neq a b) (undisclosed l) (undisclosed l-peer))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-peer) (pubk "sig" b))
-          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b
-            (hash (exp (gen) (mul l l-peer)) (exp gy x)))))))
-  (label 0)
-  (unrealized (0 1) (0 3))
-  (origs (na (0 2)))
-  (comment "Not closed under rules"))
-
-(defskeleton dhcr-um
-  (vars (na nb data) (a b name) (pt pval) (gy base) (priv-stor locn)
-    (l l-peer x rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-peer))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (non-orig (privk "sig" b))
-  (uniq-orig na)
-  (uniq-gen x)
-  (absent (x l))
-  (gen-st (pv a l))
-  (facts (neq a b) (undisclosed l) (undisclosed l-peer))
-  (rule gen-st-ltx-disclose-0)
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-peer) (pubk "sig" b))
-          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b
-            (hash (exp (gen) (mul l l-peer)) (exp gy x)))))))
-  (label 1)
-  (parent 0)
-  (unrealized (0 0) (0 1) (0 3))
-  (origs (na (0 2)))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore mesg) (na nb data) (a b name) (pt pt-0 pval) (gy base)
-    (priv-stor locn) (l-peer x l rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-peer))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (precedes ((1 1) (0 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na l)
-  (uniq-gen x)
-  (absent (x l))
-  (gen-st (pv a l))
-  (facts (neq a b) (undisclosed l) (undisclosed l-peer))
-  (leads-to ((1 1) (0 0)))
-  (rule trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation channel-test (added-strand ltx-gen 2)
-    (ch-msg priv-stor (cat pt (pv a l))) (0 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-peer) (pubk "sig" b))
-          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b
-            (hash (exp (gen) (mul l-peer l)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l)))))
-  (label 2)
-  (parent 1)
-  (unrealized (0 1) (0 3))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pval) (gy base) (priv-stor priv-stor-0 locn)
-    (x l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (precedes ((1 1) (0 0)) ((2 2) (0 1)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na l l-0)
-  (uniq-gen x)
-  (absent (x l))
-  (gen-st (pv a l))
-  (facts (neq a b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (0 0)))
-  (rule trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation encryption-test (added-strand ltx-gen 3)
-    (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)) (0 1))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))))
-  (label 3)
-  (parent 2)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pt-3 pval) (gy base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 l-1 x y rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b)
-    (ga (exp (gen) (mul l l-0 (rec l-1)))) (gx (exp gy (mul x (rec y))))
-    (priv-stor priv-stor-1) (l l-1) (y y))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 3) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-1))
-  (gen-st (pv a l) (pv b l-1))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly gen-st-ltx-disclose-0
-    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation encryption-test (added-strand resp 4)
-    (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))) (0 3))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
-      (recv
-        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
-          (privk "sig" a))) (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x)))))))
-  (label 4)
-  (parent 3)
-  (unrealized (3 0) (3 1) (3 2))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pval) (gy base) (priv-stor priv-stor-0 locn)
-    (x l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (hash (exp (gen) (mul l l-0)) (exp gy x)))
-  (precedes ((0 2) (3 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na l l-0)
-  (uniq-gen x)
-  (absent (x l))
-  (gen-st (pv a l))
-  (facts (neq a b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (0 0)))
-  (rule trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation encryption-test
-    (added-listener (hash (exp (gen) (mul l l-0)) (exp gy x)))
-    (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))) (0 3))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((recv (hash (exp (gen) (mul l l-0)) (exp gy x)))
-      (send (hash (exp (gen) (mul l l-0)) (exp gy x)))))
-  (label 5)
-  (parent 3)
-  (unrealized (3 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pval) (gy base) (priv-stor priv-stor-0 locn)
-    (l x y l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ga (exp (gen) l))
-    (gx (exp gy (mul x (rec y)))) (priv-stor priv-stor-0) (l l-0) (y y))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
-    ((3 3) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (gen-st (pv a l) (pv b l-0))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 4 2 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))) (3 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
-      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x)))))))
-  (label 6)
-  (parent 4)
-  (unrealized (3 1) (3 2))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gy base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b)
-    (ga (exp (gen) (mul l l-0 (rec l-1)))) (gx (exp gy (mul x (rec y))))
-    (priv-stor priv-stor-1) (l l-1) (y y))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 3) (0 3))
-    ((4 1) (3 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l) (y l-1))
-  (gen-st (pv a l) (pv b l-1))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (0 0)) ((4 1) (3 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (added-strand ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))) (3 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
-      (recv
-        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
-          (privk "sig" a))) (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b l-1)))))
-  (label 7)
-  (parent 4)
-  (unrealized (3 1) (3 2))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pval) (gy base) (priv-stor priv-stor-0 locn)
-    (x l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (hash (exp (gen) (mul l l-0)) (exp gy x)))
-  (deflistener (cat (exp (gen) (mul l l-0)) (exp gy x)))
-  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
-    ((4 1) (3 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na l l-0)
-  (uniq-gen x)
-  (absent (x l))
-  (gen-st (pv a l))
-  (facts (neq a b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (0 0)))
-  (rule trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation encryption-test
-    (added-listener (cat (exp (gen) (mul l l-0)) (exp gy x)))
-    (hash (exp (gen) (mul l l-0)) (exp gy x)) (3 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((recv (hash (exp (gen) (mul l l-0)) (exp gy x)))
-      (send (hash (exp (gen) (mul l l-0)) (exp gy x))))
-    ((recv (cat (exp (gen) (mul l l-0)) (exp gy x)))
-      (send (cat (exp (gen) (mul l l-0)) (exp gy x)))))
-  (label 8)
-  (parent 5)
-  (unrealized (4 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (gy base) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy gy) (priv-stor priv-stor-0) (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp gy (mul x (rec y)))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 1 4 ltx-gen 3) (exp (gen) l-0) (3 1))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))))
-  (label 9)
-  (parent 6)
-  (unrealized (2 2))
-  (comment "7 in cohort - 7 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pval) (gy base) (priv-stor priv-stor-0 locn)
-    (l x y l-0 rndx) (w expt))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ga (exp (gen) l))
-    (gx (exp gy (mul x (rec y)))) (priv-stor priv-stor-0) (l l-0) (y y))
-  (deflistener (cat (exp (gen) (mul l (rec w))) w))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
-    ((3 3) (0 3)) ((4 1) (3 1)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (4 0))
-  (gen-st (pv a l) (pv b l-0))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul l (rec w))) w)) (exp (gen) l)
-    (3 1))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
-      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((recv (cat (exp (gen) (mul l (rec w))) w))
-      (send (cat (exp (gen) (mul l (rec w))) w))))
-  (label 10)
-  (parent 6)
-  (unrealized (3 2) (4 0))
-  (comment "7 in cohort - 7 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gy base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b)
-    (ga (exp (gen) (mul l l-0 (rec l-1)))) (gx (exp gy (mul x (rec y))))
-    (priv-stor priv-stor-1) (l l-1) (y y))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 3) (0 3))
-    ((4 1) (3 0)) ((4 1) (5 0)) ((5 1) (3 1)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l) (y l-1))
-  (gen-st (pv a l) (pv b l-1))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (0 0)) ((4 1) (3 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul l l-0)) l-1))
-    (exp (gen) (mul l l-0 (rec l-1))) (3 1))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
-      (recv
-        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
-          (privk "sig" a))) (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
-    ((recv (cat (exp (gen) (mul l l-0)) l-1))
-      (send (cat (exp (gen) (mul l l-0)) l-1))))
-  (label 11)
-  (parent 7)
-  (unrealized (3 2) (5 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gy base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b)
-    (ga (exp (gen) (mul l l-0 (rec l-1)))) (gx (exp gy (mul x (rec y))))
-    (priv-stor priv-stor-1) (l l-1) (y y))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul l (rec l-1))) l-0))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
-    ((3 3) (0 3)) ((4 1) (3 0)) ((5 1) (3 1)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l) (y l-1))
-  (gen-st (pv a l) (pv b l-1))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (0 0)) ((4 1) (3 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul l (rec l-1))) l-0))
-    (exp (gen) (mul l l-0 (rec l-1))) (3 1))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
-      (recv
-        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
-          (privk "sig" a))) (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
-    ((recv (cat (exp (gen) (mul l (rec l-1))) l-0))
-      (send (cat (exp (gen) (mul l (rec l-1))) l-0))))
-  (label 12)
-  (parent 7)
-  (unrealized (3 2) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gy base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b)
-    (ga (exp (gen) (mul l l-0 (rec l-1)))) (gx (exp gy (mul x (rec y))))
-    (priv-stor priv-stor-1) (l l-1) (y y))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
-    ((3 3) (0 3)) ((4 1) (3 0)) ((5 1) (3 1)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l) (y l-1))
-  (gen-st (pv a l) (pv b l-1))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (0 0)) ((4 1) (3 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul l-0 (rec l-1))) l))
-    (exp (gen) (mul l l-0 (rec l-1))) (3 1))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
-      (recv
-        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
-          (privk "sig" a))) (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
-    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
-      (send (cat (exp (gen) (mul l-0 (rec l-1))) l))))
-  (label 13)
-  (parent 7)
-  (unrealized (3 2) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pval) (gy base) (priv-stor priv-stor-0 locn)
-    (x l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (hash (exp (gen) (mul l l-0)) (exp gy x)))
-  (deflistener (cat (exp (gen) (mul l l-0)) (exp gy x)))
-  (deflistener (cat (exp (gen) l) l-0))
-  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
-    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na l l-0)
-  (uniq-gen x)
-  (absent (x l))
-  (gen-st (pv a l))
-  (facts (neq a b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (0 0)))
-  (rule trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) l) l-0))
-    (exp (gen) (mul l l-0)) (4 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((recv (hash (exp (gen) (mul l l-0)) (exp gy x)))
-      (send (hash (exp (gen) (mul l l-0)) (exp gy x))))
-    ((recv (cat (exp (gen) (mul l l-0)) (exp gy x)))
-      (send (cat (exp (gen) (mul l l-0)) (exp gy x))))
-    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0))))
-  (label 14)
-  (parent 8)
-  (unrealized (4 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pval) (gy base) (priv-stor priv-stor-0 locn)
-    (x l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (hash (exp (gen) (mul l l-0)) (exp gy x)))
-  (deflistener (cat (exp (gen) (mul l l-0)) (exp gy x)))
-  (deflistener (cat (exp (gen) l-0) l))
-  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
-    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na l l-0)
-  (uniq-gen x)
-  (absent (x l))
-  (gen-st (pv a l))
-  (facts (neq a b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (0 0)))
-  (rule trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) l-0) l))
-    (exp (gen) (mul l l-0)) (4 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((recv (hash (exp (gen) (mul l l-0)) (exp gy x)))
-      (send (hash (exp (gen) (mul l l-0)) (exp gy x))))
-    ((recv (cat (exp (gen) (mul l l-0)) (exp gy x)))
-      (send (cat (exp (gen) (mul l l-0)) (exp gy x))))
-    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l))))
-  (label 15)
-  (parent 8)
-  (unrealized (4 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 3) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-1))
-  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly gen-st-ltx-disclose-0
-    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand resp 4) (exp (gen) y-0) (2 2))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0)))))))
-  (label 16)
-  (parent 9)
-  (unrealized (0 3) (4 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self a b-0 name)
-    (pt pt-0 pt-1 pt-2 pt-3 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 x-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 2) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-1))
-  (gen-st (pv b l) (pv self l-0) (pv a l-1))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly gen-st-ltx-disclose-0
-    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (2 2))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0)))))
-  (label 17)
-  (parent 9)
-  (unrealized (0 3) (4 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (y l l-0 x rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) x)) (neq (exp (gen) x) (gen)) (neq self b)
-    (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 4 0 init 3) (exp (gen) x-0) (2 2))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))))
-  (label 18)
-  (parent 9)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a self) (b b) (l l-0) (l-peer l) (x x) (gy (exp (gen) y))
-        (na na) (nb nb) (priv-stor priv-stor-0))))
-  (origs (na (0 2)) (l-0 (3 1)) (pt-2 (3 1)) (l (1 1)) (pt-0 (1 1))
-    (nb (2 3))))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 4 3 ltx-gen 3) (exp (gen) l-1) (2 2))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))))
-  (label 19)
-  (parent 9)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 4 1 ltx-gen 3) (exp (gen) l-1) (2 2))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))))
-  (label 20)
-  (parent 9)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-1))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 2) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (2 2))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0)))))
-  (label 21)
-  (parent 9)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (gy base) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx) (w expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy gy) (priv-stor priv-stor-0) (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp gy (mul x (rec y)))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp gy (mul x (rec y) (rec w))) w))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (4 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp gy (mul x (rec y) (rec w))) w))
-    (exp gy (mul x (rec y))) (2 2))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp gy (mul x (rec y) (rec w))) w))
-      (send (cat (exp gy (mul x (rec y) (rec w))) w))))
-  (label 22)
-  (parent 9)
-  (unrealized (4 0))
-  (comment "7 in cohort - 7 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b a-0 b-0 name)
-    (pt pt-0 pt-1 pt-2 pt-3 pval) (gy gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 x-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l))
-    (gy gy) (priv-stor priv-stor) (l l-1) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ga (exp (gen) l-1))
-    (gx (exp gy (mul x (rec y)))) (priv-stor priv-stor-0) (l l) (y y))
-  (deflistener (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
-  (defstrand init 3 (na na-0) (a a-0) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-0) (x x-0))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
-    ((3 3) (0 3)) ((4 1) (3 1)) ((5 2) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-1)
-  (uniq-gen x y x-0)
-  (absent (x l-1) (y l) (x-0 l-0))
-  (precur (4 0))
-  (gen-st (pv a l-1) (pv b l) (pv a-0 l-0))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l-1)
-    (undisclosed l))
-  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
-  (rule fact-resp-neq0 fact-resp-silly gen-st-ltx-disclose-0
-    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (4 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l-1)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-1)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l-1))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-0 (cat pt-2 (pv b l)))
-      (recv
-        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-1)) (exp gy x))))))
-    ((recv (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
-      (send (cat (exp (gen) x-0) (mul l-1 (rec x-0)))))
-    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
-  (label 23)
-  (parent 10)
-  (unrealized (3 1) (3 2) (4 0) (5 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pval) (gy base) (priv-stor priv-stor-0 locn)
-    (y l l-0 x rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l))
-    (gy gy) (priv-stor priv-stor) (l l-0) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ga (exp (gen) l-0))
-    (gx (exp gy (mul (rec y) x))) (priv-stor priv-stor-0) (l l) (y y))
-  (deflistener (cat (exp (gen) x) (mul l-0 (rec x))))
-  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
-    ((3 3) (0 3)) ((4 1) (3 1)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (4 0))
-  (gen-st (pv a l-0) (pv b l))
-  (facts (silly (exp gy (mul (rec y) x)))
-    (neq (exp gy (mul (rec y) x)) (gen)) (neq a b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 5 0 init 3) (exp (gen) x-0) (4 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l-0))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-0 (cat pt-2 (pv b l)))
-      (recv
-        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na a b (exp gy (mul (rec y) x))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((recv (cat (exp (gen) x) (mul l-0 (rec x))))
-      (send (cat (exp (gen) x) (mul l-0 (rec x))))))
-  (label 24)
-  (parent 10)
-  (unrealized (3 1) (3 2) (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pval) (gy base) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l))
-    (gy gy) (priv-stor priv-stor) (l l-0) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ga (exp (gen) l-0))
-    (gx (exp gy (mul x (rec y)))) (priv-stor priv-stor-0) (l l) (y y))
-  (deflistener (cat (gen) l-0))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (4 0)) ((2 1) (3 0))
-    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 1)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (4 0))
-  (gen-st (pv a l-0) (pv b l))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (contracted (l-1 l-0) (w l-0)) (gen) (4 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l-0))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-0 (cat pt-2 (pv b l)))
-      (recv
-        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((recv (cat (gen) l-0)) (send (cat (gen) l-0))))
-  (label 25)
-  (parent 10)
-  (unrealized (3 2) (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (gy base) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy gy) (priv-stor priv-stor-0) (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp gy (mul x (rec y)))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 1 5 ltx-gen 3) (exp (gen) l-1) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))))
-  (label 26)
-  (parent 10)
-  (unrealized (2 2))
-  (comment "7 in cohort - 7 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
-    (pt pt-0 pt-1 pt-2 pt-3 pval) (gy ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l))
-    (gy gy) (priv-stor priv-stor) (l l-1) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ga (exp (gen) l-1))
-    (gx (exp gy (mul x (rec y)))) (priv-stor priv-stor-0) (l l) (y y))
-  (deflistener (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-0) (y y-0))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
-    ((3 3) (0 3)) ((4 1) (3 1)) ((5 3) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-1)
-  (uniq-gen x y y-0)
-  (absent (x l-1) (y l) (y-0 l-0))
-  (precur (4 0))
-  (gen-st (pv a l-1) (pv b l) (pv b-0 l-0))
-  (facts (silly gx) (silly (exp gy (mul x (rec y)))) (neq gx (gen))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l-1)
-    (undisclosed l))
-  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
-  (rule fact-resp-neq0 fact-resp-silly gen-st-ltx-disclose-0
-    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand resp 4) (exp (gen) y-0) (4 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l-1)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-1)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l-1))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-0 (cat pt-2 (pv b l)))
-      (recv
-        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-1)) (exp gy x))))))
-    ((recv (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
-      (send (cat (exp (gen) y-0) (mul l-1 (rec y-0)))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
-      (recv (sig (body a-0 ga (pubk "sig" a-0)) (privk "sig" a-0)))
-      (recv (cat na-0 a-0 b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a-0 b-0 (hash (exp ga l-0) (exp gx y-0)))))))
-  (label 27)
-  (parent 10)
-  (unrealized (3 1) (3 2) (4 0) (5 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pval) (gy base) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ga (exp (gen) l))
-    (gx (exp gy (mul x (rec y)))) (priv-stor priv-stor-0) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l-0) (mul l (rec l-0))))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
-    ((2 2) (4 0)) ((3 3) (0 3)) ((4 1) (3 1)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (4 0))
-  (gen-st (pv a l) (pv b l-0))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 5 2 ltx-gen 3) (exp (gen) l-1) (4 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
-      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((recv (cat (exp (gen) l-0) (mul l (rec l-0))))
-      (send (cat (exp (gen) l-0) (mul l (rec l-0))))))
-  (label 28)
-  (parent 10)
-  (unrealized (3 1) (3 2) (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gy base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l))
-    (gy gy) (priv-stor priv-stor) (l l-0) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ga (exp (gen) l-0))
-    (gx (exp gy (mul x (rec y)))) (priv-stor priv-stor-0) (l l) (y y))
-  (deflistener (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
-    ((3 3) (0 3)) ((4 1) (3 1)) ((5 2) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (4 0))
-  (gen-st (pv a l-0) (pv b l))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (4 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l-0))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-0 (cat pt-2 (pv b l)))
-      (recv
-        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((recv (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
-      (send (cat (exp (gen) l-1) (mul l-0 (rec l-1)))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
-      (send
-        (sig (body self (exp (gen) l-1) (pubk "sig" self))
-          (privk "sig" self)))))
-  (label 29)
-  (parent 10)
-  (unrealized (3 1) (3 2) (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval) (gy base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b)
-    (ga (exp (gen) (mul l l-0 (rec l-1)))) (gx (exp gy (mul x (rec y))))
-    (priv-stor priv-stor-1) (l l-1) (y y))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
-  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 3) (0 3))
-    ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1)) ((6 2) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l) (y l-1))
-  (gen-st (pv a l) (pv b l-1))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (0 0)) ((4 1) (3 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-disclose-at-0
-    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-disclose 3) l-1 (5 0)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
-      (recv
-        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
-          (privk "sig" a))) (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
-    ((recv (cat (exp (gen) (mul l l-0)) l-1))
-      (send (cat (exp (gen) (mul l l-0)) l-1)))
-    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
-      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1)))
-  (label 30)
-  (parent 11)
-  (unrealized (3 2) (5 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 1) (4 0)) ((1 2) (0 1))
-    ((2 3) (0 3)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 3) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (4 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 5 1 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0)))))))
-  (label 31)
-  (parent 16)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l-0) (y y-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 1) (4 0)) ((3 2) (2 1)) ((4 3) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (4 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 5 3 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l-0) (exp gx y-0)))))))
-  (label 32)
-  (parent 16)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 3) (2 2)) ((5 1) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-1))
-  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((5 1) (4 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (added-strand ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
-  (label 33)
-  (parent 16)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 1) (4 0)) ((1 2) (0 1))
-    ((2 3) (0 3)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 2) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l) (y l-0) (x-0 l-0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (4 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 5 1 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0)))))
-  (label 34)
-  (parent 17)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l-0) (x x-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 1) (4 0)) ((3 2) (2 1)) ((4 2) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (4 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 5 3 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0)))))
-  (label 35)
-  (parent 17)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 2) (2 2)) ((5 1) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-1))
-  (gen-st (pv b l) (pv self l-0) (pv a l-1))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((5 1) (4 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (added-strand ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-1)))))
-  (label 36)
-  (parent 17)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) l-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (4 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) l-0))
-    (exp (gen) (mul (rec x) y l-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) l-0))
-      (send (cat (exp (gen) (mul (rec x) y)) l-0))))
-  (label 37)
-  (parent 19)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) (mul (rec x) l-0)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (4 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) l-0)) y))
-    (exp (gen) (mul (rec x) y l-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) (mul (rec x) l-0)) y))
-      (send (cat (exp (gen) (mul (rec x) l-0)) y))))
-  (label 38)
-  (parent 19)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) (mul y l-0)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (4 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y l-0)) x))
-    (exp (gen) (mul (rec x) y l-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) (mul y l-0)) x))
-      (send (cat (exp (gen) (mul y l-0)) x))))
-  (label 39)
-  (parent 19)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) l-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (4 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) l-0))
-    (exp (gen) (mul (rec x) y l-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) l-0))
-      (send (cat (exp (gen) (mul (rec x) y)) l-0))))
-  (label 40)
-  (parent 20)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) (mul (rec x) l-0)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (4 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) l-0)) y))
-    (exp (gen) (mul (rec x) y l-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) (mul (rec x) l-0)) y))
-      (send (cat (exp (gen) (mul (rec x) l-0)) y))))
-  (label 41)
-  (parent 20)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) (mul y l-0)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (4 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y l-0)) x))
-    (exp (gen) (mul (rec x) y l-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) (mul y l-0)) x))
-      (send (cat (exp (gen) (mul y l-0)) x))))
-  (label 42)
-  (parent 20)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-1))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) l-1))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 2) (2 2)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) l-1))
-    (exp (gen) (mul (rec x) y l-1)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) l-1))
-      (send (cat (exp (gen) (mul (rec x) y)) l-1))))
-  (label 43)
-  (parent 21)
-  (unrealized (5 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-1))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) l-1)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 2) (2 2)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) l-1)) y))
-    (exp (gen) (mul (rec x) y l-1)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) (mul (rec x) l-1)) y))
-      (send (cat (exp (gen) (mul (rec x) l-1)) y))))
-  (label 44)
-  (parent 21)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-1))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul y l-1)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 2) (2 2)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y l-1)) x))
-    (exp (gen) (mul (rec x) y l-1)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) (mul y l-1)) x))
-      (send (cat (exp (gen) (mul y l-1)) x))))
-  (label 45)
-  (parent 21)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self a b-0 name)
-    (pt pt-0 pt-1 pt-2 pt-3 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 rndx) (w expt)
-    (l-1 x-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w x-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w x-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-1))
-  (precur (4 0))
-  (gen-st (pv b l) (pv self l-0) (pv a l-1))
-  (facts (silly (exp (gen) (mul w x-0)))
-    (neq (exp (gen) (mul w x-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly gen-st-ltx-disclose-0
-    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w x-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0)))))
-  (label 46)
-  (parent 22)
-  (unrealized (0 3) (5 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y l rndx)
-    (w expt) (l-0 x rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y w))) (priv-stor priv-stor-0) (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w x))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) x) w))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (4 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul w x))) (neq (exp (gen) (mul w x)) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 5 0 init 3) (exp (gen) x-0) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y w))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w x))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w))))
-  (label 47)
-  (parent 22)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx) (w expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) w)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (gen) w))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (4 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) w)) (neq (exp (gen) w) (gen)) (neq self b)
-    (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (contracted (gy (exp (gen) (mul (rec x) y w))))
-    (gen) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) w)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) w)) (send (cat (gen) w))))
-  (label 48)
-  (parent 22)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y l rndx)
-    (w expt) (l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y w l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul w l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) w))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (4 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul w l-0)))
-    (neq (exp (gen) (mul w l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 5 1 ltx-gen 3) (exp (gen) l-1) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w))))
-  (label 49)
-  (parent 22)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 rndx) (w expt)
-    (l-1 y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w y-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w y-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) y-0) w))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 3) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-1))
-  (precur (4 0))
-  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) (mul w y-0))) (neq gx (gen))
-    (neq (exp (gen) (mul w y-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly gen-st-ltx-disclose-0
-    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand resp 4) (exp (gen) y-0) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w y-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0)))))))
-  (label 50)
-  (parent 22)
-  (unrealized (0 3) (5 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y l rndx)
-    (w expt) (l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w l-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l-0) w))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((3 2) (4 0)) ((4 1) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (4 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul w l-0)))
-    (neq (exp (gen) (mul w l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 5 3 ltx-gen 3) (exp (gen) l-1) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w))))
-  (label 51)
-  (parent 22)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 rndx) (w expt)
-    (l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w l-1))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w l-1))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l-1) w))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (4 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul w l-1)))
-    (neq (exp (gen) (mul w l-1)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-1) w)) (send (cat (exp (gen) l-1) w)))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0)))))
-  (label 52)
-  (parent 22)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gy gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l))
-    (gy gy) (priv-stor priv-stor) (l l-0) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ga (exp (gen) l-0))
-    (gx (exp gy (mul x (rec y)))) (priv-stor priv-stor-0) (l l) (y y))
-  (deflistener (cat (exp (gen) x-0) (mul (rec x-0) l-0)))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 1) (3 0))
-    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 1)) ((5 2) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-0))
-  (precur (4 0))
-  (gen-st (pv a l-0) (pv b l))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (0 0)) ((1 1) (5 0)) ((2 1) (3 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 6 1 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (5 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l-0))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-0 (cat pt-2 (pv b l)))
-      (recv
-        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((recv (cat (exp (gen) x-0) (mul (rec x-0) l-0)))
-      (send (cat (exp (gen) x-0) (mul (rec x-0) l-0))))
-    ((load priv-stor (cat pt (pv a l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0)))))
-  (label 53)
-  (parent 23)
-  (unrealized (3 1) (3 2) (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gy gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ga (exp (gen) l))
-    (gx (exp gy (mul x (rec y)))) (priv-stor priv-stor-0) (l l-0) (y y))
-  (deflistener (cat (exp (gen) x-0) (mul l (rec x-0))))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l-0) (x x-0))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 1) (5 0))
-    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 1)) ((5 2) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l) (y l-0) (x-0 l-0))
-  (precur (4 0))
-  (gen-st (pv a l) (pv b l-0))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (0 0)) ((2 1) (3 0)) ((2 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 6 2 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (5 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
-      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((recv (cat (exp (gen) x-0) (mul l (rec x-0))))
-      (send (cat (exp (gen) x-0) (mul l (rec x-0)))))
-    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0)))))
-  (label 54)
-  (parent 23)
-  (unrealized (3 1) (3 2) (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gy gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l))
-    (gy gy) (priv-stor priv-stor) (l l-0) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ga (exp (gen) l-0))
-    (gx (exp gy (mul x (rec y)))) (priv-stor priv-stor-0) (l l) (y y))
-  (deflistener (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
-  (defstrand init 3 (na na-0) (a a-0) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
-    ((3 3) (0 3)) ((4 1) (3 1)) ((5 2) (4 0)) ((6 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-1))
-  (precur (4 0))
-  (gen-st (pv a l-0) (pv b l) (pv a-0 l-1))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (0 0)) ((2 1) (3 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (added-strand ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (5 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l-0))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-0 (cat pt-2 (pv b l)))
-      (recv
-        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((recv (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
-      (send (cat (exp (gen) x-0) (mul l-0 (rec x-0)))))
-    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
-  (label 55)
-  (parent 23)
-  (unrealized (3 1) (3 2) (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 3) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-1))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly gen-st-ltx-disclose-0
-    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand resp 4) (exp (gen) y-0) (2 2))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0)))))))
-  (label 56)
-  (parent 26)
-  (unrealized (0 3) (5 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self a b-0 name)
-    (pt pt-0 pt-1 pt-2 pt-3 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 x-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 2) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-1))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0) (pv a l-1))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly gen-st-ltx-disclose-0
-    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (2 2))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0)))))
-  (label 57)
-  (parent 26)
-  (unrealized (0 3) (5 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (y l l-0 x rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) x)) (neq (exp (gen) x) (gen)) (neq self b)
-    (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 5 0 init 3) (exp (gen) x-0) (2 2))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))))
-  (label 58)
-  (parent 26)
-  (seen 18)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 5 4 ltx-gen 3) (exp (gen) l-1) (2 2))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))))
-  (label 59)
-  (parent 26)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (3 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 5 1 ltx-gen 3) (exp (gen) l-1) (2 2))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))))
-  (label 60)
-  (parent 26)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-1))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 2) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (2 2))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0)))))
-  (label 61)
-  (parent 26)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (gy base) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx) (w expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy gy) (priv-stor priv-stor-0) (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp gy (mul x (rec y)))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp gy (mul x (rec y) (rec w))) w))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp gy (mul x (rec y) (rec w))) w))
-    (exp gy (mul x (rec y))) (2 2))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp gy (mul x (rec y) (rec w))) w))
-      (send (cat (exp gy (mul x (rec y) (rec w))) w))))
-  (label 62)
-  (parent 26)
-  (unrealized (5 0))
-  (comment "7 in cohort - 7 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gy ga gx base)
-    (priv-stor priv-stor-0 locn) (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l))
-    (gy gy) (priv-stor priv-stor) (l l-0) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ga (exp (gen) l-0))
-    (gx (exp gy (mul x (rec y)))) (priv-stor priv-stor-0) (l l) (y y))
-  (deflistener (cat (exp (gen) y-0) (mul (rec y-0) l-0)))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 1) (3 0))
-    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 1)) ((5 3) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-0))
-  (precur (4 0))
-  (gen-st (pv a l-0) (pv b l))
-  (facts (silly gx) (silly (exp gy (mul x (rec y)))) (neq gx (gen))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (0 0)) ((1 1) (5 0)) ((2 1) (3 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 6 1 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l-0))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-0 (cat pt-2 (pv b l)))
-      (recv
-        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((recv (cat (exp (gen) y-0) (mul (rec y-0) l-0)))
-      (send (cat (exp (gen) y-0) (mul (rec y-0) l-0))))
-    ((load priv-stor (cat pt (pv a l-0)))
-      (recv (sig (body a-0 ga (pubk "sig" a-0)) (privk "sig" a-0)))
-      (recv (cat na-0 a-0 a gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a-0 a (hash (exp ga l-0) (exp gx y-0)))))))
-  (label 63)
-  (parent 27)
-  (unrealized (3 1) (3 2) (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gy ga gx base)
-    (priv-stor priv-stor-0 locn) (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ga (exp (gen) l))
-    (gx (exp gy (mul x (rec y)))) (priv-stor priv-stor-0) (l l-0) (y y))
-  (deflistener (cat (exp (gen) y-0) (mul l (rec y-0))))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l-0) (y y-0))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 1) (5 0))
-    ((2 2) (0 1)) ((3 3) (0 3)) ((4 1) (3 1)) ((5 3) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-0))
-  (precur (4 0))
-  (gen-st (pv a l) (pv b l-0))
-  (facts (silly gx) (silly (exp gy (mul x (rec y)))) (neq gx (gen))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (0 0)) ((2 1) (3 0)) ((2 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 6 2 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
-      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((recv (cat (exp (gen) y-0) (mul l (rec y-0))))
-      (send (cat (exp (gen) y-0) (mul l (rec y-0)))))
-    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
-      (recv (sig (body a-0 ga (pubk "sig" a-0)) (privk "sig" a-0)))
-      (recv (cat na-0 a-0 b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a-0 b (hash (exp ga l-0) (exp gx y-0)))))))
-  (label 64)
-  (parent 27)
-  (unrealized (3 1) (3 2) (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (gy ga gx base) (priv-stor priv-stor-0 priv-stor-1 locn)
-    (x y l l-0 y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l))
-    (gy gy) (priv-stor priv-stor) (l l-0) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ga (exp (gen) l-0))
-    (gx (exp gy (mul x (rec y)))) (priv-stor priv-stor-0) (l l) (y y))
-  (deflistener (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
-    ((3 3) (0 3)) ((4 1) (3 1)) ((5 3) (4 0)) ((6 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-1))
-  (precur (4 0))
-  (gen-st (pv a l-0) (pv b l) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp gy (mul x (rec y)))) (neq gx (gen))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (0 0)) ((2 1) (3 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (added-strand ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l-0))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-0 (cat pt-2 (pv b l)))
-      (recv
-        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((recv (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
-      (send (cat (exp (gen) y-0) (mul l-0 (rec y-0)))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a-0 ga (pubk "sig" a-0)) (privk "sig" a-0)))
-      (recv (cat na-0 a-0 b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a-0 b-0 (hash (exp ga l-1) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
-  (label 65)
-  (parent 27)
-  (unrealized (3 1) (3 2) (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval) (gy base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b)
-    (ga (exp (gen) (mul l l-0 (rec l-1)))) (gx (exp gy (mul x (rec y))))
-    (priv-stor priv-stor-1) (l l-1) (y y))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
-  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) l) l-0))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (7 0)) ((2 2) (0 1))
-    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1))
-    ((6 2) (5 0)) ((7 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l) (y l-1))
-  (gen-st (pv a l) (pv b l-1))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (0 0)) ((4 1) (3 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-disclose-at-0
-    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) l) l-0))
-    (exp (gen) (mul l l-0)) (5 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
-      (recv
-        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
-          (privk "sig" a))) (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
-    ((recv (cat (exp (gen) (mul l l-0)) l-1))
-      (send (cat (exp (gen) (mul l l-0)) l-1)))
-    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
-      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
-    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0))))
-  (label 66)
-  (parent 30)
-  (unrealized (3 2) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval) (gy base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-0))
-    (gy gy) (priv-stor priv-stor) (l l) (x x))
-  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
-    (l l))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a a) (b b)
-    (ga (exp (gen) (mul l l-0 (rec l-1)))) (gx (exp gy (mul x (rec y))))
-    (priv-stor priv-stor-1) (l l-1) (y y))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
-  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) l-0) l))
-  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (7 0)) ((2 2) (0 1))
-    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1))
-    ((6 2) (5 0)) ((7 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l) (y l-1))
-  (gen-st (pv a l) (pv b l-1))
-  (facts (silly (exp gy (mul x (rec y))))
-    (neq (exp gy (mul x (rec y))) (gen)) (neq a b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (0 0)) ((4 1) (3 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-disclose-at-0
-    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) l-0) l))
-    (exp (gen) (mul l l-0)) (5 0))
-  (traces
-    ((load priv-stor (cat pt (pv a l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na a b (exp (gen) x)))
-      (recv
-        (cat gy
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor (cat pt-0 ignore))
-      (stor priv-stor (cat pt (pv a l))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
-      (recv
-        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
-          (privk "sig" a))) (recv (cat na a b (exp gy (mul x (rec y)))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb a b (hash (exp (gen) (mul l l-0)) (exp gy x))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
-    ((recv (cat (exp (gen) (mul l l-0)) l-1))
-      (send (cat (exp (gen) (mul l l-0)) l-1)))
-    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
-      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
-    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l))))
-  (label 67)
-  (parent 30)
-  (unrealized (3 2) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) y-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 1) (4 0)) ((1 2) (0 1))
-    ((2 3) (5 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 3) (2 2))
-    ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (4 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) y-0))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) y-0))
-      (send (cat (exp (gen) (mul (rec x) y)) y-0))))
-  (label 68)
-  (parent 31)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y-0)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 1) (4 0)) ((1 2) (0 1))
-    ((2 3) (5 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 3) (2 2))
-    ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (4 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y-0)) y))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) (mul (rec x) y-0)) y))
-      (send (cat (exp (gen) (mul (rec x) y-0)) y))))
-  (label 69)
-  (parent 31)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) (mul y y-0)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 1) (4 0)) ((1 2) (0 1))
-    ((2 3) (5 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 3) (2 2))
-    ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (4 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y y-0)) x))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) (mul y y-0)) x))
-      (send (cat (exp (gen) (mul y y-0)) x))))
-  (label 70)
-  (parent 31)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) y-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 1) (4 0)) ((3 2) (2 1)) ((4 3) (2 2))
-    ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (4 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) y-0))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) y-0))
-      (send (cat (exp (gen) (mul (rec x) y)) y-0))))
-  (label 71)
-  (parent 32)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y-0)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 1) (4 0)) ((3 2) (2 1)) ((4 3) (2 2))
-    ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (4 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y-0)) y))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) (mul (rec x) y-0)) y))
-      (send (cat (exp (gen) (mul (rec x) y-0)) y))))
-  (label 72)
-  (parent 32)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) (mul y y-0)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 1) (4 0)) ((3 2) (2 1)) ((4 3) (2 2))
-    ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (4 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y y-0)) x))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) (mul y y-0)) x))
-      (send (cat (exp (gen) (mul y y-0)) x))))
-  (label 73)
-  (parent 32)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) y-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 3) (2 2)) ((5 1) (4 0))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-1))
-  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((5 1) (4 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) y-0))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) y-0))
-      (send (cat (exp (gen) (mul (rec x) y)) y-0))))
-  (label 74)
-  (parent 33)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y-0)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 3) (2 2)) ((5 1) (4 0))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-1))
-  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((5 1) (4 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y-0)) y))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
-    ((recv (cat (exp (gen) (mul (rec x) y-0)) y))
-      (send (cat (exp (gen) (mul (rec x) y-0)) y))))
-  (label 75)
-  (parent 33)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul y y-0)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 3) (2 2)) ((5 1) (4 0))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-1))
-  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((5 1) (4 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y y-0)) x))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
-    ((recv (cat (exp (gen) (mul y y-0)) x))
-      (send (cat (exp (gen) (mul y y-0)) x))))
-  (label 76)
-  (parent 33)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) x-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 1) (4 0)) ((1 2) (0 1))
-    ((2 3) (5 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 2) (2 2))
-    ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l) (y l-0) (x-0 l-0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (4 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) x-0))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) x-0))
-      (send (cat (exp (gen) (mul (rec x) y)) x-0))))
-  (label 77)
-  (parent 34)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) (mul (rec x) x-0)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 1) (4 0)) ((1 2) (0 1))
-    ((2 3) (5 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 2) (2 2))
-    ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l) (y l-0) (x-0 l-0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (4 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) x-0)) y))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) (mul (rec x) x-0)) y))
-      (send (cat (exp (gen) (mul (rec x) x-0)) y))))
-  (label 78)
-  (parent 34)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) (mul y x-0)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 1) (4 0)) ((1 2) (0 1))
-    ((2 3) (5 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 2) (2 2))
-    ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l) (y l-0) (x-0 l-0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (4 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y x-0)) x))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) (mul y x-0)) x))
-      (send (cat (exp (gen) (mul y x-0)) x))))
-  (label 79)
-  (parent 34)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) x-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 1) (4 0)) ((3 2) (2 1)) ((4 2) (2 2))
-    ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (4 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) x-0))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) x-0))
-      (send (cat (exp (gen) (mul (rec x) y)) x-0))))
-  (label 80)
-  (parent 35)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) (mul (rec x) x-0)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 1) (4 0)) ((3 2) (2 1)) ((4 2) (2 2))
-    ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (4 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) x-0)) y))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) (mul (rec x) x-0)) y))
-      (send (cat (exp (gen) (mul (rec x) x-0)) y))))
-  (label 81)
-  (parent 35)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) (mul y x-0)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 1) (4 0)) ((3 2) (2 1)) ((4 2) (2 2))
-    ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (4 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y x-0)) x))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) (mul y x-0)) x))
-      (send (cat (exp (gen) (mul y x-0)) x))))
-  (label 82)
-  (parent 35)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) x-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 2) (2 2)) ((5 1) (4 0))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-1))
-  (gen-st (pv b l) (pv self l-0) (pv a l-1))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((5 1) (4 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) x-0))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-1))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) x-0))
-      (send (cat (exp (gen) (mul (rec x) y)) x-0))))
-  (label 83)
-  (parent 36)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) x-0)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 2) (2 2)) ((5 1) (4 0))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-1))
-  (gen-st (pv b l) (pv self l-0) (pv a l-1))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((5 1) (4 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) x-0)) y))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-1))))
-    ((recv (cat (exp (gen) (mul (rec x) x-0)) y))
-      (send (cat (exp (gen) (mul (rec x) x-0)) y))))
-  (label 84)
-  (parent 36)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul y x-0)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 2) (2 2)) ((5 1) (4 0))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-1))
-  (gen-st (pv b l) (pv self l-0) (pv a l-1))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((5 1) (4 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y x-0)) x))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-1))))
-    ((recv (cat (exp (gen) (mul y x-0)) x))
-      (send (cat (exp (gen) (mul y x-0)) x))))
-  (label 85)
-  (parent 36)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-1))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) l-1))
-  (defstrand ltx-disclose 3 (self self-0) (priv-stor priv-stor-1)
-    (l l-1))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (6 0)) ((4 2) (2 2))
-    ((5 1) (0 3)) ((6 2) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (gen-st (pv b l) (pv self l-0) (pv self-0 l-1))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly gen-st-ltx-disclose-0
-    trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-disclose 3) l-1 (5 0)
-    (ch-msg priv-stor-1 (cat pt-4 (pv self-0 l-1))))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) l-1))
-      (send (cat (exp (gen) (mul (rec x) y)) l-1)))
-    ((load priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1)))
-  (label 86)
-  (parent 43)
-  (unrealized (5 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l rndx) (w expt) (x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y w x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul w x-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (0 3)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 2) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l) (y l-0) (x-0 l-0))
-  (precur (4 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul w x-0)))
-    (neq (exp (gen) (mul w x-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 6 1 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w x-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0)))))
-  (label 87)
-  (parent 46)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l rndx) (w expt) (x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w x-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w x-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l-0) (x x-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 1) (5 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 2) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-0))
-  (precur (4 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul w x-0)))
-    (neq (exp (gen) (mul w x-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 6 3 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w x-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0)))))
-  (label 88)
-  (parent 46)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 rndx) (w expt)
-    (x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w x-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w x-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0))
-    ((6 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-1))
-  (precur (4 0))
-  (gen-st (pv b l) (pv self l-0) (pv a l-1))
-  (facts (silly (exp (gen) (mul w x-0)))
-    (neq (exp (gen) (mul w x-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (added-strand ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w x-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-1)))))
-  (label 89)
-  (parent 46)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y l rndx)
-    (w expt) (l-0 x rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y w))) (priv-stor priv-stor-0) (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w x))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul w x))) (neq (exp (gen) (mul w x)) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation generalization deleted (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y w))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w x))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))))
-  (label 90)
-  (parent 47)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a self) (b b) (l l-0) (l-peer l) (x x)
-        (gy (exp (gen) (mul y w))) (na na) (nb nb)
-        (priv-stor priv-stor-0))))
-  (origs (na (0 2)) (l-0 (3 1)) (pt-2 (3 1)) (l (1 1)) (pt-0 (1 1))
-    (nb (2 3))))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l x l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (gen) x))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (4 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x)) (neq (exp (gen) x) (gen)) (neq self b)
-    (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 5 2 resp 4) (exp (gen) y-0) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) x)) (send (cat (gen) x))))
-  (label 91)
-  (parent 48)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx) (w w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) w)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (gen) w))
-  (deflistener (cat (exp (gen) (mul (rec x) y w (rec w-0))) w-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) w)) (neq (exp (gen) w) (gen)) (neq self b)
-    (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y w (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) w)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) w)) (send (cat (gen) w)))
-    ((recv (cat (exp (gen) (mul (rec x) y w (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w (rec w-0))) w-0))))
-  (label 92)
-  (parent 48)
-  (unrealized (5 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l x l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) (mul x (rec l-0))))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (4 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x)) (neq (exp (gen) x) (gen)) (neq self b)
-    (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 5 2 resp 4) (exp (gen) y-0) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) (mul x (rec l-0))))
-      (send (cat (exp (gen) l-0) (mul x (rec l-0))))))
-  (label 93)
-  (parent 49)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y l rndx)
-    (w expt) (l-0 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y w l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul w l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) w))
-  (deflistener (cat (exp (gen) (mul (rec x) y w l-0 (rec w-0))) w-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul w l-0)))
-    (neq (exp (gen) (mul w l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w l-0 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w l-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
-    ((recv (cat (exp (gen) (mul (rec x) y w l-0 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w l-0 (rec w-0))) w-0))))
-  (label 94)
-  (parent 49)
-  (unrealized (5 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l rndx) (w expt) (y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y w y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul w y-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) w))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (0 3)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 3) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-0))
-  (precur (4 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) (mul w y-0))) (neq gx (gen))
-    (neq (exp (gen) (mul w y-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 6 1 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w y-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0)))))))
-  (label 95)
-  (parent 50)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l rndx) (w expt) (y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w y-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w y-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) y-0) w))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l-0) (y y-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 1) (5 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 3) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-0))
-  (precur (4 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly gx) (silly (exp (gen) (mul w y-0))) (neq gx (gen))
-    (neq (exp (gen) (mul w y-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 6 3 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w y-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l-0) (exp gx y-0)))))))
-  (label 96)
-  (parent 50)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 rndx) (w expt)
-    (y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w y-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w y-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) y-0) w))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 3) (4 0))
-    ((6 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-1))
-  (precur (4 0))
-  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) (mul w y-0))) (neq gx (gen))
-    (neq (exp (gen) (mul w y-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (added-strand ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w y-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
-  (label 97)
-  (parent 50)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x l l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l) (mul x (rec l))))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((3 2) (4 0)) ((4 1) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (4 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x)) (neq (exp (gen) x) (gen)) (neq self b)
-    (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 5 2 resp 4) (exp (gen) y-0) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l) (mul x (rec l))))
-      (send (cat (exp (gen) l) (mul x (rec l))))))
-  (label 98)
-  (parent 51)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y l rndx)
-    (w expt) (l-0 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w l-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l-0) w))
-  (deflistener (cat (exp (gen) (mul (rec x) y w l-0 (rec w-0))) w-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((3 2) (4 0)) ((4 1) (2 2))
-    ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul w l-0)))
-    (neq (exp (gen) (mul w l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w l-0 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w l-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
-    ((recv (cat (exp (gen) (mul (rec x) y w l-0 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w l-0 (rec w-0))) w-0))))
-  (label 99)
-  (parent 51)
-  (unrealized (5 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l x l-0 l-1 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-1) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) (mul x (rec l-0))))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l) (y l-1))
-  (precur (4 0))
-  (gen-st (pv b l-1) (pv self l))
-  (facts (silly (exp (gen) x)) (neq (exp (gen) x) (gen)) (neq self b)
-    (undisclosed l) (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 2 resp 4) (exp (gen) y-0) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x y)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) (mul x (rec l-0))))
-      (send (cat (exp (gen) l-0) (mul x (rec l-0)))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-0)))
-      (send
-        (sig (body self-0 (exp (gen) l-0) (pubk "sig" self-0))
-          (privk "sig" self-0)))))
-  (label 100)
-  (parent 52)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 rndx) (w expt)
-    (l-1 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w l-1))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w l-1))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l-1) w))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y w l-1 (rec w-0))) w-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul w l-1)))
-    (neq (exp (gen) (mul w l-1)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w l-1 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w l-1)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-1) w)) (send (cat (exp (gen) l-1) w)))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y w l-1 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w l-1 (rec w-0))) w-0))))
-  (label 101)
-  (parent 52)
-  (unrealized (6 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (0 3)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 3) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-0))
-  (precur (3 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 6 1 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0)))))))
-  (label 102)
-  (parent 56)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l-0) (y y-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (5 0)) ((4 2) (3 0))
-    ((5 3) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-0))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 6 4 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l-0) (exp gx y-0)))))))
-  (label 103)
-  (parent 56)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 3) (2 2))
-    ((6 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-1))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (added-strand ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
-  (label 104)
-  (parent 56)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (0 3)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 2) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l) (y l-0) (x-0 l-0))
-  (precur (3 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 6 1 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0)))))
-  (label 105)
-  (parent 57)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l-0) (x x-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (5 0)) ((4 2) (3 0))
-    ((5 2) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-0))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 6 4 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0)))))
-  (label 106)
-  (parent 57)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 2) (2 2))
-    ((6 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-1))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0) (pv a l-1))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (added-strand ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-1)))))
-  (label 107)
-  (parent 57)
-  (unrealized (0 3))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) l-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) l-0))
-    (exp (gen) (mul (rec x) y l-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) l-0))
-      (send (cat (exp (gen) (mul (rec x) y)) l-0))))
-  (label 108)
-  (parent 59)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) (mul (rec x) l-0)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) l-0)) y))
-    (exp (gen) (mul (rec x) y l-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) (mul (rec x) l-0)) y))
-      (send (cat (exp (gen) (mul (rec x) l-0)) y))))
-  (label 109)
-  (parent 59)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) (mul y l-0)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y l-0)) x))
-    (exp (gen) (mul (rec x) y l-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) (mul y l-0)) x))
-      (send (cat (exp (gen) (mul y l-0)) x))))
-  (label 110)
-  (parent 59)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) l-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (3 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) l-0))
-    (exp (gen) (mul (rec x) y l-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) l-0))
-      (send (cat (exp (gen) (mul (rec x) y)) l-0))))
-  (label 111)
-  (parent 60)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) (mul (rec x) l-0)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (3 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) l-0)) y))
-    (exp (gen) (mul (rec x) y l-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) (mul (rec x) l-0)) y))
-      (send (cat (exp (gen) (mul (rec x) l-0)) y))))
-  (label 112)
-  (parent 60)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) (mul y l-0)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (3 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y l-0)) x))
-    (exp (gen) (mul (rec x) y l-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) (mul y l-0)) x))
-      (send (cat (exp (gen) (mul y l-0)) x))))
-  (label 113)
-  (parent 60)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-1))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) l-1))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 2) (2 2))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) l-1))
-    (exp (gen) (mul (rec x) y l-1)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) l-1))
-      (send (cat (exp (gen) (mul (rec x) y)) l-1))))
-  (label 114)
-  (parent 61)
-  (unrealized (6 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-1))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) l-1)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 2) (2 2))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) l-1)) y))
-    (exp (gen) (mul (rec x) y l-1)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) (mul (rec x) l-1)) y))
-      (send (cat (exp (gen) (mul (rec x) l-1)) y))))
-  (label 115)
-  (parent 61)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-1))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul y l-1)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 2) (2 2))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y l-1)) x))
-    (exp (gen) (mul (rec x) y l-1)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) (mul y l-1)) x))
-      (send (cat (exp (gen) (mul y l-1)) x))))
-  (label 116)
-  (parent 61)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self a b-0 name)
-    (pt pt-0 pt-1 pt-2 pt-3 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 rndx) (w expt)
-    (l-1 x-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w x-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w x-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-1))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l) (pv self l-0) (pv a l-1))
-  (facts (silly (exp (gen) (mul w x-0)))
-    (neq (exp (gen) (mul w x-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly gen-st-ltx-disclose-0
-    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w x-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0)))))
-  (label 117)
-  (parent 62)
-  (unrealized (0 3) (6 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y l rndx)
-    (w expt) (l-0 x rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y w))) (priv-stor priv-stor-0) (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w x))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) x) w))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul w x))) (neq (exp (gen) (mul w x)) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 0 init 3) (exp (gen) x-0) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y w))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w x))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w))))
-  (label 118)
-  (parent 62)
-  (seen 47)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx) (w expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) w)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (gen) w))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) w)) (neq (exp (gen) w) (gen)) (neq self b)
-    (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (contracted (gy (exp (gen) (mul (rec x) y w))))
-    (gen) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) w)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) w)) (send (cat (gen) w))))
-  (label 119)
-  (parent 62)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y l rndx)
-    (w expt) (l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y w l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul w l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) w))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul w l-0)))
-    (neq (exp (gen) (mul w l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 1 ltx-gen 3) (exp (gen) l-1) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w))))
-  (label 120)
-  (parent 62)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 rndx) (w expt)
-    (l-1 y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w y-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w y-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) y-0) w))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 3) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-1))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) (mul w y-0))) (neq gx (gen))
-    (neq (exp (gen) (mul w y-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly gen-st-ltx-disclose-0
-    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand resp 4) (exp (gen) y-0) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w y-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0)))))))
-  (label 121)
-  (parent 62)
-  (unrealized (0 3) (6 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y l rndx)
-    (w expt) (l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w l-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l-0) w))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((4 2) (5 0))
-    ((5 1) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul w l-0)))
-    (neq (exp (gen) (mul w l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 4 ltx-gen 3) (exp (gen) l-1) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w))))
-  (label 122)
-  (parent 62)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 rndx) (w expt)
-    (l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w l-1))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w l-1))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l-1) w))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul w l-1)))
-    (neq (exp (gen) (mul w l-1)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-1)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-1) w)) (send (cat (exp (gen) l-1) w)))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0)))))
-  (label 123)
-  (parent 62)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-1))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) l-1))
-  (defstrand ltx-disclose 3 (self self-0) (priv-stor priv-stor-1)
-    (l l-1))
-  (deflistener (cat (exp (gen) (rec x)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (6 0)) ((4 2) (2 2))
-    ((5 1) (0 3)) ((6 2) (5 0)) ((7 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (gen-st (pv b l) (pv self l-0) (pv self-0 l-1))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-disclose-at-0
-    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (rec x)) y))
-    (exp (gen) (mul (rec x) y)) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) l-1))
-      (send (cat (exp (gen) (mul (rec x) y)) l-1)))
-    ((load priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
-    ((recv (cat (exp (gen) (rec x)) y))
-      (send (cat (exp (gen) (rec x)) y))))
-  (label 124)
-  (parent 86)
-  (unrealized (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-1))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) l-1))
-  (defstrand ltx-disclose 3 (self self-0) (priv-stor priv-stor-1)
-    (l l-1))
-  (deflistener (cat (exp (gen) y) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (6 0)) ((4 2) (2 2))
-    ((5 1) (0 3)) ((6 2) (5 0)) ((7 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (gen-st (pv b l) (pv self l-0) (pv self-0 l-1))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-disclose-at-0
-    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) y) x))
-    (exp (gen) (mul (rec x) y)) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) l-1))
-      (send (cat (exp (gen) (mul (rec x) y)) l-1)))
-    ((load priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
-  (label 125)
-  (parent 86)
-  (unrealized (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l x x-0 l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0))))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (0 3)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 2) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x x-0 y)
-  (absent (x l) (x-0 l-0) (y l-0))
-  (precur (4 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x)) (neq (exp (gen) x) (gen)) (neq self b)
-    (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 2 resp 4) (exp (gen) y-0) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0))))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0)))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0)))))
-  (label 126)
-  (parent 87)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l rndx) (w expt) (x-0 l-0 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y w x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul w x-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 2) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l) (y l-0) (x-0 l-0))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul w x-0)))
-    (neq (exp (gen) (mul w x-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w x-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))))
-  (label 127)
-  (parent 87)
-  (unrealized (6 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l x x-0 l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0))))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l) (x x-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 1) (5 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 2) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x x-0 y)
-  (absent (x l) (x-0 l) (y l-0))
-  (precur (4 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x)) (neq (exp (gen) x) (gen)) (neq self b)
-    (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 2 resp 4) (exp (gen) y-0) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0))))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0)))))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0)))))
-  (label 128)
-  (parent 88)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l rndx) (w expt) (x-0 l-0 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w x-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w x-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 1) (5 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 2) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-0))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul w x-0)))
-    (neq (exp (gen) (mul w x-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w x-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))))
-  (label 129)
-  (parent 88)
-  (unrealized (6 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x x-0 l-1 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-1) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0))))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-0) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0))
-    ((6 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen x x-0 y)
-  (absent (x l) (x-0 l-0) (y l-1))
-  (precur (4 0))
-  (gen-st (pv b l-1) (pv self l) (pv a l-0))
-  (facts (silly (exp (gen) x)) (neq (exp (gen) x) (gen)) (neq self b)
-    (undisclosed l) (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 2 resp 4) (exp (gen) y-0) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x y)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0))))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0)))))
-    ((load priv-stor-1 (cat pt-3 (pv a l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-0)))))
-  (label 130)
-  (parent 89)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 rndx) (w expt)
-    (x-0 l-1 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w x-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w x-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-1))
-  (precur (4 0) (7 0))
-  (gen-st (pv b l) (pv self l-0) (pv a l-1))
-  (facts (silly (exp (gen) (mul w x-0)))
-    (neq (exp (gen) (mul w x-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w x-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-1))))
-    ((recv (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))))
-  (label 131)
-  (parent 89)
-  (unrealized (7 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x rndx)
-    (w expt) (l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul w y))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (gen) (mul x w)))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x w))) (neq (exp (gen) (mul x w)) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 2 resp 4) (exp (gen) y-0) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) (mul x w))) (send (cat (gen) (mul x w))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 132)
-  (parent 92)
-  (unrealized (4 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x rndx)
-    (w expt) (l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul w y))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) (mul x w (rec l-0))))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x w))) (neq (exp (gen) (mul x w)) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 2 resp 4) (exp (gen) y-0) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) (mul x w (rec l-0))))
-      (send (cat (exp (gen) l-0) (mul x w (rec l-0)))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 133)
-  (parent 94)
-  (unrealized (4 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l x y l-0 y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) y-0)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-0) (y y-0))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y) (mul x (rec y))))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (0 3)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 3) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-0))
-  (precur (4 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) x)) (neq gx (gen))
-    (neq (exp (gen) x) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 2 resp 4) (exp (gen) y-1) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y) (mul x (rec y))))
-      (send (cat (exp (gen) y) (mul x (rec y)))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y)))))))
-  (label 134)
-  (parent 95)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l rndx) (w expt) (y-0 l-0 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y w y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul w y-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) w))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 3) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-0))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) (mul w y-0))) (neq gx (gen))
-    (neq (exp (gen) (mul w y-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w y-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))))
-  (label 135)
-  (parent 95)
-  (unrealized (6 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l x y l-0 y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) y-0)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-0) (y y-0))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y) (mul x (rec y))))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l) (y y))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 1) (5 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 3) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l) (y-0 l-0))
-  (precur (4 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) x)) (neq gx (gen))
-    (neq (exp (gen) x) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 2 resp 4) (exp (gen) y-1) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y) (mul x (rec y))))
-      (send (cat (exp (gen) y) (mul x (rec y)))))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y)
-          (enc na-0 nb-0 a self (hash (exp ga l) (exp gx y)))))))
-  (label 136)
-  (parent 96)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l rndx) (w expt) (y-0 l-0 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w y-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w y-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) y-0) w))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 1) (5 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 3) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-0))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly gx) (silly (exp (gen) (mul w y-0))) (neq gx (gen))
-    (neq (exp (gen) (mul w y-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w y-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))))
-  (label 137)
-  (parent 96)
-  (unrealized (6 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y l-1 y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) y-0)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-1) (y y-0))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y) (mul x (rec y))))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-0) (y y))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 3) (4 0))
-    ((6 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-1))
-  (precur (4 0))
-  (gen-st (pv b l-1) (pv self l) (pv b-0 l-0))
-  (facts (silly gx) (silly (exp (gen) x)) (neq gx (gen))
-    (neq (exp (gen) x) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 2 resp 4) (exp (gen) y-1) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y) (mul x (rec y))))
-      (send (cat (exp (gen) y) (mul x (rec y)))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-0) (exp gx y))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0)))))
-  (label 138)
-  (parent 97)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 rndx) (w expt)
-    (y-0 l-1 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w y-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w y-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) y-0) w))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 3) (4 0))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-1))
-  (precur (4 0) (7 0))
-  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) (mul w y-0))) (neq gx (gen))
-    (neq (exp (gen) (mul w y-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w y-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
-    ((recv (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))))
-  (label 139)
-  (parent 97)
-  (unrealized (7 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
-    (w expt) (l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul w y))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l) (mul x (rec l) w)))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((3 2) (4 0)) ((4 1) (2 2))
-    ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x w))) (neq (exp (gen) (mul x w)) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 2 resp 4) (exp (gen) y-0) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l) (mul x (rec l) w)))
-      (send (cat (exp (gen) l) (mul x (rec l) w))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 140)
-  (parent 99)
-  (unrealized (4 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l x l-0 rndx) (w expt)
-    (l-1 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul w y))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-1) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) (mul x (rec l-0) w)))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l) (y l-1))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-1) (pv self l))
-  (facts (silly (exp (gen) (mul x w))) (neq (exp (gen) (mul x w)) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 2 resp 4) (exp (gen) y-0) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) (mul x (rec l-0) w)))
-      (send (cat (exp (gen) l-0) (mul x (rec l-0) w))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-0)))
-      (send
-        (sig (body self-0 (exp (gen) l-0) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 141)
-  (parent 101)
-  (unrealized (4 0))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) y-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 3) (2 2)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-0))
-  (precur (3 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) y-0))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) y-0))
-      (send (cat (exp (gen) (mul (rec x) y)) y-0))))
-  (label 142)
-  (parent 102)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y-0)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 3) (2 2)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-0))
-  (precur (3 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y-0)) y))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) (mul (rec x) y-0)) y))
-      (send (cat (exp (gen) (mul (rec x) y-0)) y))))
-  (label 143)
-  (parent 102)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) (mul y y-0)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 3) (2 2)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-0))
-  (precur (3 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y y-0)) x))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) (mul y y-0)) x))
-      (send (cat (exp (gen) (mul y y-0)) x))))
-  (label 144)
-  (parent 102)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) y-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (5 0)) ((4 2) (3 0))
-    ((5 3) (2 2)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-0))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) y-0))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) y-0))
-      (send (cat (exp (gen) (mul (rec x) y)) y-0))))
-  (label 145)
-  (parent 103)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y-0)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (5 0)) ((4 2) (3 0))
-    ((5 3) (2 2)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-0))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y-0)) y))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) (mul (rec x) y-0)) y))
-      (send (cat (exp (gen) (mul (rec x) y-0)) y))))
-  (label 146)
-  (parent 103)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) (mul y y-0)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (5 0)) ((4 2) (3 0))
-    ((5 3) (2 2)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-0))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y y-0)) x))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) (mul y y-0)) x))
-      (send (cat (exp (gen) (mul y y-0)) x))))
-  (label 147)
-  (parent 103)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) y-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 3) (2 2))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-1))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) y-0))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) y-0))
-      (send (cat (exp (gen) (mul (rec x) y)) y-0))))
-  (label 148)
-  (parent 104)
-  (unrealized (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y-0)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 3) (2 2))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-1))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y-0)) y))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
-    ((recv (cat (exp (gen) (mul (rec x) y-0)) y))
-      (send (cat (exp (gen) (mul (rec x) y-0)) y))))
-  (label 149)
-  (parent 104)
-  (unrealized (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y y-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul y y-0)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 3) (2 2))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-1))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y y-0)) x))
-    (exp (gen) (mul (rec x) y y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
-    ((recv (cat (exp (gen) (mul y y-0)) x))
-      (send (cat (exp (gen) (mul y y-0)) x))))
-  (label 150)
-  (parent 104)
-  (unrealized (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) x-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 2) (2 2)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l) (y l-0) (x-0 l-0))
-  (precur (3 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) x-0))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) x-0))
-      (send (cat (exp (gen) (mul (rec x) y)) x-0))))
-  (label 151)
-  (parent 105)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) (mul (rec x) x-0)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 2) (2 2)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l) (y l-0) (x-0 l-0))
-  (precur (3 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) x-0)) y))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) (mul (rec x) x-0)) y))
-      (send (cat (exp (gen) (mul (rec x) x-0)) y))))
-  (label 152)
-  (parent 105)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) (mul y x-0)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 2) (2 2)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l) (y l-0) (x-0 l-0))
-  (precur (3 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y x-0)) x))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) (mul y x-0)) x))
-      (send (cat (exp (gen) (mul y x-0)) x))))
-  (label 153)
-  (parent 105)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) x-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (5 0)) ((4 2) (3 0))
-    ((5 2) (2 2)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-0))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) x-0))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) x-0))
-      (send (cat (exp (gen) (mul (rec x) y)) x-0))))
-  (label 154)
-  (parent 106)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) (mul (rec x) x-0)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (5 0)) ((4 2) (3 0))
-    ((5 2) (2 2)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-0))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) x-0)) y))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) (mul (rec x) x-0)) y))
-      (send (cat (exp (gen) (mul (rec x) x-0)) y))))
-  (label 155)
-  (parent 106)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) (mul y x-0)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (5 0)) ((4 2) (3 0))
-    ((5 2) (2 2)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-0))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y x-0)) x))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) (mul y x-0)) x))
-      (send (cat (exp (gen) (mul y x-0)) x))))
-  (label 156)
-  (parent 106)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) x-0))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 2) (2 2))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-1))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0) (pv a l-1))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y)) x-0))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-1))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) x-0))
-      (send (cat (exp (gen) (mul (rec x) y)) x-0))))
-  (label 157)
-  (parent 107)
-  (unrealized (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) x-0)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 2) (2 2))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-1))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0) (pv a l-1))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) x-0)) y))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-1))))
-    ((recv (cat (exp (gen) (mul (rec x) x-0)) y))
-      (send (cat (exp (gen) (mul (rec x) x-0)) y))))
-  (label 158)
-  (parent 107)
-  (unrealized (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y x-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul y x-0)) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 2) (2 2))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-1))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0) (pv a l-1))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (mul y x-0)) x))
-    (exp (gen) (mul (rec x) y x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-1))))
-    ((recv (cat (exp (gen) (mul y x-0)) x))
-      (send (cat (exp (gen) (mul y x-0)) x))))
-  (label 159)
-  (parent 107)
-  (unrealized (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-1))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) l-1))
-  (defstrand ltx-disclose 3 (self self-0) (priv-stor priv-stor-1)
-    (l l-1))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (7 0))
-    ((5 2) (2 2)) ((6 1) (0 3)) ((7 2) (6 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0) (pv self-0 l-1))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((5 1) (7 0)))
-  (rule fact-resp-neq0 fact-resp-silly gen-st-ltx-disclose-0
-    trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-disclose 3) l-1 (6 0)
-    (ch-msg priv-stor-1 (cat pt-4 (pv self-0 l-1))))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) l-1))
-      (send (cat (exp (gen) (mul (rec x) y)) l-1)))
-    ((load priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1)))
-  (label 160)
-  (parent 114)
-  (unrealized (6 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l rndx) (w expt) (x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y w x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul w x-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 1) (6 0)) ((1 2) (0 1))
-    ((2 3) (0 3)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 2) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l) (y l-0) (x-0 l-0))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul w x-0)))
-    (neq (exp (gen) (mul w x-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (6 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 7 1 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w x-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0)))))
-  (label 161)
-  (parent 117)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l rndx) (w expt) (x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w x-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w x-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l-0) (x x-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (6 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 2) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-0))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul w x-0)))
-    (neq (exp (gen) (mul w x-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 7 4 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w x-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0)))))
-  (label 162)
-  (parent 117)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 rndx) (w expt)
-    (x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w x-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w x-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)) ((7 1) (6 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-1))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l) (pv self l-0) (pv a l-1))
-  (facts (silly (exp (gen) (mul w x-0)))
-    (neq (exp (gen) (mul w x-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (added-strand ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w x-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-1)))))
-  (label 163)
-  (parent 117)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l x l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (gen) x))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x)) (neq (exp (gen) x) (gen)) (neq self b)
-    (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 2 resp 4) (exp (gen) y-0) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) x)) (send (cat (gen) x))))
-  (label 164)
-  (parent 119)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x y l l-0 rndx) (w w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) w)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (gen) w))
-  (deflistener (cat (exp (gen) (mul (rec x) y w (rec w-0))) w-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) w)) (neq (exp (gen) w) (gen)) (neq self b)
-    (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener (cat (exp (gen) (mul (rec x) y w (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) w)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) w)) (send (cat (gen) w)))
-    ((recv (cat (exp (gen) (mul (rec x) y w (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w (rec w-0))) w-0))))
-  (label 165)
-  (parent 119)
-  (unrealized (6 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l x l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) (mul x (rec l-0))))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x)) (neq (exp (gen) x) (gen)) (neq self b)
-    (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 2 resp 4) (exp (gen) y-0) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) (mul x (rec l-0))))
-      (send (cat (exp (gen) l-0) (mul x (rec l-0))))))
-  (label 166)
-  (parent 120)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y l rndx)
-    (w expt) (l-0 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y w l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul w l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) w))
-  (deflistener (cat (exp (gen) (mul (rec x) y w l-0 (rec w-0))) w-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul w l-0)))
-    (neq (exp (gen) (mul w l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w l-0 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w l-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
-    ((recv (cat (exp (gen) (mul (rec x) y w l-0 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w l-0 (rec w-0))) w-0))))
-  (label 167)
-  (parent 120)
-  (unrealized (6 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l rndx) (w expt) (y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y w y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul w y-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) w))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 1) (6 0)) ((1 2) (0 1))
-    ((2 3) (0 3)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 3) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-0))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) (mul w y-0))) (neq gx (gen))
-    (neq (exp (gen) (mul w y-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (6 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 7 1 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w y-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0)))))))
-  (label 168)
-  (parent 121)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l rndx) (w expt) (y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w y-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w y-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) y-0) w))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l-0) (y y-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (6 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 3) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-0))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly gx) (silly (exp (gen) (mul w y-0))) (neq gx (gen))
-    (neq (exp (gen) (mul w y-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (displaced 7 4 ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w y-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l-0) (exp gx y-0)))))))
-  (label 169)
-  (parent 121)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 rndx) (w expt)
-    (y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w y-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w y-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) y-0) w))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 3) (5 0)) ((7 1) (6 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-1))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) (mul w y-0))) (neq gx (gen))
-    (neq (exp (gen) (mul w y-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation channel-test (added-strand ltx-gen 2)
-    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w y-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
-  (label 170)
-  (parent 121)
-  (unrealized (0 3))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (x l l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l) (mul x (rec l))))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((4 2) (5 0))
-    ((5 1) (2 2)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x)) (neq (exp (gen) x) (gen)) (neq self b)
-    (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 2 resp 4) (exp (gen) y-0) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l) (mul x (rec l))))
-      (send (cat (exp (gen) l) (mul x (rec l))))))
-  (label 171)
-  (parent 122)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y l rndx)
-    (w expt) (l-0 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w l-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l-0) w))
-  (deflistener (cat (exp (gen) (mul (rec x) y w l-0 (rec w-0))) w-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((4 2) (5 0))
-    ((5 1) (2 2)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul w l-0)))
-    (neq (exp (gen) (mul w l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w l-0 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w l-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
-    ((recv (cat (exp (gen) (mul (rec x) y w l-0 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w l-0 (rec w-0))) w-0))))
-  (label 172)
-  (parent 122)
-  (unrealized (6 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l x l-0 l-1 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-1) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) (mul x (rec l-0))))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l) (y l-1))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l-1) (pv self l))
-  (facts (silly (exp (gen) x)) (neq (exp (gen) x) (gen)) (neq self b)
-    (undisclosed l) (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 2 resp 4) (exp (gen) y-0) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x y)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) (mul x (rec l-0))))
-      (send (cat (exp (gen) l-0) (mul x (rec l-0)))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-0)))
-      (send
-        (sig (body self-0 (exp (gen) l-0) (pubk "sig" self-0))
-          (privk "sig" self-0)))))
-  (label 173)
-  (parent 123)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 rndx) (w expt)
-    (l-1 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w l-1))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w l-1))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l-1) w))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y w l-1 (rec w-0))) w-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul w l-1)))
-    (neq (exp (gen) (mul w l-1)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w l-1 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w l-1)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w l-1)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-1) w)) (send (cat (exp (gen) l-1) w)))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y w l-1 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w l-1 (rec w-0))) w-0))))
-  (label 174)
-  (parent 123)
-  (unrealized (7 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l x x-0 rndx) (w expt) (l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul w y))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) w)))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 2) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x x-0 y)
-  (absent (x l) (x-0 l-0) (y l-0))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x w))) (neq (exp (gen) (mul x w)) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 2 resp 4) (exp (gen) y-0) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) w)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) w))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 175)
-  (parent 127)
-  (unrealized (4 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l x x-0 rndx) (w expt) (l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul w y))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) w)))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l) (x x-0))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 1) (5 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 2) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x x-0 y)
-  (absent (x l) (x-0 l) (y l-0))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x w))) (neq (exp (gen) (mul x w)) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 2 resp 4) (exp (gen) y-0) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) w)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) w))))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 176)
-  (parent 129)
-  (unrealized (4 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x x-0 rndx) (w expt)
-    (l-1 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul w y))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-1) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) w)))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-0) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen x x-0 y)
-  (absent (x l) (x-0 l-0) (y l-1))
-  (precur (4 0) (7 0))
-  (gen-st (pv b l-1) (pv self l) (pv a l-0))
-  (facts (silly (exp (gen) (mul x w))) (neq (exp (gen) (mul x w)) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 2 resp 4) (exp (gen) y-0) (7 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) w)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) w))))
-    ((load priv-stor-1 (cat pt-3 (pv a l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-0))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 177)
-  (parent 131)
-  (unrealized (4 0))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (gen) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 1 ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0)))))
-  (label 178)
-  (parent 132)
-  (unrealized (0 3) (4 0) (5 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) l-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (gen) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 3 ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0)))))
-  (label 179)
-  (parent 132)
-  (unrealized (0 3) (4 0) (5 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-1))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (gen) l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-1)))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 1) (0 3))
-    ((6 1) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) l-1)) (send (cat (gen) l-1)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-1))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))))
-  (label 180)
-  (parent 132)
-  (unrealized (0 3) (4 0) (5 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x rndx)
-    (w expt) (l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul w y))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (gen) (mul x w)))
-  (deflistener (cat (exp (gen) y) w))
-  (deflistener x)
-  (precedes ((0 2) (6 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 1) (0 3))
-    ((6 1) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x w))) (neq (exp (gen) (mul x w)) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener x) (mul x w) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) (mul x w))) (send (cat (gen) (mul x w))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
-    ((recv x) (send x)))
-  (label 181)
-  (parent 132)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-0 l-0))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul l-0 l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0 l-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul l-0 l-0)))
-    (neq (exp (gen) (mul l-0 l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 1 ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) l-0)) (send (cat (exp (gen) l-0) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0 l-0)))))
-  (label 182)
-  (parent 133)
-  (unrealized (0 3) (4 0) (5 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-0 x) (w (mul (rec x) l-0)) (l-1 l-0)) (one) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0)))))
-  (label 183)
-  (parent 133)
-  (unrealized (0 3) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (y x l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) l l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul l l-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l l-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul l l-0)))
-    (neq (exp (gen) (mul l l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 3 ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l l-0)))))
-  (label 184)
-  (parent 133)
-  (unrealized (0 3) (4 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l y x l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul l-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0 l-1)))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 1) (0 3))
-    ((6 1) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul l-0 l-1)))
-    (neq (exp (gen) (mul l-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0 l-1))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))))
-  (label 185)
-  (parent 133)
-  (unrealized (0 3) (4 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l x y rndx) (w expt) (l-0 y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul w y-0))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-0) (y y-0))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) w)))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) y-0) w))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 3) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-0))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) (mul x w))) (neq gx (gen))
-    (neq (exp (gen) (mul x w)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 2 resp 4) (exp (gen) y-1) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) w)))
-      (send (cat (exp (gen) y) (mul x (rec y) w))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y))))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w))))
-  (label 186)
-  (parent 135)
-  (unrealized (4 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l x y rndx) (w expt) (l-0 y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul w y-0))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-0) (y y-0))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) w)))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l) (y y))
-  (deflistener (cat (exp (gen) y-0) w))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 1) (5 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 3) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l) (y-0 l-0))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) (mul x w))) (neq gx (gen))
-    (neq (exp (gen) (mul x w)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 2 resp 4) (exp (gen) y-1) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) w)))
-      (send (cat (exp (gen) y) (mul x (rec y) w))))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y)
-          (enc na-0 nb-0 a self (hash (exp ga l) (exp gx y))))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w))))
-  (label 187)
-  (parent 137)
-  (unrealized (4 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y rndx) (w expt)
-    (l-1 y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul w y-0))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-1) (y y-0))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) w)))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-0) (y y))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y-0) w))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 3) (4 0))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-1))
-  (precur (4 0) (7 0))
-  (gen-st (pv b l-1) (pv self l) (pv b-0 l-0))
-  (facts (silly gx) (silly (exp (gen) (mul x w))) (neq gx (gen))
-    (neq (exp (gen) (mul x w)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 2 resp 4) (exp (gen) y-1) (7 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) w)))
-      (send (cat (exp (gen) y) (mul x (rec y) w))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-0) (exp gx y))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w))))
-  (label 188)
-  (parent 139)
-  (unrealized (4 0))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (y x l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul l l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l l-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((3 2) (4 0)) ((4 1) (2 2))
-    ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul l l-0)))
-    (neq (exp (gen) (mul l l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 1 ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l l-0)))))
-  (label 189)
-  (parent 140)
-  (unrealized (0 3) (4 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) l-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((3 2) (4 0)) ((4 1) (2 2))
-    ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-0 x) (l-1 l-0) (w (mul (rec x) l-0))) (one) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0)))))
-  (label 190)
-  (parent 140)
-  (unrealized (0 3) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) l-0 l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul l-0 l-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l-0) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0 l-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((3 2) (4 0)) ((4 1) (2 2))
-    ((5 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul l-0 l-0)))
-    (neq (exp (gen) (mul l-0 l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 6 3 ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) l-0)) (send (cat (exp (gen) l-0) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0 l-0)))))
-  (label 191)
-  (parent 140)
-  (unrealized (0 3) (4 0) (5 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l y x l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) l-0 l-1))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul l-0 l-1))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l-0) l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0 l-1)))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (5 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((3 2) (4 0)) ((4 1) (2 2))
-    ((5 1) (0 3)) ((6 1) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul l-0 l-1)))
-    (neq (exp (gen) (mul l-0 l-1)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0 l-1))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))))
-  (label 192)
-  (parent 140)
-  (unrealized (0 3) (4 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l y x l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul y (rec x) l-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul l-0 l-1))) (priv-stor priv-stor) (l l-1) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) l-1))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0 l-1)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l-1) (x l))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-1) (pv self l))
-  (facts (silly (exp (gen) (mul l-0 l-1)))
-    (neq (exp (gen) (mul l-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 1 ltx-gen 2) l-2 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y l-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y l-0 l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-0)))
-      (send
-        (sig (body self-0 (exp (gen) l-0) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0 l-1)))))
-  (label 193)
-  (parent 141)
-  (unrealized (0 3) (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-1))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-1) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-1)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-0 x) (l-2 l-1) (w (mul (rec x) l-1))) (one) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-1) (one)))
-      (send (cat (exp (gen) l-1) (one))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-1)))))
-  (label 194)
-  (parent 141)
-  (unrealized (0 3) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l y x l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) l-0 l-1))) (priv-stor priv-stor-0)
-    (l l-1) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-1))
-    (gx (exp (gen) (mul l-0 l-1))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-1))
-  (deflistener (cat (exp (gen) l-0) l-1))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0 l-1)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l) (x l-1))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l) (pv self l-1))
-  (facts (silly (exp (gen) (mul l-0 l-1)))
-    (neq (exp (gen) (mul l-0 l-1)) (gen)) (neq self b) (undisclosed l-1)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 3 ltx-gen 2) l-2 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-1)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y l-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-1) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y l-0 l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-1)))
-      (send
-        (sig (body self (exp (gen) l-1) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-0)))
-      (send
-        (sig (body self-0 (exp (gen) l-0) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0 l-1)))))
-  (label 195)
-  (parent 141)
-  (unrealized (0 3) (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-1 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul l-1 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-1) l-1))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-1 l-1)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul l-1 l-1)))
-    (neq (exp (gen) (mul l-1 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 5 ltx-gen 2) l-2 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-1 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-1 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-1 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-1 l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-1) l-1)) (send (cat (exp (gen) l-1) l-1)))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-1 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-1 l-1)))))
-  (label 196)
-  (parent 141)
-  (unrealized (0 3) (4 0) (6 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb data)
-    (b self self-0 self-1 name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
-    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
-    (l l-0 y x l-1 l-2 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-1 l-2))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul l-1 l-2))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-1) l-2))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-1 l-2)))
-  (defstrand ltx-gen 2 (ignore ignore-2) (self self-1)
-    (priv-stor priv-stor-2) (l l-2))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0))
-    ((6 1) (0 3)) ((7 1) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1 l-2)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul l-1 l-2)))
-    (neq (exp (gen) (mul l-1 l-2)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-2 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-1 l-2))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-1 l-2)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-1 l-2))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-1 l-2)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-1) l-2)) (send (cat (exp (gen) l-1) l-2)))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-1 l-2)))
-      (send (cat (exp (gen) y) (mul (rec x) l-1 l-2))))
-    ((load priv-stor-2 (cat pt-5 ignore-2))
-      (stor priv-stor-2 (cat pt-6 (pv self-1 l-2)))))
-  (label 197)
-  (parent 141)
-  (unrealized (0 3) (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-1))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) l-1))
-  (defstrand ltx-disclose 3 (self self-0) (priv-stor priv-stor-1)
-    (l l-1))
-  (deflistener (cat (exp (gen) (rec x)) y))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (8 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (7 0))
-    ((5 2) (2 2)) ((6 1) (0 3)) ((7 2) (6 0)) ((8 1) (6 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0) (pv self-0 l-1))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((5 1) (7 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-disclose-at-0
-    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) (rec x)) y))
-    (exp (gen) (mul (rec x) y)) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) l-1))
-      (send (cat (exp (gen) (mul (rec x) y)) l-1)))
-    ((load priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
-    ((recv (cat (exp (gen) (rec x)) y))
-      (send (cat (exp (gen) (rec x)) y))))
-  (label 198)
-  (parent 160)
-  (unrealized (8 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y l-1))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y)) l-1))
-  (defstrand ltx-disclose 3 (self self-0) (priv-stor priv-stor-1)
-    (l l-1))
-  (deflistener (cat (exp (gen) y) x))
-  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (8 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (7 0))
-    ((5 2) (2 2)) ((6 1) (0 3)) ((7 2) (6 0)) ((8 1) (6 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l-0) (y l))
-  (precur (3 0))
-  (gen-st (pv b l) (pv self l-0) (pv self-0 l-1))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((5 1) (7 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-disclose-at-0
-    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener (cat (exp (gen) y) x))
-    (exp (gen) (mul (rec x) y)) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y)) l-1))
-      (send (cat (exp (gen) (mul (rec x) y)) l-1)))
-    ((load priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
-  (label 199)
-  (parent 160)
-  (unrealized (8 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l x x-0 l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0))))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 1) (6 0)) ((1 2) (0 1))
-    ((2 3) (0 3)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 2) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x x-0 y)
-  (absent (x l) (x-0 l-0) (y l-0))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x)) (neq (exp (gen) x) (gen)) (neq self b)
-    (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (6 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 2 resp 4) (exp (gen) y-0) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0))))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0)))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0)))))
-  (label 200)
-  (parent 161)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l rndx) (w expt) (x-0 l-0 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y w x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul w x-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 1) (6 0)) ((1 2) (0 1))
-    ((2 3) (7 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 2) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l) (y l-0) (x-0 l-0))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul w x-0)))
-    (neq (exp (gen) (mul w x-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (6 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w x-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))))
-  (label 201)
-  (parent 161)
-  (unrealized (7 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l x x-0 l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0))))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l) (x x-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (6 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 2) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x x-0 y)
-  (absent (x l) (x-0 l) (y l-0))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x)) (neq (exp (gen) x) (gen)) (neq self b)
-    (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 2 resp 4) (exp (gen) y-0) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0))))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0)))))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0)))))
-  (label 202)
-  (parent 162)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (x y l rndx) (w expt) (x-0 l-0 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w x-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w x-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (6 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 2) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-0))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul w x-0)))
-    (neq (exp (gen) (mul w x-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w x-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))))
-  (label 203)
-  (parent 162)
-  (unrealized (7 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x x-0 l-1 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-1) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0))))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-0) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)) ((7 1) (6 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen x x-0 y)
-  (absent (x l) (x-0 l-0) (y l-1))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l-1) (pv self l) (pv a l-0))
-  (facts (silly (exp (gen) x)) (neq (exp (gen) x) (gen)) (neq self b)
-    (undisclosed l) (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 2 resp 4) (exp (gen) y-0) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x y)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0))))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0)))))
-    ((load priv-stor-1 (cat pt-3 (pv a l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-0)))))
-  (label 204)
-  (parent 163)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 rndx) (w expt)
-    (x-0 l-1 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w x-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w x-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (8 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)) ((7 1) (6 0)) ((8 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen x y x-0)
-  (absent (x l-0) (y l) (x-0 l-1))
-  (precur (3 0) (5 0) (8 0))
-  (gen-st (pv b l) (pv self l-0) (pv a l-1))
-  (facts (silly (exp (gen) (mul w x-0)))
-    (neq (exp (gen) (mul w x-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w x-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w x-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-1))))
-    ((recv (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w x-0 (rec w-0))) w-0))))
-  (label 205)
-  (parent 163)
-  (unrealized (8 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x rndx)
-    (w expt) (l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul w y))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (gen) (mul x w)))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x w))) (neq (exp (gen) (mul x w)) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 2 resp 4) (exp (gen) y-0) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) (mul x w))) (send (cat (gen) (mul x w))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 206)
-  (parent 165)
-  (unrealized (5 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x rndx)
-    (w expt) (l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul w y))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) (mul x w (rec l-0))))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x w))) (neq (exp (gen) (mul x w)) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 2 resp 4) (exp (gen) y-0) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) (mul x w (rec l-0))))
-      (send (cat (exp (gen) l-0) (mul x w (rec l-0)))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 207)
-  (parent 167)
-  (unrealized (5 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l x y l-0 y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) y-0)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y) (mul x (rec y))))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 1) (6 0)) ((1 2) (0 1))
-    ((2 3) (0 3)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 3) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-0))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) x)) (neq gx (gen))
-    (neq (exp (gen) x) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (6 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 2 resp 4) (exp (gen) y-1) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y) (mul x (rec y))))
-      (send (cat (exp (gen) y) (mul x (rec y)))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y)))))))
-  (label 208)
-  (parent 168)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l rndx) (w expt) (y-0 l-0 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul (rec x) y w y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul w y-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) w))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 1) (6 0)) ((1 2) (0 1))
-    ((2 3) (7 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 3) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-0))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) (mul w y-0))) (neq gx (gen))
-    (neq (exp (gen) (mul w y-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (6 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w y-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))))
-  (label 209)
-  (parent 168)
-  (unrealized (7 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l x y l-0 y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) y-0)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y) (mul x (rec y))))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l) (y y))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (6 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 3) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l) (y-0 l-0))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) x)) (neq gx (gen))
-    (neq (exp (gen) x) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 2 resp 4) (exp (gen) y-1) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y) (mul x (rec y))))
-      (send (cat (exp (gen) y) (mul x (rec y)))))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y)
-          (enc na-0 nb-0 a self (hash (exp ga l) (exp gx y)))))))
-  (label 210)
-  (parent 169)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (x y l rndx) (w expt) (y-0 l-0 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w y-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w y-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) y-0) w))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (6 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 3) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-0))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly gx) (silly (exp (gen) (mul w y-0))) (neq gx (gen))
-    (neq (exp (gen) (mul w y-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w y-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))))
-  (label 211)
-  (parent 169)
-  (unrealized (7 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y l-1 y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) y-0)) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x)) (priv-stor priv-stor) (l l-1) (y y-0))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y) (mul x (rec y))))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-0) (y y))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 3) (5 0)) ((7 1) (6 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-1))
-  (precur (3 0) (5 0))
-  (gen-st (pv b l-1) (pv self l) (pv b-0 l-0))
-  (facts (silly gx) (silly (exp (gen) x)) (neq gx (gen))
-    (neq (exp (gen) x) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 2 resp 4) (exp (gen) y-1) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x y-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y) (mul x (rec y))))
-      (send (cat (exp (gen) y) (mul x (rec y)))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-0) (exp gx y))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0)))))
-  (label 212)
-  (parent 170)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 rndx) (w expt)
-    (y-0 l-1 rndx) (w-0 expt))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul (rec x) y w y-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul w y-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) y-0) w))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (8 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 3) (5 0)) ((7 1) (6 0)) ((8 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen x y y-0)
-  (absent (x l-0) (y l) (y-0 l-1))
-  (precur (3 0) (5 0) (8 0))
-  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) (mul w y-0))) (neq gx (gen))
-    (neq (exp (gen) (mul w y-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (added-listener
-      (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-    (exp (gen) (mul (rec x) y w y-0)) (0 3))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul (rec x) y w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul w y-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w y-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
-    ((recv (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))
-      (send (cat (exp (gen) (mul (rec x) y w y-0 (rec w-0))) w-0))))
-  (label 213)
-  (parent 170)
-  (unrealized (8 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
-    (w expt) (l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul w y))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l) (mul x (rec l) w)))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((4 2) (5 0))
-    ((5 1) (2 2)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x w))) (neq (exp (gen) (mul x w)) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 2 resp 4) (exp (gen) y-0) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l) (mul x (rec l) w)))
-      (send (cat (exp (gen) l) (mul x (rec l) w))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 214)
-  (parent 172)
-  (unrealized (5 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l x l-0 rndx) (w expt)
-    (l-1 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul w y))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-1) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) (mul x (rec l-0) w)))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen x y)
-  (absent (x l) (y l-1))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-1) (pv self l))
-  (facts (silly (exp (gen) (mul x w))) (neq (exp (gen) (mul x w)) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 2 resp 4) (exp (gen) y-0) (7 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w y)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) (mul x (rec l-0) w)))
-      (send (cat (exp (gen) l-0) (mul x (rec l-0) w))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-0)))
-      (send
-        (sig (body self-0 (exp (gen) l-0) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 215)
-  (parent 174)
-  (unrealized (5 0))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l y x x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) x-0 l-0))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x-0 l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) l-0))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 2) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen y x x-0)
-  (absent (y l-0) (x l) (x-0 l-0))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x-0 l-0)))
-    (neq (exp (gen) (mul x-0 l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 1 ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-0)) (send (cat (exp (gen) x-0) l-0)))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-0)))))
-  (label 216)
-  (parent 175)
-  (unrealized (0 3) (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l l-0 y x x-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (one)))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 2) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen y x x-0)
-  (absent (y l-0) (x l) (x-0 l-0))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-1 x) (x-2 x-0) (w (mul (rec x) x-0))) (one) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (one)))
-      (send (cat (exp (gen) x-0) (one))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0)))))
-  (label 217)
-  (parent 175)
-  (unrealized (0 3) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l y x x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) x-0 l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul x-0 l-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) x-0) l-0))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l) (x x-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 2) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen y x x-0)
-  (absent (y l) (x l-0) (x-0 l))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul x-0 l-0)))
-    (neq (exp (gen) (mul x-0 l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 3 ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-0)) (send (cat (exp (gen) x-0) l-0)))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-0)))))
-  (label 218)
-  (parent 175)
-  (unrealized (0 3) (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self b-0 self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (gb base) (priv-stor priv-stor-0 priv-stor-1 locn)
-    (l l-0 y x x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) x-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) l-1))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 2) (4 0)) ((6 1) (0 3)) ((7 1) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen y x x-0)
-  (absent (y l-0) (x l) (x-0 l-0))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x-0 l-1)))
-    (neq (exp (gen) (mul x-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-1)) (send (cat (exp (gen) x-0) l-1)))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-1))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))))
-  (label 219)
-  (parent 175)
-  (unrealized (0 3) (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l y x x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) x-0 l-0))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x-0 l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) l-0))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l) (x x-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 1) (5 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 2) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen y x x-0)
-  (absent (y l-0) (x l) (x-0 l))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x-0 l-0)))
-    (neq (exp (gen) (mul x-0 l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 1 ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-0)) (send (cat (exp (gen) x-0) l-0)))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-0)))))
-  (label 220)
-  (parent 176)
-  (unrealized (0 3) (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l l-0 y x x-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (one)))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l) (x x-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 1) (5 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 2) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen y x x-0)
-  (absent (y l-0) (x l) (x-0 l))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-1 x) (x-2 x-0) (w (mul (rec x) x-0))) (one) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (one)))
-      (send (cat (exp (gen) x-0) (one))))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0)))))
-  (label 221)
-  (parent 176)
-  (unrealized (0 3) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l y x x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) x-0 l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul x-0 l-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) x-0) l-0))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 1) (5 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 2) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen y x x-0)
-  (absent (y l) (x l-0) (x-0 l-0))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul x-0 l-0)))
-    (neq (exp (gen) (mul x-0 l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 3 ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-0)) (send (cat (exp (gen) x-0) l-0)))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-0)))))
-  (label 222)
-  (parent 176)
-  (unrealized (0 3) (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self b-0 self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (gb base) (priv-stor priv-stor-0 priv-stor-1 locn)
-    (l l-0 y x x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) x-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) l-1))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l) (x x-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 1) (5 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 2) (4 0)) ((6 1) (0 3)) ((7 1) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen y x x-0)
-  (absent (y l-0) (x l) (x-0 l))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x-0 l-1)))
-    (neq (exp (gen) (mul x-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-1)) (send (cat (exp (gen) x-0) l-1)))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-1))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))))
-  (label 223)
-  (parent 176)
-  (unrealized (0 3) (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul y (rec x) x-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x-0 l-1))) (priv-stor priv-stor) (l l-1) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) l-1))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-0) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen y x x-0)
-  (absent (y l-1) (x l) (x-0 l-0))
-  (precur (4 0) (7 0))
-  (gen-st (pv b l-1) (pv self l) (pv a l-0))
-  (facts (silly (exp (gen) (mul x-0 l-1)))
-    (neq (exp (gen) (mul x-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 1 ltx-gen 2) l-2 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-1)) (send (cat (exp (gen) x-0) l-1)))
-    ((load priv-stor-1 (cat pt-3 (pv a l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-1)))))
-  (label 224)
-  (parent 177)
-  (unrealized (0 3) (4 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 l-1 y x x-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul y (rec x) x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l-1) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (one)))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-0) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen y x x-0)
-  (absent (y l-1) (x l) (x-0 l-0))
-  (precur (4 0) (7 0))
-  (gen-st (pv b l-1) (pv self l) (pv a l-0))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-1 x) (x-2 x-0) (w (mul (rec x) x-0))) (one) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (one)))
-      (send (cat (exp (gen) x-0) (one))))
-    ((load priv-stor-1 (cat pt-3 (pv a l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0)))))
-  (label 225)
-  (parent 177)
-  (unrealized (0 3) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) x-0 l-1))) (priv-stor priv-stor-0)
-    (l l-1) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-1))
-    (gx (exp (gen) (mul x-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-1))
-  (deflistener (cat (exp (gen) x-0) l-1))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen y x x-0)
-  (absent (y l-0) (x l-1) (x-0 l))
-  (precur (4 0) (7 0))
-  (gen-st (pv b l-0) (pv self l-1) (pv a l))
-  (facts (silly (exp (gen) (mul x-0 l-1)))
-    (neq (exp (gen) (mul x-0 l-1)) (gen)) (neq self b) (undisclosed l-1)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 3 ltx-gen 2) l-2 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-1)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l-0 l-1))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l-1) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l-0 l-1))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-1)))
-      (send
-        (sig (body self (exp (gen) l-1) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-1)) (send (cat (exp (gen) x-0) l-1)))
-    ((load priv-stor-1 (cat pt-3 (pv a l)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-1)))))
-  (label 226)
-  (parent 177)
-  (unrealized (0 3) (4 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) x-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) l-1))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen y x x-0)
-  (absent (y l-0) (x l) (x-0 l-1))
-  (precur (4 0) (7 0))
-  (gen-st (pv b l-0) (pv self l) (pv a l-1))
-  (facts (silly (exp (gen) (mul x-0 l-1)))
-    (neq (exp (gen) (mul x-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 6 ltx-gen 2) l-2 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-1)) (send (cat (exp (gen) x-0) l-1)))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-1))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-1)))))
-  (label 227)
-  (parent 177)
-  (unrealized (0 3) (4 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb na-0 data)
-    (b self a b-0 self-0 name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
-    (l l-0 l-1 y x x-0 l-2 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul y (rec x) x-0 l-2))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x-0 l-2))) (priv-stor priv-stor) (l l-1) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) l-2))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-0) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-2)))
-  (defstrand ltx-gen 2 (ignore ignore-2) (self self-0)
-    (priv-stor priv-stor-2) (l l-2))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 2) (4 0))
-    ((6 1) (5 0)) ((7 1) (0 3)) ((8 1) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1 l-2)
-  (uniq-gen y x x-0)
-  (absent (y l-1) (x l) (x-0 l-0))
-  (precur (4 0) (7 0))
-  (gen-st (pv b l-1) (pv self l) (pv a l-0))
-  (facts (silly (exp (gen) (mul x-0 l-2)))
-    (neq (exp (gen) (mul x-0 l-2)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-2 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-2))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y x-0 l-2)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-2))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y x-0 l-2)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-2)) (send (cat (exp (gen) x-0) l-2)))
-    ((load priv-stor-1 (cat pt-3 (pv a l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-2)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-2))))
-    ((load priv-stor-2 (cat pt-5 ignore-2))
-      (stor priv-stor-2 (cat pt-6 (pv self-0 l-2)))))
-  (label 228)
-  (parent 177)
-  (unrealized (0 3) (4 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (gen) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0)))
-  (deflistener x)
-  (precedes ((0 2) (4 0)) ((0 2) (6 0)) ((1 1) (2 0)) ((1 2) (0 1))
-    ((2 3) (5 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 1) (0 3)) ((6 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener x) (mul (rec x) l-0) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0)))) ((recv x) (send x)))
-  (label 229)
-  (parent 178)
-  (unrealized (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) l-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (gen) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0)))
-  (deflistener x)
-  (precedes ((0 2) (4 0)) ((0 2) (6 0)) ((1 1) (2 0)) ((1 2) (0 1))
-    ((2 3) (5 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 1) (0 3)) ((6 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener x) (mul (rec x) l-0) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0)))) ((recv x) (send x)))
-  (label 230)
-  (parent 179)
-  (unrealized (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-1))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (gen) l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-1)))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener x)
-  (precedes ((0 2) (4 0)) ((0 2) (7 0)) ((1 1) (2 0)) ((1 2) (0 1))
-    ((2 3) (5 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 1) (0 3)) ((6 1) (4 0)) ((7 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener x) (mul (rec x) l-1) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) l-1)) (send (cat (gen) l-1)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-1))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1))))
-    ((recv x) (send x)))
-  (label 231)
-  (parent 180)
-  (unrealized (4 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-0 l-0))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul l-0 l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0 l-0)))
-  (deflistener x)
-  (precedes ((0 2) (4 0)) ((0 2) (6 0)) ((1 1) (2 0)) ((1 2) (0 1))
-    ((2 3) (5 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 1) (0 3)) ((6 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul l-0 l-0)))
-    (neq (exp (gen) (mul l-0 l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener x) (mul (rec x) l-0 l-0) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) l-0)) (send (cat (exp (gen) l-0) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0 l-0))))
-    ((recv x) (send x)))
-  (label 232)
-  (parent 182)
-  (unrealized (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l y x y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) y-0 l-0))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul y-0 l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 3) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen y x y-0)
-  (absent (y l-0) (x l) (y-0 l-0))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-0))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 1 ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-0)) (send (cat (exp (gen) y-0) l-0)))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-0)))))
-  (label 233)
-  (parent 186)
-  (unrealized (0 3) (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l l-0 y x y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) (one)))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 3) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen y x y-0)
-  (absent (y l-0) (x l) (y-0 l-0))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-0 x) (y-1 y-0) (w (mul (rec x) y-0))) (one) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) (one)))
-      (send (cat (exp (gen) y-0) (one))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0)))))
-  (label 234)
-  (parent 186)
-  (unrealized (0 3) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l y x y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) y-0 l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul y-0 l-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) y-0) l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l) (y y-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 3) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen y x y-0)
-  (absent (y l) (x l-0) (y-0 l))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-0))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 3 ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-0)) (send (cat (exp (gen) y-0) l-0)))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l) (exp gx y-0))))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-0)))))
-  (label 235)
-  (parent 186)
-  (unrealized (0 3) (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (ga gx base) (priv-stor priv-stor-0 priv-stor-1 locn)
-    (l l-0 y x y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) y-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul y-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) l-1))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 1) (5 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 3) (4 0)) ((6 1) (0 3)) ((7 1) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen y x y-0)
-  (absent (y l-0) (x l) (y-0 l-0))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-1))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (5 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-1)) (send (cat (exp (gen) y-0) l-1)))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-1))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))))
-  (label 236)
-  (parent 186)
-  (unrealized (0 3) (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l y x y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) y-0 l-0))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul y-0 l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l) (y y-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 1) (5 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 3) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen y x y-0)
-  (absent (y l-0) (x l) (y-0 l))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-0))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 1 ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-0)) (send (cat (exp (gen) y-0) l-0)))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l) (exp gx y-0))))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-0)))))
-  (label 237)
-  (parent 187)
-  (unrealized (0 3) (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l l-0 y x y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) (one)))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l) (y y-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 1) (5 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 3) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen y x y-0)
-  (absent (y l-0) (x l) (y-0 l))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-0 x) (y-1 y-0) (w (mul (rec x) y-0))) (one) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) (one)))
-      (send (cat (exp (gen) y-0) (one))))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l) (exp gx y-0))))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0)))))
-  (label 238)
-  (parent 187)
-  (unrealized (0 3) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l y x y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) y-0 l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul y-0 l-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) y-0) l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 1) (5 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 3) (4 0)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen y x y-0)
-  (absent (y l) (x l-0) (y-0 l-0))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-0))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 3 ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-0)) (send (cat (exp (gen) y-0) l-0)))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-0)))))
-  (label 239)
-  (parent 187)
-  (unrealized (0 3) (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (ga gx base) (priv-stor priv-stor-0 priv-stor-1 locn)
-    (l l-0 y x y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) y-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul y-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) l-1))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l) (y y-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (0 0)) ((3 1) (5 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 3) (4 0)) ((6 1) (0 3)) ((7 1) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen y x y-0)
-  (absent (y l-0) (x l) (y-0 l))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-1))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((3 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-1 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-1)) (send (cat (exp (gen) y-0) l-1)))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l) (exp gx y-0))))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-1))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))))
-  (label 240)
-  (parent 187)
-  (unrealized (0 3) (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul y (rec x) y-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul y-0 l-1))) (priv-stor priv-stor) (l l-1) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) l-1))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-0) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 3) (4 0))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen y x y-0)
-  (absent (y l-1) (x l) (y-0 l-0))
-  (precur (4 0) (7 0))
-  (gen-st (pv b l-1) (pv self l) (pv b-0 l-0))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-1))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 1 ltx-gen 2) l-2 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-1)) (send (cat (exp (gen) y-0) l-1)))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-0) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-1)))))
-  (label 241)
-  (parent 188)
-  (unrealized (0 3) (4 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 l-1 y x y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul y (rec x) y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l-1) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) (one)))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-0) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 3) (4 0))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen y x y-0)
-  (absent (y l-1) (x l) (y-0 l-0))
-  (precur (4 0) (7 0))
-  (gen-st (pv b l-1) (pv self l) (pv b-0 l-0))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-0 x) (y-1 y-0) (w (mul (rec x) y-0))) (one) (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) (one)))
-      (send (cat (exp (gen) y-0) (one))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-0) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0)))))
-  (label 242)
-  (parent 188)
-  (unrealized (0 3) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) y-0 l-1))) (priv-stor priv-stor-0)
-    (l l-1) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-1))
-    (gx (exp (gen) (mul y-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-1))
-  (deflistener (cat (exp (gen) y-0) l-1))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 3) (4 0))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen y x y-0)
-  (absent (y l-0) (x l-1) (y-0 l))
-  (precur (4 0) (7 0))
-  (gen-st (pv b l-0) (pv self l-1) (pv b-0 l))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-1))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-1)) (gen)) (neq self b) (undisclosed l-1)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 3 ltx-gen 2) l-2 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-1)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l-0 l-1))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l-1) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l-0 l-1))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-1)))
-      (send
-        (sig (body self (exp (gen) l-1) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-1)) (send (cat (exp (gen) y-0) l-1)))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-1)))))
-  (label 243)
-  (parent 188)
-  (unrealized (0 3) (4 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) y-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul y-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) l-1))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 3) (4 0))
-    ((6 1) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen y x y-0)
-  (absent (y l-0) (x l) (y-0 l-1))
-  (precur (4 0) (7 0))
-  (gen-st (pv b l-0) (pv self l) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-1))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 6 ltx-gen 2) l-2 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-1)) (send (cat (exp (gen) y-0) l-1)))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-1)))))
-  (label 244)
-  (parent 188)
-  (unrealized (0 3) (4 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 self-0 name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
-    (l l-0 l-1 y x y-0 l-2 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul y (rec x) y-0 l-2))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul y-0 l-2))) (priv-stor priv-stor) (l l-1) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) l-2))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-0) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-2)))
-  (defstrand ltx-gen 2 (ignore ignore-2) (self self-0)
-    (priv-stor priv-stor-2) (l l-2))
-  (precedes ((0 2) (4 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2)) ((5 3) (4 0))
-    ((6 1) (5 0)) ((7 1) (0 3)) ((8 1) (4 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1 l-2)
-  (uniq-gen y x y-0)
-  (absent (y l-1) (x l) (y-0 l-0))
-  (precur (4 0) (7 0))
-  (gen-st (pv b l-1) (pv self l) (pv b-0 l-0))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-2))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-2)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)) ((6 1) (5 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-2 (4 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-2))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y y-0 l-2)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-2))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y y-0 l-2)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-2)) (send (cat (exp (gen) y-0) l-2)))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-0) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-2)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-2))))
-    ((load priv-stor-2 (cat pt-5 ignore-2))
-      (stor priv-stor-2 (cat pt-6 (pv self-0 l-2)))))
-  (label 245)
-  (parent 188)
-  (unrealized (0 3) (4 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) l-0 l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul l-0 l-0))) (priv-stor priv-stor) (l l) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l-0) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0 l-0)))
-  (deflistener x)
-  (precedes ((0 2) (4 0)) ((0 2) (6 0)) ((1 1) (2 0)) ((1 2) (0 1))
-    ((2 3) (5 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((3 2) (4 0))
-    ((4 1) (2 2)) ((5 1) (0 3)) ((6 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (4 0) (5 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul l-0 l-0)))
-    (neq (exp (gen) (mul l-0 l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener x) (mul (rec x) l-0 l-0) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-0)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) l-0)) (send (cat (exp (gen) l-0) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0 l-0))))
-    ((recv x) (send x)))
-  (label 246)
-  (parent 191)
-  (unrealized (4 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-1 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul l-1 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-1) l-1))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-1 l-1)))
-  (deflistener x)
-  (precedes ((0 2) (4 0)) ((0 2) (7 0)) ((1 1) (2 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (0 0)) ((3 2) (2 1)) ((4 1) (2 2))
-    ((5 2) (4 0)) ((6 1) (0 3)) ((7 1) (6 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (4 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul l-1 l-1)))
-    (neq (exp (gen) (mul l-1 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((3 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener x) (mul (rec x) l-1 l-1) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-1 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-1 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-1 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-1 l-1)))))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-1) l-1)) (send (cat (exp (gen) l-1) l-1)))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-1 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-1 l-1))))
-    ((recv x) (send x)))
-  (label 247)
-  (parent 196)
-  (unrealized (4 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l x x-0 rndx) (w expt) (l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul w y))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) w)))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 1) (6 0)) ((1 2) (0 1))
-    ((2 3) (7 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 2) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x x-0 y)
-  (absent (x l) (x-0 l-0) (y l-0))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x w))) (neq (exp (gen) (mul x w)) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (6 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 2 resp 4) (exp (gen) y-0) (7 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) w)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) w))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 248)
-  (parent 201)
-  (unrealized (5 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l x x-0 rndx) (w expt) (l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul w y))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) w)))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l) (x x-0))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (6 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 2) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen x x-0 y)
-  (absent (x l) (x-0 l) (y l-0))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x w))) (neq (exp (gen) (mul x w)) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 2 resp 4) (exp (gen) y-0) (7 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) w)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) w))))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 249)
-  (parent 203)
-  (unrealized (5 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x x-0 rndx) (w expt)
-    (l-1 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul w y))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-1) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) w)))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-0) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (8 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)) ((7 1) (6 0)) ((8 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen x x-0 y)
-  (absent (x l) (x-0 l-0) (y l-1))
-  (precur (3 0) (5 0) (8 0))
-  (gen-st (pv b l-1) (pv self l) (pv a l-0))
-  (facts (silly (exp (gen) (mul x w))) (neq (exp (gen) (mul x w)) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 9 2 resp 4) (exp (gen) y-0) (8 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w y)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) w)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) w))))
-    ((load priv-stor-1 (cat pt-3 (pv a l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-0))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 250)
-  (parent 205)
-  (unrealized (5 0))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (gen) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 1 ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0)))))
-  (label 251)
-  (parent 206)
-  (unrealized (0 3) (5 0) (6 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) l-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (gen) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 4 ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0)))))
-  (label 252)
-  (parent 206)
-  (unrealized (0 3) (5 0) (6 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-1))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (gen) l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-1)))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 1) (0 3)) ((7 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) l-1)) (send (cat (gen) l-1)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-1))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))))
-  (label 253)
-  (parent 206)
-  (unrealized (0 3) (5 0) (6 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x rndx)
-    (w expt) (l-0 y rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul w y))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (gen) (mul x w)))
-  (deflistener (cat (exp (gen) y) w))
-  (deflistener x)
-  (precedes ((0 2) (7 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 1) (0 3)) ((7 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen x y)
-  (absent (x l) (y l-0))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x w))) (neq (exp (gen) (mul x w)) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener x) (mul x w) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) (mul x w))) (send (cat (gen) (mul x w))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
-    ((recv x) (send x)))
-  (label 254)
-  (parent 206)
-  (unrealized (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-0 l-0))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul l-0 l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0 l-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul l-0 l-0)))
-    (neq (exp (gen) (mul l-0 l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 1 ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) l-0)) (send (cat (exp (gen) l-0) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0 l-0)))))
-  (label 255)
-  (parent 207)
-  (unrealized (0 3) (5 0) (6 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-0 x) (w (mul (rec x) l-0)) (l-1 l-0)) (one) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0)))))
-  (label 256)
-  (parent 207)
-  (unrealized (0 3) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (y x l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) l l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul l l-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l l-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul l l-0)))
-    (neq (exp (gen) (mul l l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 4 ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l l-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l l-0)))))
-  (label 257)
-  (parent 207)
-  (unrealized (0 3) (5 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l y x l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul l-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0 l-1)))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 1) (0 3)) ((7 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul l-0 l-1)))
-    (neq (exp (gen) (mul l-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-1)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0 l-1))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))))
-  (label 258)
-  (parent 207)
-  (unrealized (0 3) (5 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l x y rndx) (w expt) (l-0 y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul w y-0))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) w)))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) y-0) w))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 1) (6 0)) ((1 2) (0 1))
-    ((2 3) (7 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 3) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-0))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) (mul x w))) (neq gx (gen))
-    (neq (exp (gen) (mul x w)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (6 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 2 resp 4) (exp (gen) y-1) (7 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) w)))
-      (send (cat (exp (gen) y) (mul x (rec y) w))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y))))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w))))
-  (label 259)
-  (parent 209)
-  (unrealized (5 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l x y rndx) (w expt) (l-0 y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul w y-0))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) w)))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l) (y y))
-  (deflistener (cat (exp (gen) y-0) w))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (6 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 3) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l) (y-0 l-0))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) (mul x w))) (neq gx (gen))
-    (neq (exp (gen) (mul x w)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 2 resp 4) (exp (gen) y-1) (7 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) w)))
-      (send (cat (exp (gen) y) (mul x (rec y) w))))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y)
-          (enc na-0 nb-0 a self (hash (exp ga l) (exp gx y))))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w))))
-  (label 260)
-  (parent 211)
-  (unrealized (5 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y rndx) (w expt)
-    (l-1 y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul w y-0))) (priv-stor priv-stor-0) (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x w))) (priv-stor priv-stor) (l l-1) (y y-0))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) w)))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-0) (y y))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y-0) w))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (8 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 3) (5 0)) ((7 1) (6 0)) ((8 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen x y y-0)
-  (absent (x l) (y l-0) (y-0 l-1))
-  (precur (3 0) (5 0) (8 0))
-  (gen-st (pv b l-1) (pv self l) (pv b-0 l-0))
-  (facts (silly gx) (silly (exp (gen) (mul x w))) (neq gx (gen))
-    (neq (exp (gen) (mul x w)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 9 2 resp 4) (exp (gen) y-1) (8 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul w y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x w))))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w y-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) w)))
-      (send (cat (exp (gen) y) (mul x (rec y) w))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-0) (exp gx y))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0))))
-    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w))))
-  (label 261)
-  (parent 213)
-  (unrealized (5 0))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (y x l l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul l l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l l-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((4 2) (5 0))
-    ((5 1) (2 2)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul l l-0)))
-    (neq (exp (gen) (mul l l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 1 ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l l-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l l-0)))))
-  (label 262)
-  (parent 214)
-  (unrealized (0 3) (5 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) l-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((4 2) (5 0))
-    ((5 1) (2 2)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-0 x) (l-1 l-0) (w (mul (rec x) l-0))) (one) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0)))))
-  (label 263)
-  (parent 214)
-  (unrealized (0 3) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) l-0 l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul l-0 l-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l-0) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0 l-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((4 2) (5 0))
-    ((5 1) (2 2)) ((6 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul l-0 l-0)))
-    (neq (exp (gen) (mul l-0 l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 7 4 ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) l-0)) (send (cat (exp (gen) l-0) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0 l-0)))))
-  (label 264)
-  (parent 214)
-  (unrealized (0 3) (5 0) (6 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l y x l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) l-0 l-1))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul l-0 l-1))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l-0) l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0 l-1)))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (6 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((4 2) (5 0))
-    ((5 1) (2 2)) ((6 1) (0 3)) ((7 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul l-0 l-1)))
-    (neq (exp (gen) (mul l-0 l-1)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-1)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0 l-1))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))))
-  (label 265)
-  (parent 214)
-  (unrealized (0 3) (5 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l y x l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul y (rec x) l-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul l-0 l-1))) (priv-stor priv-stor) (l l-1) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) l-1))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0 l-1)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l-1) (x l))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-1) (pv self l))
-  (facts (silly (exp (gen) (mul l-0 l-1)))
-    (neq (exp (gen) (mul l-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 1 ltx-gen 2) l-2 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y l-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y l-0 l-1)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-0)))
-      (send
-        (sig (body self-0 (exp (gen) l-0) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0 l-1)))))
-  (label 266)
-  (parent 215)
-  (unrealized (0 3) (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-1))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-1) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-1)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-0 x) (l-2 l-1) (w (mul (rec x) l-1))) (one) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-1) (one)))
-      (send (cat (exp (gen) l-1) (one))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-1)))))
-  (label 267)
-  (parent 215)
-  (unrealized (0 3) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l y x l-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) l-0 l-1))) (priv-stor priv-stor-0)
-    (l l-1) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-1))
-    (gx (exp (gen) (mul l-0 l-1))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-1) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-1))
-  (deflistener (cat (exp (gen) l-0) l-1))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0 l-1)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l) (x l-1))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l) (pv self l-1))
-  (facts (silly (exp (gen) (mul l-0 l-1)))
-    (neq (exp (gen) (mul l-0 l-1)) (gen)) (neq self b) (undisclosed l-1)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 4 ltx-gen 2) l-2 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-1)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y l-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-1) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y l-0 l-1)))))))
-    ((recv (cat (exp (gen) l-1) (one)))
-      (send (cat (exp (gen) l-1) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-1)))
-      (send
-        (sig (body self (exp (gen) l-1) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-0)))
-      (send
-        (sig (body self-0 (exp (gen) l-0) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0 l-1)))))
-  (label 268)
-  (parent 215)
-  (unrealized (0 3) (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-1 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul l-1 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-1) l-1))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-1 l-1)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul l-1 l-1)))
-    (neq (exp (gen) (mul l-1 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 6 ltx-gen 2) l-2 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-1 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-1 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-1 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-1 l-1)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-1) l-1)) (send (cat (exp (gen) l-1) l-1)))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-1 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-1 l-1)))))
-  (label 269)
-  (parent 215)
-  (unrealized (0 3) (5 0) (7 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb data)
-    (b self self-0 self-1 name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
-    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
-    (l l-0 y x l-1 l-2 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-1 l-2))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul l-1 l-2))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-1) l-2))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-1 l-2)))
-  (defstrand ltx-gen 2 (ignore ignore-2) (self self-1)
-    (priv-stor priv-stor-2) (l l-2))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)) ((7 1) (0 3)) ((8 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1 l-2)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul l-1 l-2)))
-    (neq (exp (gen) (mul l-1 l-2)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-2 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-1 l-2))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-1 l-2)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-1 l-2))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-1 l-2)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-1) l-2)) (send (cat (exp (gen) l-1) l-2)))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-1 l-2)))
-      (send (cat (exp (gen) y) (mul (rec x) l-1 l-2))))
-    ((load priv-stor-2 (cat pt-5 ignore-2))
-      (stor priv-stor-2 (cat pt-6 (pv self-1 l-2)))))
-  (label 270)
-  (parent 215)
-  (unrealized (0 3) (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l y x x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) x-0 l-0))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x-0 l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) l-0))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 1) (6 0)) ((1 2) (0 1))
-    ((2 3) (7 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 2) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen y x x-0)
-  (absent (y l-0) (x l) (x-0 l-0))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x-0 l-0)))
-    (neq (exp (gen) (mul x-0 l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (6 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 1 ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-0)) (send (cat (exp (gen) x-0) l-0)))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-0)))))
-  (label 271)
-  (parent 248)
-  (unrealized (0 3) (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l l-0 y x x-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (one)))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 1) (6 0)) ((1 2) (0 1))
-    ((2 3) (7 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 2) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen y x x-0)
-  (absent (y l-0) (x l) (x-0 l-0))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (6 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-1 x) (x-2 x-0) (w (mul (rec x) x-0))) (one) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (one)))
-      (send (cat (exp (gen) x-0) (one))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0)))))
-  (label 272)
-  (parent 248)
-  (unrealized (0 3) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l y x x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) x-0 l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul x-0 l-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) x-0) l-0))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l) (x x-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 1) (6 0)) ((1 2) (0 1))
-    ((2 3) (7 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 2) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen y x x-0)
-  (absent (y l) (x l-0) (x-0 l))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul x-0 l-0)))
-    (neq (exp (gen) (mul x-0 l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((1 1) (6 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 4 ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-0)) (send (cat (exp (gen) x-0) l-0)))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-0)))))
-  (label 273)
-  (parent 248)
-  (unrealized (0 3) (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self b-0 self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (gb base) (priv-stor priv-stor-0 priv-stor-1 locn)
-    (l l-0 y x x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) x-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) l-1))
-  (defstrand init 3 (na na-0) (a b) (b b-0) (gb gb)
-    (priv-stor priv-stor) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 1) (6 0)) ((1 2) (0 1))
-    ((2 3) (7 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 2) (5 0)) ((7 1) (0 3)) ((8 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen y x x-0)
-  (absent (y l-0) (x l) (x-0 l-0))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x-0 l-1)))
-    (neq (exp (gen) (mul x-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (6 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-1)) (send (cat (exp (gen) x-0) l-1)))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 b b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-1))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))))
-  (label 274)
-  (parent 248)
-  (unrealized (0 3) (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l y x x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) x-0 l-0))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x-0 l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) l-0))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l) (x x-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (6 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 2) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen y x x-0)
-  (absent (y l-0) (x l) (x-0 l))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x-0 l-0)))
-    (neq (exp (gen) (mul x-0 l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 1 ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-0)) (send (cat (exp (gen) x-0) l-0)))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-0)))))
-  (label 275)
-  (parent 249)
-  (unrealized (0 3) (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l l-0 y x x-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (one)))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l) (x x-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (6 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 2) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen y x x-0)
-  (absent (y l-0) (x l) (x-0 l))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-1 x) (x-2 x-0) (w (mul (rec x) x-0))) (one) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (one)))
-      (send (cat (exp (gen) x-0) (one))))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0)))))
-  (label 276)
-  (parent 249)
-  (unrealized (0 3) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
-    (pt pt-0 pt-1 pt-2 pval) (gb base) (priv-stor priv-stor-0 locn)
-    (l y x x-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) x-0 l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul x-0 l-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) x-0) l-0))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l-0) (x x-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (6 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 2) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0)
-  (uniq-gen y x x-0)
-  (absent (y l) (x l-0) (x-0 l-0))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul x-0 l-0)))
-    (neq (exp (gen) (mul x-0 l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 4 ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-0)) (send (cat (exp (gen) x-0) l-0)))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-0)))))
-  (label 277)
-  (parent 249)
-  (unrealized (0 3) (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self b-0 self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (gb base) (priv-stor priv-stor-0 priv-stor-1 locn)
-    (l l-0 y x x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) x-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) l-1))
-  (defstrand init 3 (na na-0) (a self) (b b-0) (gb gb)
-    (priv-stor priv-stor-0) (l l) (x x-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (6 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 2) (5 0)) ((7 1) (0 3)) ((8 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen y x x-0)
-  (absent (y l-0) (x l) (x-0 l))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul x-0 l-1)))
-    (neq (exp (gen) (mul x-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-1)) (send (cat (exp (gen) x-0) l-1)))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 self b-0 (exp (gen) x-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-1))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))))
-  (label 278)
-  (parent 249)
-  (unrealized (0 3) (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul y (rec x) x-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x-0 l-1))) (priv-stor priv-stor) (l l-1) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) l-1))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-0) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (8 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)) ((7 1) (6 0)) ((8 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen y x x-0)
-  (absent (y l-1) (x l) (x-0 l-0))
-  (precur (3 0) (5 0) (8 0))
-  (gen-st (pv b l-1) (pv self l) (pv a l-0))
-  (facts (silly (exp (gen) (mul x-0 l-1)))
-    (neq (exp (gen) (mul x-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 9 1 ltx-gen 2) l-2 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-1)) (send (cat (exp (gen) x-0) l-1)))
-    ((load priv-stor-1 (cat pt-3 (pv a l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-1)))))
-  (label 279)
-  (parent 250)
-  (unrealized (0 3) (5 0) (8 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 l-1 y x x-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul y (rec x) x-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) x-0)) (priv-stor priv-stor) (l l-1) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) (one)))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-0) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (8 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)) ((7 1) (6 0)) ((8 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen y x x-0)
-  (absent (y l-1) (x l) (x-0 l-0))
-  (precur (3 0) (5 0) (8 0))
-  (gen-st (pv b l-1) (pv self l) (pv a l-0))
-  (facts (silly (exp (gen) x-0)) (neq (exp (gen) x-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-1 x) (x-2 x-0) (w (mul (rec x) x-0))) (one) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y x-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y x-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) (one)))
-      (send (cat (exp (gen) x-0) (one))))
-    ((load priv-stor-1 (cat pt-3 (pv a l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0)))))
-  (label 280)
-  (parent 250)
-  (unrealized (0 3) (8 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) x-0 l-1))) (priv-stor priv-stor-0)
-    (l l-1) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-1))
-    (gx (exp (gen) (mul x-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l-1) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-1))
-  (deflistener (cat (exp (gen) x-0) l-1))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (8 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)) ((7 1) (6 0)) ((8 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen y x x-0)
-  (absent (y l-0) (x l-1) (x-0 l))
-  (precur (3 0) (5 0) (8 0))
-  (gen-st (pv b l-0) (pv self l-1) (pv a l))
-  (facts (silly (exp (gen) (mul x-0 l-1)))
-    (neq (exp (gen) (mul x-0 l-1)) (gen)) (neq self b) (undisclosed l-1)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 9 4 ltx-gen 2) l-2 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-1)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l-0 l-1))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l-1) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l-0 l-1))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((recv (cat (exp (gen) l-1) (one)))
-      (send (cat (exp (gen) l-1) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-1)))
-      (send
-        (sig (body self (exp (gen) l-1) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-1)) (send (cat (exp (gen) x-0) l-1)))
-    ((load priv-stor-1 (cat pt-3 (pv a l)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-1)))))
-  (label 281)
-  (parent 250)
-  (unrealized (0 3) (5 0) (8 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x x-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) x-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) l-1))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-1) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (8 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)) ((7 1) (6 0)) ((8 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1)
-  (uniq-gen y x x-0)
-  (absent (y l-0) (x l) (x-0 l-1))
-  (precur (3 0) (5 0) (8 0))
-  (gen-st (pv b l-0) (pv self l) (pv a l-1))
-  (facts (silly (exp (gen) (mul x-0 l-1)))
-    (neq (exp (gen) (mul x-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 9 7 ltx-gen 2) l-2 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y x-0 l-1)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-1)) (send (cat (exp (gen) x-0) l-1)))
-    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-1))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-1)))))
-  (label 282)
-  (parent 250)
-  (unrealized (0 3) (5 0) (8 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb na-0 data)
-    (b self a b-0 self-0 name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval) (gb base)
-    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
-    (l l-0 l-1 y x x-0 l-2 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul y (rec x) x-0 l-2))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul x-0 l-2))) (priv-stor priv-stor) (l l-1) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) x-0) l-2))
-  (defstrand init 3 (na na-0) (a a) (b b-0) (gb gb)
-    (priv-stor priv-stor-1) (l l-0) (x x-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) x-0 l-2)))
-  (defstrand ltx-gen 2 (ignore ignore-2) (self self-0)
-    (priv-stor priv-stor-2) (l l-2))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (8 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 2) (5 0)) ((7 1) (6 0)) ((8 1) (0 3)) ((9 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb na-0 l l-0 l-1 l-2)
-  (uniq-gen y x x-0)
-  (absent (y l-1) (x l) (x-0 l-0))
-  (precur (3 0) (5 0) (8 0))
-  (gen-st (pv b l-1) (pv self l) (pv a l-0))
-  (facts (silly (exp (gen) (mul x-0 l-2)))
-    (neq (exp (gen) (mul x-0 l-2)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-2 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) x-0 l-2))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y x-0 l-2)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul x-0 l-2))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y x-0 l-2)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) x-0) l-2)) (send (cat (exp (gen) x-0) l-2)))
-    ((load priv-stor-1 (cat pt-3 (pv a l-0)))
-      (recv (sig (body b-0 gb (pubk "sig" b-0)) (privk "sig" b-0)))
-      (send (cat na-0 a b-0 (exp (gen) x-0))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv a l-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) x-0 l-2)))
-      (send (cat (exp (gen) y) (mul (rec x) x-0 l-2))))
-    ((load priv-stor-2 (cat pt-5 ignore-2))
-      (stor priv-stor-2 (cat pt-6 (pv self-0 l-2)))))
-  (label 283)
-  (parent 250)
-  (unrealized (0 3) (5 0) (8 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (gen) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0)))
-  (deflistener x)
-  (precedes ((0 2) (5 0)) ((0 2) (7 0)) ((1 1) (2 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 1) (0 3)) ((7 1) (6 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener x) (mul (rec x) l-0) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0)))) ((recv x) (send x)))
-  (label 284)
-  (parent 251)
-  (unrealized (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) l-0))) (priv-stor priv-stor-0) (l l-0)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) l-0)) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (gen) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0)))
-  (deflistener x)
-  (precedes ((0 2) (5 0)) ((0 2) (7 0)) ((1 1) (2 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 1) (0 3)) ((7 1) (6 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) l-0)) (neq (exp (gen) l-0) (gen))
-    (neq self b) (undisclosed l-0) (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener x) (mul (rec x) l-0) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0)))) ((recv x) (send x)))
-  (label 285)
-  (parent 252)
-  (unrealized (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-1))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) l-1)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (gen) l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-1)))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener x)
-  (precedes ((0 2) (5 0)) ((0 2) (8 0)) ((1 1) (2 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 1) (0 3)) ((7 1) (5 0)) ((8 1) (6 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) l-1)) (neq (exp (gen) l-1) (gen))
-    (neq self b) (undisclosed l) (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener x) (mul (rec x) l-1) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) l-1)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y l-1)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (gen) l-1)) (send (cat (gen) l-1)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-1))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1))))
-    ((recv x) (send x)))
-  (label 286)
-  (parent 253)
-  (unrealized (5 0) (8 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-0 l-0))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul l-0 l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-0) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0 l-0)))
-  (deflistener x)
-  (precedes ((0 2) (5 0)) ((0 2) (7 0)) ((1 1) (2 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 1) (0 3)) ((7 1) (6 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul l-0 l-0)))
-    (neq (exp (gen) (mul l-0 l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener x) (mul (rec x) l-0 l-0) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) l-0)) (send (cat (exp (gen) l-0) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0 l-0))))
-    ((recv x) (send x)))
-  (label 287)
-  (parent 255)
-  (unrealized (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l y x y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) y-0 l-0))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul y-0 l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 1) (6 0)) ((1 2) (0 1))
-    ((2 3) (7 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 3) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen y x y-0)
-  (absent (y l-0) (x l) (y-0 l-0))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-0))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (6 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 1 ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-0)) (send (cat (exp (gen) y-0) l-0)))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-0)))))
-  (label 288)
-  (parent 259)
-  (unrealized (0 3) (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l l-0 y x y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) (one)))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 1) (6 0)) ((1 2) (0 1))
-    ((2 3) (7 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 3) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen y x y-0)
-  (absent (y l-0) (x l) (y-0 l-0))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (6 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-0 x) (y-1 y-0) (w (mul (rec x) y-0))) (one) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) (one)))
-      (send (cat (exp (gen) y-0) (one))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0)))))
-  (label 289)
-  (parent 259)
-  (unrealized (0 3) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l y x y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) y-0 l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul y-0 l-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) y-0) l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l) (y y-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 1) (6 0)) ((1 2) (0 1))
-    ((2 3) (7 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 3) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen y x y-0)
-  (absent (y l) (x l-0) (y-0 l))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-0))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((1 1) (6 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 4 ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-0)) (send (cat (exp (gen) y-0) l-0)))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l) (exp gx y-0))))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-0)))))
-  (label 290)
-  (parent 259)
-  (unrealized (0 3) (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (ga gx base) (priv-stor priv-stor-0 priv-stor-1 locn)
-    (l l-0 y x y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) y-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul y-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) l-1))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b) (ga ga) (gx gx)
-    (priv-stor priv-stor) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 1) (6 0)) ((1 2) (0 1))
-    ((2 3) (7 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 3) (5 0)) ((7 1) (0 3)) ((8 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen y x y-0)
-  (absent (y l-0) (x l) (y-0 l-0))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-1))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((1 1) (6 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-1)) (send (cat (exp (gen) y-0) l-1)))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-1))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))))
-  (label 291)
-  (parent 259)
-  (unrealized (0 3) (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l y x y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) y-0 l-0))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul y-0 l-0))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l) (y y-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (6 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 3) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen y x y-0)
-  (absent (y l-0) (x l) (y-0 l))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-0))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-0)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 1 ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-0)) (send (cat (exp (gen) y-0) l-0)))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l) (exp gx y-0))))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-0)))))
-  (label 292)
-  (parent 260)
-  (unrealized (0 3) (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l l-0 y x y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) (one)))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l) (y y-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (6 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 3) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen y x y-0)
-  (absent (y l-0) (x l) (y-0 l))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-0 x) (y-1 y-0) (w (mul (rec x) y-0))) (one) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y y-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) (one)))
-      (send (cat (exp (gen) y-0) (one))))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l) (exp gx y-0))))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0)))))
-  (label 293)
-  (parent 260)
-  (unrealized (0 3) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
-    (pt pt-0 pt-1 pt-2 pval) (ga gx base) (priv-stor priv-stor-0 locn)
-    (l y x y-0 l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) y-0 l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul y-0 l-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) y-0) l-0))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l-0) (y y-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (6 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 3) (5 0)) ((7 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0)
-  (uniq-gen y x y-0)
-  (absent (y l) (x l-0) (y-0 l-0))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-0))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 8 4 ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-0)) (send (cat (exp (gen) y-0) l-0)))
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l-0) (exp gx y-0))))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-0)))))
-  (label 294)
-  (parent 260)
-  (unrealized (0 3) (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (ga gx base) (priv-stor priv-stor-0 priv-stor-1 locn)
-    (l l-0 y x y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) y-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul y-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) l-1))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self) (ga ga) (gx gx)
-    (priv-stor priv-stor-0) (l l) (y y-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (7 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 1) (6 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 3) (5 0)) ((7 1) (0 3)) ((8 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen y x y-0)
-  (absent (y l-0) (x l) (y-0 l))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-1))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((4 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-1 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-1)) (send (cat (exp (gen) y-0) l-1)))
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a self gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a self (hash (exp ga l) (exp gx y-0))))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-1))))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))))
-  (label 295)
-  (parent 260)
-  (unrealized (0 3) (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul y (rec x) y-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul y-0 l-1))) (priv-stor priv-stor) (l l-1) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) l-1))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-0) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (8 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 3) (5 0)) ((7 1) (6 0)) ((8 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen y x y-0)
-  (absent (y l-1) (x l) (y-0 l-0))
-  (precur (3 0) (5 0) (8 0))
-  (gen-st (pv b l-1) (pv self l) (pv b-0 l-0))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-1))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 9 1 ltx-gen 2) l-2 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-1)) (send (cat (exp (gen) y-0) l-1)))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-0) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-1)))))
-  (label 296)
-  (parent 261)
-  (unrealized (0 3) (5 0) (8 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 l-1 y x y-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul y (rec x) y-0))) (priv-stor priv-stor-0) (l l)
-    (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) y-0)) (priv-stor priv-stor) (l l-1) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) (one)))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-0) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (8 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 3) (5 0)) ((7 1) (6 0)) ((8 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen y x y-0)
-  (absent (y l-1) (x l) (y-0 l-0))
-  (precur (3 0) (5 0) (8 0))
-  (gen-st (pv b l-1) (pv self l) (pv b-0 l-0))
-  (facts (silly gx) (silly (exp (gen) y-0)) (neq gx (gen))
-    (neq (exp (gen) y-0) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test
-    (contracted (x-0 x) (y-1 y-0) (w (mul (rec x) y-0))) (one) (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y y-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))) (recv (cat na self b (exp (gen) y-0)))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y y-0)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) (one)))
-      (send (cat (exp (gen) y-0) (one))))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-0) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0)))))
-  (label 297)
-  (parent 261)
-  (unrealized (0 3) (8 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) y-0 l-1))) (priv-stor priv-stor-0)
-    (l l-1) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-1))
-    (gx (exp (gen) (mul y-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l-1) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-1))
-  (deflistener (cat (exp (gen) y-0) l-1))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (8 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 3) (5 0)) ((7 1) (6 0)) ((8 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen y x y-0)
-  (absent (y l-0) (x l-1) (y-0 l))
-  (precur (3 0) (5 0) (8 0))
-  (gen-st (pv b l-0) (pv self l-1) (pv b-0 l))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-1))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-1)) (gen)) (neq self b) (undisclosed l-1)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 9 4 ltx-gen 2) l-2 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-1)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l-0 l-1))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l-1) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l-0 l-1))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((recv (cat (exp (gen) l-1) (one)))
-      (send (cat (exp (gen) l-1) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-1)))
-      (send
-        (sig (body self (exp (gen) l-1) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-1)) (send (cat (exp (gen) y-0) l-1)))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-1)))))
-  (label 298)
-  (parent 261)
-  (unrealized (0 3) (5 0) (8 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x y-0 l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) y-0 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul y-0 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) l-1))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-1) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (8 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 3) (5 0)) ((7 1) (6 0)) ((8 1) (0 3)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1)
-  (uniq-gen y x y-0)
-  (absent (y l-0) (x l) (y-0 l-1))
-  (precur (3 0) (5 0) (8 0))
-  (gen-st (pv b l-0) (pv self l) (pv b-0 l-1))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-1))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (displaced 9 7 ltx-gen 2) l-2 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y y-0 l-1)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-1)) (send (cat (exp (gen) y-0) l-1)))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-1) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-1)))))
-  (label 299)
-  (parent 261)
-  (unrealized (0 3) (5 0) (8 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb na-0 nb-0 data)
-    (b self a b-0 self-0 name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval) (ga gx base)
-    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
-    (l l-0 l-1 y x y-0 l-2 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-1))
-    (gy (exp (gen) (mul y (rec x) y-0 l-2))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-1))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul y-0 l-2))) (priv-stor priv-stor) (l l-1) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) y-0) l-2))
-  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0) (ga ga) (gx gx)
-    (priv-stor priv-stor-1) (l l-0) (y y-0))
-  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
-    (priv-stor priv-stor-1) (l l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) y-0 l-2)))
-  (defstrand ltx-gen 2 (ignore ignore-2) (self self-0)
-    (priv-stor priv-stor-2) (l l-2))
-  (precedes ((0 2) (5 0)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (8 0))
-    ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (2 2))
-    ((6 3) (5 0)) ((7 1) (6 0)) ((8 1) (0 3)) ((9 1) (5 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb nb-0 l l-0 l-1 l-2)
-  (uniq-gen y x y-0)
-  (absent (y l-1) (x l) (y-0 l-0))
-  (precur (3 0) (5 0) (8 0))
-  (gen-st (pv b l-1) (pv self l) (pv b-0 l-0))
-  (facts (silly gx) (silly (exp (gen) (mul y-0 l-2))) (neq gx (gen))
-    (neq (exp (gen) (mul y-0 l-2)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-1))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)) ((7 1) (6 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-strand ltx-gen 2) l-2 (5 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) y-0 l-2))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y y-0 l-2)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-1)))
-      (send
-        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-1)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul y-0 l-2))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-1))
-              (exp (gen) (mul y y-0 l-2)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) y-0) l-2)) (send (cat (exp (gen) y-0) l-2)))
-    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
-      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
-      (recv (cat na-0 a b-0 gx))
-      (send
-        (cat (exp (gen) y-0)
-          (enc na-0 nb-0 a b-0 (hash (exp ga l-0) (exp gx y-0))))))
-    ((load priv-stor-1 (cat pt-4 ignore-1))
-      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) y-0 l-2)))
-      (send (cat (exp (gen) y) (mul (rec x) y-0 l-2))))
-    ((load priv-stor-2 (cat pt-5 ignore-2))
-      (stor priv-stor-2 (cat pt-6 (pv self-0 l-2)))))
-  (label 300)
-  (parent 261)
-  (unrealized (0 3) (5 0) (8 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
-    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
-    (l y x l-0 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
-    (gy (exp (gen) (mul y (rec x) l-0 l-0))) (priv-stor priv-stor-0)
-    (l l-0) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
-    (gx (exp (gen) (mul l-0 l-0))) (priv-stor priv-stor) (l l) (y y))
-  (deflistener (cat (exp (gen) l-0) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l-0))
-  (deflistener (cat (exp (gen) l-0) l-0))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-0 l-0)))
-  (deflistener x)
-  (precedes ((0 2) (5 0)) ((0 2) (7 0)) ((1 1) (2 0)) ((1 2) (0 1))
-    ((2 3) (6 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((4 2) (5 0)) ((5 1) (2 2)) ((6 1) (0 3)) ((7 1) (6 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0)
-  (uniq-gen y x)
-  (absent (y l) (x l-0))
-  (precur (3 0) (5 0) (6 0))
-  (gen-st (pv b l) (pv self l-0))
-  (facts (silly (exp (gen) (mul l-0 l-0)))
-    (neq (exp (gen) (mul l-0 l-0)) (gen)) (neq self b) (undisclosed l-0)
-    (undisclosed l))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener x) (mul (rec x) l-0 l-0) (6 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
-      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-0 l-0))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-0)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l)))
-      (send
-        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l)))
-      (recv
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-0 l-0))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-0 l-0)))))))
-    ((recv (cat (exp (gen) l-0) (one)))
-      (send (cat (exp (gen) l-0) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
-      (send
-        (sig (body self (exp (gen) l-0) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-0) l-0)) (send (cat (exp (gen) l-0) l-0)))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-0 l-0)))
-      (send (cat (exp (gen) y) (mul (rec x) l-0 l-0))))
-    ((recv x) (send x)))
-  (label 301)
-  (parent 264)
-  (unrealized (5 0) (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton dhcr-um
-  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
-    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
-    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 y x l-1 rndx))
-  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l-0))
-    (gy (exp (gen) (mul y (rec x) l-1 l-1))) (priv-stor priv-stor-0)
-    (l l) (x x))
-  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
-    (l l-0))
-  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l))
-    (gx (exp (gen) (mul l-1 l-1))) (priv-stor priv-stor) (l l-0) (y y))
-  (deflistener (cat (exp (gen) l) (one)))
-  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
-    (priv-stor priv-stor-0) (l l))
-  (deflistener (cat (exp (gen) l-1) l-1))
-  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
-    (priv-stor priv-stor-1) (l l-1))
-  (deflistener (cat (exp (gen) y) (mul (rec x) l-1 l-1)))
-  (deflistener x)
-  (precedes ((0 2) (5 0)) ((0 2) (8 0)) ((1 1) (2 0)) ((1 2) (0 1))
-    ((2 3) (7 0)) ((3 1) (2 1)) ((4 1) (0 0)) ((4 2) (3 0))
-    ((5 1) (2 2)) ((6 2) (5 0)) ((7 1) (0 3)) ((8 1) (7 0)))
-  (non-orig (privk "sig" b))
-  (uniq-orig na nb l l-0 l-1)
-  (uniq-gen y x)
-  (absent (y l-0) (x l))
-  (precur (3 0) (5 0) (7 0))
-  (gen-st (pv b l-0) (pv self l))
-  (facts (silly (exp (gen) (mul l-1 l-1)))
-    (neq (exp (gen) (mul l-1 l-1)) (gen)) (neq self b) (undisclosed l)
-    (undisclosed l-0))
-  (leads-to ((1 1) (2 0)) ((4 1) (0 0)))
-  (rule fact-resp-neq0 fact-resp-silly trRl_ltx-gen-at-0
-    trRl_ltx-gen-at-1)
-  (operation nonce-test (added-listener x) (mul (rec x) l-1 l-1) (7 0))
-  (traces
-    ((load priv-stor-0 (cat pt-2 (pv self l)))
-      (recv
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
-      (send (cat na self b (exp (gen) x)))
-      (recv
-        (cat (exp (gen) (mul y (rec x) l-1 l-1))
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-1 l-1)))))))
-    ((load priv-stor (cat pt ignore))
-      (stor priv-stor (cat pt-0 (pv b l-0)))
-      (send
-        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
-    ((load priv-stor (cat pt-0 (pv b l-0)))
-      (recv
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self)))
-      (recv (cat na self b (exp (gen) (mul l-1 l-1))))
-      (send
-        (cat (exp (gen) y)
-          (enc na nb self b
-            (hash (exp (gen) (mul l l-0))
-              (exp (gen) (mul y l-1 l-1)))))))
-    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
-    ((load priv-stor-0 (cat pt-1 ignore-0))
-      (stor priv-stor-0 (cat pt-2 (pv self l)))
-      (send
-        (sig (body self (exp (gen) l) (pubk "sig" self))
-          (privk "sig" self))))
-    ((recv (cat (exp (gen) l-1) l-1)) (send (cat (exp (gen) l-1) l-1)))
-    ((load priv-stor-1 (cat pt-3 ignore-1))
-      (stor priv-stor-1 (cat pt-4 (pv self-0 l-1)))
-      (send
-        (sig (body self-0 (exp (gen) l-1) (pubk "sig" self-0))
-          (privk "sig" self-0))))
-    ((recv (cat (exp (gen) y) (mul (rec x) l-1 l-1)))
-      (send (cat (exp (gen) y) (mul (rec x) l-1 l-1))))
-    ((recv x) (send x)))
-  (label 302)
-  (parent 269)
-  (unrealized (5 0) (8 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
diff --git a/tst/dhcr_um_exercise_resolved_bug_shapes.tst b/tst/dhcr_um_exercise_resolved_bug_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/dhcr_um_exercise_resolved_bug_shapes.tst
@@ -0,0 +1,268 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "DHCR: unified model (UM) original" (bound 20) (limit 12000)
+  (algebra diffie-hellman))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/dhcr_um_exercise_resolved_bug.scm")
+
+(comment "Step count limited to 12000")
+
+(comment "Strand count bounded at 20")
+
+(defprotocol dhcr-um diffie-hellman
+  (defrole init
+    (vars (l x rndx) (gb gy base) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a l))
+      (recv (sig (body b gb (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv (cat gy (enc na nb a b (hash (exp gb l) (exp gy x)))))
+      (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x l))
+    (gen-st (pv a l))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole resp
+    (vars (l y rndx) (ga gx base) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b l))
+      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b gx))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b (hash (exp ga l) (exp gx y))))) (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y l))
+    (facts (neq gx (gen)))
+    (gen-st (pv b l))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l))
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrule fact-resp-silly
+    (forall ((z strd) (gx base))
+      (implies
+        (and (p "resp" z 3) (p "resp" "gx" z gx))
+        (fact silly gx))))
+  (defrule fact-resp-neq0
+    (forall ((z strd))
+      (implies (and (p "resp" z 3) (p "resp" "gx" z (gen))) (false))))
+  (defrule fact-init-neq0
+    (forall ((z strd))
+      (implies (and (p "init" z 4) (p "init" "gy" z (gen))) (false))))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z 2)
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (gx base))
+      (implies (and (p "resp" z 3) (p "resp" "gx" z gx))
+        (fact neq gx (gen)))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 0))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 0))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (l rndx) (a name))
+      (implies
+        (and (p "init" z 1) (p "init" "l" z l) (p "init" "a" z a))
+        (gen-st (pv a l)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (l rndx) (b name))
+      (implies
+        (and (p "resp" z 1) (p "resp" "l" z l) (p "resp" "b" z b))
+        (gen-st (pv b l)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (l rndx) (self name))
+      (implies
+        (and (p "ltx-disclose" z 1) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-um
+  (vars (na nb data) (a b name) (pt pval) (gy base) (priv-stor locn)
+    (l l-peer x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-peer))
+    (gy gy) (priv-stor priv-stor) (l l) (x x))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x l))
+  (facts (neq a b) (undisclosed l) (undisclosed l-peer))
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-peer) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat gy
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-peer)) (exp gy x)))))))
+  (label 0)
+  (unrealized (0 1) (0 3))
+  (origs (na (0 2)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y l l-0 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
+    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l-0) (x x))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
+    (gx (exp (gen) x)) (priv-stor priv-stor) (l l) (y y))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
+    ((3 1) (0 0)) ((3 2) (2 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y l) (x l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (silly (exp (gen) x)) (neq (exp (gen) x) (gen)) (trans 1 1)
+    (trans 1 0) (trans 3 1) (trans 3 0) (neq self b) (undisclosed l-0)
+    (undisclosed l))
+  (operation nonce-test (displaced 4 0 init 3) (exp (gen) x-0) (2 2))
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 18)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a self) (b b) (l l-0) (l-peer l) (x x) (gy (exp (gen) y))
+        (na na) (nb nb) (priv-stor priv-stor-0) (pt pt-2))))
+  (origs (na (0 2)) (l-0 (3 1)) (pt-2 (3 1)) (l (1 1)) (pt-0 (1 1))
+    (nb (2 3))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y l rndx)
+    (w expt) (l-0 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
+    (gy (exp (gen) (mul y w))) (priv-stor priv-stor-0) (l l-0) (x x))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
+    (gx (exp (gen) (mul w x))) (priv-stor priv-stor) (l l) (y y))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
+    ((3 1) (0 0)) ((3 2) (2 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y l) (x l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (silly (exp (gen) (mul w x))) (neq (exp (gen) (mul w x)) (gen))
+    (trans 1 1) (trans 1 0) (trans 3 1) (trans 3 0) (neq self b)
+    (undisclosed l-0) (undisclosed l))
+  (operation generalization deleted (4 0))
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul w x))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 90)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a self) (b b) (l l-0) (l-peer l) (x x)
+        (gy (exp (gen) (mul y w))) (na na) (nb nb)
+        (priv-stor priv-stor-0) (pt pt-2))))
+  (origs (na (0 2)) (l-0 (3 1)) (pt-2 (3 1)) (l (1 1)) (pt-0 (1 1))
+    (nb (2 3))))
+
+(comment "Nothing left to do")
diff --git a/tst/dhcr_um_expt.scm b/tst/dhcr_um_expt.scm
deleted file mode 100644
--- a/tst/dhcr_um_expt.scm
+++ /dev/null
@@ -1,260 +0,0 @@
-;;; Unified Model  This version used in the paper, tooldev/dh/conf_dh/dh_ebn.tex
-
-;;; This file models the "Unified Model" method of determining a fresh
-;;; key from long-term and ephemeral Diffie-Hellman exponents.  We use
-;;; function relation declarations to link names to long-term public
-;;; values.
-
-;;; This file contains the standard version, in which the two
-;;; ephemeral are mixed, as are the two static exponents.
-
-;;; A role is provided in which a party signs a fresh long-term
-;;; Diffie-Hellman value, and then leaks the exponent.  The latter step
-;;; is used to test the notion of forward security.
-
-;;; Two inputs are analyzed.  In the first, we model that two
-;;; participants exist that agree on the UM key.  The notion of
-;;; "implicit authentication" suggests that if one participant exists
-;;; and another party knows the same key, that party must be either the
-;;; participant or the participant's intended partner.
-
-;;; In this version, we assume that the long-term keys of the
-;;; participants do not leak.
-
-;;; The second input checks whether the key can be learned when the key
-;;; is generated honestly.  In this version, we do NOT assume that the
-;;; long-term keys of the participants do not leak.
-
-;;; CPSA4 revisions:
-;;;
-;;; 1.  Self certify my public value in ltx-gen,
-;;;     and assume signing keys non.
-;;; 2.  Deposit private value in state and retrieve
-;;;	it at the beginning of each init or resp run.
-;;; 3.  Discard the private value from state before
-;;;	disclosing it, when testing forward secrecy.
-
-(herald "DHCR: unified model (UM) original"
-	(bound 20)
-	(limit 12000)
-	(algebra diffie-hellman))
-
-(defmacro (kcfa l gb x gy)
-  (hash (exp gb l) (exp gy x)))
-
-(defmacro (kcfb l ga y gx)
-  (hash (exp ga l) (exp gx y)))
-
-(defprotocol dhcr-um diffie-hellman
-  (defrole init
-    (vars (la x rndx) (beta upsilon expt) (a b name) (na nb data) (priv-stor locn))
-    (trace
-     (load priv-stor (pv a la))
-     (recv (sig (body b (exp (gen) beta) (pubk "sig" b))
-		(privk "sig" b)))
-     (send (cat na a b (exp (gen) x) ;; (sig na a b (exp (gen) x) (privk "sig" a))
-		))
-     (recv (cat (exp (gen) upsilon)
-		(enc na nb a b
-		     (kcfa la (exp (gen) beta) x (exp (gen) upsilon)))))
-     (send nb)
-     )
-    (uniq-gen x)
-    (uniq-orig na)
-    (facts (neq (exp (gen) upsilon) (gen)))
-    (gen-st (pv a la))
-    (fn-off ("principal-of" (ltxa a) (ltxb b))
-           ("ltx-of" (a ltxa) (b ltxb))))
-
-  (defrole resp
-    (vars (lb y rndx) (alpha zeta expt) (a b name) (na nb data) (priv-stor locn))
-    (trace
-     (load priv-stor (pv b lb))
-     (recv (sig (body a (exp (gen) alpha) (pubk "sig" a))
-		(privk "sig" a)))
-     (recv (cat na a b (exp (gen) zeta) ;; (sig na a b (exp (gen) zeta) (privk "sig" a))
-		))
-     (send (cat (exp (gen) y)
-		(enc na nb a b
-		     (kcfb lb (exp (gen) alpha) y (exp (gen) zeta)))))
-     (recv nb)
-     )
-    (uniq-gen y)
-    (uniq-orig nb)
-    (facts (neq (exp (gen) zeta) (gen)))
-    (gen-st (pv b lb))
-    (fn-off ("principal-of" (ltxa a) (ltxb b))
-	   ("ltx-of" (a ltxa) (b ltxb))))
-
-  (defrole ltx-gen
-    (vars (self name) (l rndx)
-	  (priv-stor locn) (ignore mesg))
-    (trace
-     (load priv-stor ignore)
-     (stor priv-stor (pv self l))
-     (send (sig (body self (exp (gen) l) (pubk "sig" self))
-		(privk "sig" self))))
-    (uniq-orig l)
-    (fn-off ("principal-of" (l self))
-	   ("ltx-of" (self l))))
-
-  (defrole ltx-disclose
-    (vars (self name) (l rndx)
-	  (priv-stor locn) (ignore mesg))
-    (trace
-     (load priv-stor (pv self l))
-     (stor priv-stor "nil")
-     (send l))
-    (gen-st (pv self l))
-    (fn-off ("principal-of" (l self))
-	   ("ltx-of" (self l))))
-
-;     (defrule fact-resp-neq0
-;       (forall ((z strd) (zeta expt))
-;         (implies (and (p "resp" z 3) (p "resp" "zeta" z zeta))
-;           (fact neq zeta one))))
-
-  (defrule undisclosed-not-disclosed
-    (forall
-     ((z strd) (l rndx))
-     (implies
-      (and (fact undisclosed l)
-	  (p "ltx-disclose" z 2)
-	  (p "ltx-disclose" "l" z l))
-      (false))))
-
-  (lang (sig sign)
-	(body (tuple 3))
-	(pv (tuple 2))))
-
-; Initiator point of view: both LTX exponents secret
-(defskeleton dhcr-um
-  (vars (a b name) (la l-peer rndx) (beta expt))
-  (defstrand init 5 (a a) (b b) (la la) (beta beta))
-  (non-orig (privk "sig" b))
-  (facts (neq a b)
-	 (undisclosed la)
-	 (undisclosed beta)))
-
-; Initiator point of view:  peer exponent secret
-(defskeleton dhcr-um
-  (vars (a b name) (la l-peer rndx) (beta expt))
-  (defstrand init 5 (a a) (b b) (la la) (beta beta))
-  (non-orig (privk "sig" b))
-  (facts (neq a b)
-	 ;;	 (undisclosed la)
-	 (undisclosed beta)))
-
-; Initiator point of view:  my exponent secret
-(defskeleton dhcr-um
-  (vars (a b name) (la rndx))
-  (defstrand init 5 (a a) (b b) (la la) )
-  (non-orig (privk "sig" b))
-  (facts (neq a b)
-	 ;;	 (undisclosed l-peer)
-	 (undisclosed la)))
-
-; Initiator point of view:  neither exponent secret
-
-(defskeleton dhcr-um
-  (vars (a b name) (la rndx))
-  (defstrand init 5 (a a) (b b) (la la))
-  (non-orig (privk "sig" b))
-  (facts (neq a b)
-	 ;;	 (undisclosed l-peer)
-	 ;;	 (undisclosed la)
-	 ))
-
-(defskeleton dhcr-um
-  (vars (a b name) (la lb rndx) (alpha beta expt))
-  (defstrand resp 5 (a a) (b b) (lb lb) (alpha alpha))
-  (defstrand init 5 (a a) (b b) (la la) (beta beta))
-  (non-orig (privk "sig" a) (privk "sig" b))
-  (facts (neq a b)
-	 (undisclosed la)
-	 (undisclosed lb)))
-
-; Responder point of view: both exponents secret
-(defskeleton dhcr-um
-  (vars (a b name) (lb rndx) (alpha expt))
-  (defstrand resp 5 (a a) (b b) (lb lb) (alpha alpha))
-  (non-orig (privk "sig" a))
-  (facts (neq a b)
-	 (undisclosed lb)
-	 (undisclosed alpha)))
-
-; Responder point of view:  peer exponent secret
-(defskeleton dhcr-um
-  (vars (a b name) (lb l-peer rndx) (alpha expt))
-  (defstrand resp 5 (a a) (b b) (lb lb) (alpha alpha))
-  (non-orig (privk "sig" a))
-  (facts (neq a b)
-	 ;;	 (undisclosed lb)
-	 (undisclosed alpha)))
-
-; Responder point of view:  my exponent secret
-(defskeleton dhcr-um
-  (vars (a b name) (lb rndx) (l-peer expt))
-  (defstrand resp 5 (a a) (b b) (lb lb) )
-  (non-orig (privk "sig" a))
-  (facts (neq a b)
-	 ;;	 (undisclosed l-peer)
-	 (undisclosed lb)))
-
-; Responder point of view:  neither exponent secret
-
-(defskeleton dhcr-um
-  (vars (a b name) (lb rndx) (l-peer expt))
-  (defstrand resp 5 (a a) (b b) (lb lb))
-  (non-orig (privk "sig" a))
-  (facts (neq a b)
-	 ;;	 (undisclosed l-peer)
-	 ;;	 (undisclosed lb)
-	 ))
-
-(comment
-;;; Initiator point of view: partner's exponent secret
-(defskeleton dhcr-um
-  (vars (ltxa ltxb rndx) (a b name))
-  (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-  (defstrand ltx-gen 1 (l ltxb))
-  (non-orig ltxb)
-  (neq (a b)))
-
-					; Responder point of view; both exponents secret
-(defskeleton dhcr-um
-  (vars (ltxa ltxb rndx) (a b name))
-  (defstrand resp 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-  (defstrand ltx-gen 1 (l ltxa))
-  (defstrand ltx-gen 1 (l ltxb))
-  (non-orig ltxa ltxb)
-  (neq (a b)))
-
-; Responder point of view; partner's exponent secre
-(defskeleton dhcr-um
-  (vars (ltxa ltxb rndx) (a b name))
-  (defstrand resp 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-  (defstrand ltx-gen 1 (l ltxa))
-  (non-orig ltxa)
-  (neq (a b)))
-
-;;; Forward secrecy, neither long-term exponent secure
-(defskeleton dhcr-um
-   (vars (ltxa ltxb x rndx) (y expt) (a b name))
-   (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (x x) (y y) (a a) (b b))
-   (deflistener (kcfa ltxa ltxb x (exp (gen) y)))
-   (defstrand ltx-gen 3 (l ltxa))
-   (defstrand ltx-gen 3 (l ltxb))
-   (precedes ((0 3) (3 1)) ((0 3) (2 1)))
-   (neq (a b)))
-
-;;; Forward secrecy, neither long-term exponent secure
-(defskeleton dhcr-um
-  (vars (ltxa ltxb x rndx) (y expt) (a b name))
-  (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (x x) (y y) (a a) (b b))
-  (deflistener (exp (gen) (mul x y)))
-  (defstrand ltx-gen 3 (l ltxa))
-  (defstrand ltx-gen 3 (l ltxb))
-  (precedes ((0 3) (3 1)) ((0 3) (2 1)))
-  (neq (a b)))
-)
diff --git a/tst/dhcr_um_expt.tst b/tst/dhcr_um_expt.tst
deleted file mode 100644
# file too large to diff: tst/dhcr_um_expt.tst
diff --git a/tst/dhcr_um_expt_shapes.tst b/tst/dhcr_um_expt_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/dhcr_um_expt_shapes.tst
@@ -0,0 +1,2637 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "DHCR: unified model (UM) original" (bound 20) (limit 12000)
+  (algebra diffie-hellman))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/dhcr_um_expt.scm")
+
+(comment "Step count limited to 12000")
+
+(comment "Strand count bounded at 20")
+
+(defprotocol dhcr-um diffie-hellman
+  (defrole init
+    (vars (la x rndx) (beta upsilon expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a la))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) upsilon)
+          (enc na nb a b
+            (hash (exp (gen) (mul la beta))
+              (exp (gen) (mul x upsilon)))))) (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x la) (x beta))
+    (facts (neq (exp (gen) upsilon) (gen)))
+    (gen-st (pv a la))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole resp
+    (vars (lb y rndx) (alpha zeta expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b lb))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) zeta)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul lb alpha))
+              (exp (gen) (mul y zeta)))))) (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y lb) (y alpha) (y zeta))
+    (facts (neq (exp (gen) zeta) (gen)))
+    (gen-st (pv b lb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l))
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z 2)
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (upsilon expt))
+      (implies (and (p "init" z 4) (p "init" "upsilon" z upsilon))
+        (fact neq (exp (gen) upsilon) (gen)))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (zeta expt))
+      (implies (and (p "resp" z 3) (p "resp" "zeta" z zeta))
+        (fact neq (exp (gen) zeta) (gen)))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 0))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 0))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (la rndx) (a name))
+      (implies
+        (and (p "init" z 1) (p "init" "la" z la) (p "init" "a" z a))
+        (gen-st (pv a la)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (lb rndx) (b name))
+      (implies
+        (and (p "resp" z 1) (p "resp" "lb" z lb) (p "resp" "b" z b))
+        (gen-st (pv b lb)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (l rndx) (self name))
+      (implies
+        (and (p "ltx-disclose" z 1) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-um
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn) (la rndx)
+    (beta expt) (x rndx) (upsilon expt))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (la la) (x x) (beta beta) (upsilon upsilon))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x la) (x beta))
+  (facts (neq a b) (undisclosed la) (undisclosed beta))
+  (traces
+    ((load priv-stor (cat pt (pv a la)))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) upsilon)
+          (enc na nb a b
+            (hash (exp (gen) (mul la beta))
+              (exp (gen) (mul x upsilon)))))) (send nb)))
+  (label 0)
+  (unrealized (0 1))
+  (origs (na (0 2)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (lb l x y rndx))
+  (defstrand init 5 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (la l) (x x) (beta lb) (upsilon y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l lb))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (lb lb) (y y) (alpha l) (zeta x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
+    ((3 1) (0 0)) ((3 2) (2 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb lb l)
+  (uniq-gen x y)
+  (absent (x lb) (x l) (y lb) (y l) (y x))
+  (gen-st (pv b lb) (pv self l))
+  (facts (neq (exp (gen) x) (gen)) (trans 1 1) (trans 1 0) (trans 3 1)
+    (trans 3 0) (neq (exp (gen) y) (gen)) (neq self b) (undisclosed l)
+    (undisclosed lb))
+  (operation nonce-test (displaced 4 2 resp 4) (exp (gen) y-0) (0 3))
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) lb) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul lb l)) (exp (gen) (mul x y))))))
+      (send nb))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b lb)))
+      (send
+        (sig (body b (exp (gen) lb) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b lb)))
+      (recv
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul lb l)) (exp (gen) (mul x y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 16)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a self) (b b) (la l) (beta lb) (x x) (upsilon y) (na na) (nb nb)
+        (priv-stor priv-stor-0) (pt pt-2))))
+  (origs (nb (2 3)) (l (3 1)) (pt-2 (3 1)) (lb (1 1)) (pt-0 (1 1))
+    (na (0 2))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-um diffie-hellman
+  (defrole init
+    (vars (la x rndx) (beta upsilon expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a la))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) upsilon)
+          (enc na nb a b
+            (hash (exp (gen) (mul la beta))
+              (exp (gen) (mul x upsilon)))))) (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x la) (x beta))
+    (facts (neq (exp (gen) upsilon) (gen)))
+    (gen-st (pv a la))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole resp
+    (vars (lb y rndx) (alpha zeta expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b lb))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) zeta)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul lb alpha))
+              (exp (gen) (mul y zeta)))))) (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y lb) (y alpha) (y zeta))
+    (facts (neq (exp (gen) zeta) (gen)))
+    (gen-st (pv b lb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l))
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z 2)
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (upsilon expt))
+      (implies (and (p "init" z 4) (p "init" "upsilon" z upsilon))
+        (fact neq (exp (gen) upsilon) (gen)))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (zeta expt))
+      (implies (and (p "resp" z 3) (p "resp" "zeta" z zeta))
+        (fact neq (exp (gen) zeta) (gen)))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 0))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 0))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (la rndx) (a name))
+      (implies
+        (and (p "init" z 1) (p "init" "la" z la) (p "init" "a" z a))
+        (gen-st (pv a la)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (lb rndx) (b name))
+      (implies
+        (and (p "resp" z 1) (p "resp" "lb" z lb) (p "resp" "b" z b))
+        (gen-st (pv b lb)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (l rndx) (self name))
+      (implies
+        (and (p "ltx-disclose" z 1) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-um
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn) (la rndx)
+    (beta expt) (x rndx) (upsilon expt))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (la la) (x x) (beta beta) (upsilon upsilon))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x la) (x beta))
+  (facts (neq a b) (undisclosed beta))
+  (traces
+    ((load priv-stor (cat pt (pv a la)))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) upsilon)
+          (enc na nb a b
+            (hash (exp (gen) (mul la beta))
+              (exp (gen) (mul x upsilon)))))) (send nb)))
+  (label 38)
+  (unrealized (0 1))
+  (origs (na (0 2)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (lb l x y rndx))
+  (defstrand init 5 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (la l) (x x) (beta lb) (upsilon y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l lb))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (lb lb) (y y) (alpha l) (zeta x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
+    ((3 1) (0 0)) ((3 2) (2 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb lb l)
+  (uniq-gen x y)
+  (absent (x lb) (x l) (y lb) (y l) (y x))
+  (gen-st (pv b lb) (pv self l))
+  (facts (neq (exp (gen) x) (gen)) (trans 1 1) (trans 1 0) (trans 3 1)
+    (trans 3 0) (neq (exp (gen) y) (gen)) (neq self b) (undisclosed lb))
+  (operation nonce-test (displaced 4 2 resp 4) (exp (gen) y-0) (0 3))
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) lb) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul lb l)) (exp (gen) (mul x y))))))
+      (send nb))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b lb)))
+      (send
+        (sig (body b (exp (gen) lb) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b lb)))
+      (recv
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul lb l)) (exp (gen) (mul x y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 54)
+  (parent 38)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a self) (b b) (la l) (beta lb) (x x) (upsilon y) (na na) (nb nb)
+        (priv-stor priv-stor-0) (pt pt-2))))
+  (origs (nb (2 3)) (l (3 1)) (pt-2 (3 1)) (lb (1 1)) (pt-0 (1 1))
+    (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (upsilon expt) (l l-0 rndx))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (la l) (x x) (beta l-0) (upsilon upsilon))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (precedes ((1 1) (0 0)) ((1 1) (3 0)) ((2 2) (0 1)) ((3 2) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (trans 3 1) (trans 3 0) (trans 2 1) (trans 2 0) (trans 1 1)
+    (trans 1 0) (neq (exp (gen) upsilon) (gen)) (neq a b)
+    (undisclosed l-0))
+  (operation generalization deleted (3 0))
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) upsilon)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x upsilon)))))) (send nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-3 "nil")) (send l)))
+  (label 131)
+  (parent 38)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (la l) (beta l-0) (x x) (upsilon upsilon) (na na)
+        (nb nb) (priv-stor priv-stor) (pt pt))))
+  (origs (l-0 (2 1)) (pt-2 (2 1)) (pt-3 (3 1)) (l (1 1)) (pt (1 1))
+    (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (lb l x y rndx))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (la l) (x x) (beta lb) (upsilon y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l lb))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (precedes ((1 1) (0 0)) ((1 1) (3 0)) ((2 2) (0 1)) ((3 2) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na lb l)
+  (uniq-gen x y)
+  (absent (x lb) (x l) (y lb) (y l) (y x))
+  (gen-st (pv a l) (pv b lb))
+  (facts (trans 3 1) (trans 3 0) (neq (exp (gen) x) (gen)) (trans 2 1)
+    (trans 2 0) (trans 1 1) (trans 1 0) (neq (exp (gen) y) (gen))
+    (neq a b) (undisclosed lb))
+  (operation generalization forgot nb)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) lb) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul lb l)) (exp (gen) (mul x y))))))
+      (send nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b lb)))
+      (send
+        (sig (body b (exp (gen) lb) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-3 "nil")) (send l)))
+  (label 133)
+  (parent 38)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (la l) (beta lb) (x x) (upsilon y) (na na) (nb nb)
+        (priv-stor priv-stor) (pt pt))))
+  (origs (pt-3 (3 1)) (lb (2 1)) (pt-2 (2 1)) (l (1 1)) (pt (1 1))
+    (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 lb x y rndx))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b-0) (priv-stor priv-stor)
+    (la l) (x x) (beta l-0) (upsilon y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b-0)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l lb))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (precedes ((1 1) (0 0)) ((1 1) (4 0)) ((2 2) (0 1)) ((4 2) (0 3)))
+  (non-orig (privk "sig" b-0))
+  (uniq-orig na l l-0 lb)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec lb))) (y lb) (y x))
+  (gen-st (pv a l) (pv b lb))
+  (facts (trans 4 1) (trans 4 0) (trans 3 1) (trans 3 0)
+    (neq (exp (gen) x) (gen)) (trans 2 1) (trans 2 0) (trans 1 1)
+    (trans 1 0) (neq (exp (gen) y) (gen)) (neq a b-0) (undisclosed l-0))
+  (operation generalization forgot (privk "sig" b))
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) l-0) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b-0
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))))
+      (send nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b-0 l-0)))
+      (send
+        (sig (body b-0 (exp (gen) l-0) (pubk "sig" b-0))
+          (privk "sig" b-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b lb))))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l)))
+  (label 200)
+  (parent 38)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b-0) (la l) (beta l-0) (x x) (upsilon y) (na na) (nb nb)
+        (priv-stor priv-stor) (pt pt))))
+  (origs (l-0 (2 1)) (pt-2 (2 1)) (pt-5 (4 1)) (lb (3 1)) (pt-3 (3 1))
+    (l (1 1)) (pt (1 1)) (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (lb l x rndx) (w expt) (y rndx))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (la l) (x x) (beta lb) (upsilon (mul w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l lb))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) y) w))
+  (precedes ((1 1) (0 0)) ((1 1) (3 0)) ((2 2) (0 1)) ((3 2) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na lb l)
+  (uniq-gen x y)
+  (absent (x lb) (x l) (y lb) (y l) (y (mul x w)))
+  (precur (4 0))
+  (gen-st (pv a l) (pv b lb))
+  (facts (trans 3 1) (trans 3 0) (neq (exp (gen) (mul x w)) (gen))
+    (trans 2 1) (trans 2 0) (trans 1 1) (trans 1 0)
+    (neq (exp (gen) (mul w y)) (gen)) (neq a b) (undisclosed lb))
+  (operation generalization forgot nb)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) lb) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul lb l)) (exp (gen) (mul x w y))))))
+      (send nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b lb)))
+      (send
+        (sig (body b (exp (gen) lb) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-3 "nil")) (send l))
+    ((recv (cat (exp (gen) y) w))))
+  (label 202)
+  (parent 38)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (la l) (beta lb) (x x) (upsilon (mul w y)) (na na)
+        (nb nb) (priv-stor priv-stor) (pt pt))))
+  (origs (pt-3 (3 1)) (lb (2 1)) (pt-2 (2 1)) (l (1 1)) (pt (1 1))
+    (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 lb x rndx) (w expt)
+    (y rndx))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b-0) (priv-stor priv-stor)
+    (la l) (x x) (beta l-0) (upsilon (mul w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b-0)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l lb))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) y) w))
+  (precedes ((1 1) (0 0)) ((1 1) (4 0)) ((2 2) (0 1)) ((4 2) (0 3)))
+  (non-orig (privk "sig" b-0))
+  (uniq-orig na l l-0 lb)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec lb))) (y lb) (y (mul x w)))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b lb))
+  (facts (trans 4 1) (trans 4 0) (trans 3 1) (trans 3 0)
+    (neq (exp (gen) (mul x w)) (gen)) (trans 2 1) (trans 2 0)
+    (trans 1 1) (trans 1 0) (neq (exp (gen) (mul w y)) (gen))
+    (neq a b-0) (undisclosed l-0))
+  (operation generalization forgot (privk "sig" b))
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) l-0) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na nb a b-0
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))))
+      (send nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b-0 l-0)))
+      (send
+        (sig (body b-0 (exp (gen) l-0) (pubk "sig" b-0))
+          (privk "sig" b-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b lb))))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) y) w))))
+  (label 211)
+  (parent 38)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b-0) (la l) (beta l-0) (x x) (upsilon (mul w y)) (na na)
+        (nb nb) (priv-stor priv-stor) (pt pt))))
+  (origs (l-0 (2 1)) (pt-2 (2 1)) (pt-5 (4 1)) (lb (3 1)) (pt-3 (3 1))
+    (l (1 1)) (pt (1 1)) (na (0 2))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-um diffie-hellman
+  (defrole init
+    (vars (la x rndx) (beta upsilon expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a la))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) upsilon)
+          (enc na nb a b
+            (hash (exp (gen) (mul la beta))
+              (exp (gen) (mul x upsilon)))))) (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x la) (x beta))
+    (facts (neq (exp (gen) upsilon) (gen)))
+    (gen-st (pv a la))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole resp
+    (vars (lb y rndx) (alpha zeta expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b lb))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) zeta)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul lb alpha))
+              (exp (gen) (mul y zeta)))))) (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y lb) (y alpha) (y zeta))
+    (facts (neq (exp (gen) zeta) (gen)))
+    (gen-st (pv b lb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l))
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z 2)
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (upsilon expt))
+      (implies (and (p "init" z 4) (p "init" "upsilon" z upsilon))
+        (fact neq (exp (gen) upsilon) (gen)))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (zeta expt))
+      (implies (and (p "resp" z 3) (p "resp" "zeta" z zeta))
+        (fact neq (exp (gen) zeta) (gen)))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 0))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 0))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (la rndx) (a name))
+      (implies
+        (and (p "init" z 1) (p "init" "la" z la) (p "init" "a" z a))
+        (gen-st (pv a la)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (lb rndx) (b name))
+      (implies
+        (and (p "resp" z 1) (p "resp" "lb" z lb) (p "resp" "b" z b))
+        (gen-st (pv b lb)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (l rndx) (self name))
+      (implies
+        (and (p "ltx-disclose" z 1) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-um
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn) (la x rndx)
+    (beta upsilon expt))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (la la) (x x) (beta beta) (upsilon upsilon))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x la) (x beta))
+  (facts (neq a b) (undisclosed la))
+  (traces
+    ((load priv-stor (cat pt (pv a la)))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) upsilon)
+          (enc na nb a b
+            (hash (exp (gen) (mul la beta))
+              (exp (gen) (mul x upsilon)))))) (send nb)))
+  (label 212)
+  (unrealized (0 1))
+  (origs (na (0 2)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (lb l x y rndx))
+  (defstrand init 5 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (la l) (x x) (beta lb) (upsilon y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l lb))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (lb lb) (y y) (alpha l) (zeta x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
+    ((3 1) (0 0)) ((3 2) (2 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb lb l)
+  (uniq-gen x y)
+  (absent (x lb) (x l) (y lb) (y l) (y x))
+  (gen-st (pv b lb) (pv self l))
+  (facts (neq (exp (gen) x) (gen)) (trans 1 1) (trans 1 0) (trans 3 1)
+    (trans 3 0) (neq (exp (gen) y) (gen)) (neq self b) (undisclosed l))
+  (operation nonce-test (displaced 4 2 resp 4) (exp (gen) y-0) (0 3))
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) lb) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul lb l)) (exp (gen) (mul x y))))))
+      (send nb))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b lb)))
+      (send
+        (sig (body b (exp (gen) lb) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b lb)))
+      (recv
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul lb l)) (exp (gen) (mul x y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 228)
+  (parent 212)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a self) (b b) (la l) (x x) (beta lb) (upsilon y) (na na) (nb nb)
+        (priv-stor priv-stor-0) (pt pt-2))))
+  (origs (nb (2 3)) (l (3 1)) (pt-2 (3 1)) (lb (1 1)) (pt-0 (1 1))
+    (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (upsilon expt) (l l-0 rndx))
+  (defstrand init 5 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (la l-0) (x x) (beta l) (upsilon upsilon))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor) (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 1) (2 0)) ((1 2) (0 1)) ((2 2) (0 3)) ((3 1) (0 0))
+    ((3 2) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (trans 2 1) (trans 2 0) (trans 1 1) (trans 1 0) (trans 3 1)
+    (trans 3 0) (neq (exp (gen) upsilon) (gen)) (neq self b)
+    (undisclosed l-0))
+  (operation generalization deleted (2 0))
+  (traces
+    ((load priv-stor-0 (cat pt-3 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) upsilon)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x upsilon)))))) (send nb))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (stor priv-stor (cat pt-1 "nil")) (send l))
+    ((load priv-stor-0 (cat pt-2 ignore-0))
+      (stor priv-stor-0 (cat pt-3 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 298)
+  (parent 212)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a self) (b b) (la l-0) (x x) (beta l) (upsilon upsilon) (na na)
+        (nb nb) (priv-stor priv-stor-0) (pt pt-3))))
+  (origs (l-0 (3 1)) (pt-3 (3 1)) (pt-1 (2 1)) (l (1 1)) (pt-0 (1 1))
+    (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 lb x y rndx))
+  (defstrand init 5 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-1) (la l-0) (x x) (beta l) (upsilon y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l lb))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor) (l l))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 1) (3 0)) ((1 2) (0 1)) ((3 2) (0 3)) ((4 1) (0 0))
+    ((4 2) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 lb)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec lb))) (y lb) (y x))
+  (gen-st (pv b l) (pv b lb) (pv self l-0))
+  (facts (trans 3 1) (trans 3 0) (trans 2 1) (trans 2 0)
+    (neq (exp (gen) x) (gen)) (trans 1 1) (trans 1 0) (trans 4 1)
+    (trans 4 0) (neq (exp (gen) y) (gen)) (neq self b)
+    (undisclosed l-0))
+  (operation generalization forgot nb)
+  (traces
+    ((load priv-stor-1 (cat pt-5 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))))
+      (send nb))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 ignore-0))
+      (stor priv-stor-0 (cat pt-1 (pv b lb))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (stor priv-stor (cat pt-3 "nil")) (send l))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-5 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 353)
+  (parent 212)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a self) (b b) (la l-0) (x x) (beta l) (upsilon y) (na na)
+        (nb nb) (priv-stor priv-stor-1) (pt pt-5))))
+  (origs (l-0 (4 1)) (pt-5 (4 1)) (pt-3 (3 1)) (lb (2 1)) (pt-1 (2 1))
+    (l (1 1)) (pt-0 (1 1)) (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 lb x rndx) (w expt)
+    (y rndx))
+  (defstrand init 5 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-1) (la l-0) (x x) (beta l) (upsilon (mul w y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l lb))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor) (l l))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) y) w))
+  (precedes ((1 1) (3 0)) ((1 2) (0 1)) ((3 2) (0 3)) ((4 1) (0 0))
+    ((4 2) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 lb)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec lb))) (y lb) (y (mul x w)))
+  (precur (5 0))
+  (gen-st (pv b l) (pv b lb) (pv self l-0))
+  (facts (trans 3 1) (trans 3 0) (trans 2 1) (trans 2 0)
+    (neq (exp (gen) (mul x w)) (gen)) (trans 1 1) (trans 1 0)
+    (trans 4 1) (trans 4 0) (neq (exp (gen) (mul w y)) (gen))
+    (neq self b) (undisclosed l-0))
+  (operation generalization forgot nb)
+  (traces
+    ((load priv-stor-1 (cat pt-5 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))))
+      (send nb))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 ignore-0))
+      (stor priv-stor-0 (cat pt-1 (pv b lb))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (stor priv-stor (cat pt-3 "nil")) (send l))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-5 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))) ((recv (cat (exp (gen) y) w))))
+  (label 365)
+  (parent 212)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a self) (b b) (la l-0) (x x) (beta l) (upsilon (mul w y))
+        (na na) (nb nb) (priv-stor priv-stor-1) (pt pt-5))))
+  (origs (l-0 (4 1)) (pt-5 (4 1)) (pt-3 (3 1)) (lb (2 1)) (pt-1 (2 1))
+    (l (1 1)) (pt-0 (1 1)) (na (0 2))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-um diffie-hellman
+  (defrole init
+    (vars (la x rndx) (beta upsilon expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a la))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) upsilon)
+          (enc na nb a b
+            (hash (exp (gen) (mul la beta))
+              (exp (gen) (mul x upsilon)))))) (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x la) (x beta))
+    (facts (neq (exp (gen) upsilon) (gen)))
+    (gen-st (pv a la))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole resp
+    (vars (lb y rndx) (alpha zeta expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b lb))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) zeta)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul lb alpha))
+              (exp (gen) (mul y zeta)))))) (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y lb) (y alpha) (y zeta))
+    (facts (neq (exp (gen) zeta) (gen)))
+    (gen-st (pv b lb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l))
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z 2)
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (upsilon expt))
+      (implies (and (p "init" z 4) (p "init" "upsilon" z upsilon))
+        (fact neq (exp (gen) upsilon) (gen)))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (zeta expt))
+      (implies (and (p "resp" z 3) (p "resp" "zeta" z zeta))
+        (fact neq (exp (gen) zeta) (gen)))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 0))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 0))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (la rndx) (a name))
+      (implies
+        (and (p "init" z 1) (p "init" "la" z la) (p "init" "a" z a))
+        (gen-st (pv a la)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (lb rndx) (b name))
+      (implies
+        (and (p "resp" z 1) (p "resp" "lb" z lb) (p "resp" "b" z b))
+        (gen-st (pv b lb)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (l rndx) (self name))
+      (implies
+        (and (p "ltx-disclose" z 1) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-um
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn) (la x rndx)
+    (beta upsilon expt))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (la la) (x x) (beta beta) (upsilon upsilon))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x la) (x beta))
+  (facts (neq a b))
+  (traces
+    ((load priv-stor (cat pt (pv a la)))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) upsilon)
+          (enc na nb a b
+            (hash (exp (gen) (mul la beta))
+              (exp (gen) (mul x upsilon)))))) (send nb)))
+  (label 366)
+  (unrealized (0 1))
+  (origs (na (0 2)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (lb l x y rndx))
+  (defstrand init 5 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (la l) (x x) (beta lb) (upsilon y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l lb))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (lb lb) (y y) (alpha l) (zeta x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
+    ((3 1) (0 0)) ((3 2) (2 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb lb l)
+  (uniq-gen x y)
+  (absent (x lb) (x l) (y lb) (y l) (y x))
+  (gen-st (pv b lb) (pv self l))
+  (facts (neq (exp (gen) x) (gen)) (trans 1 1) (trans 1 0) (trans 3 1)
+    (trans 3 0) (neq (exp (gen) y) (gen)) (neq self b))
+  (operation nonce-test (displaced 4 2 resp 4) (exp (gen) y-0) (0 3))
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) lb) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul lb l)) (exp (gen) (mul x y))))))
+      (send nb))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b lb)))
+      (send
+        (sig (body b (exp (gen) lb) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b lb)))
+      (recv
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul lb l)) (exp (gen) (mul x y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 382)
+  (parent 366)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a self) (b b) (la l) (x x) (beta lb) (upsilon y) (na na) (nb nb)
+        (priv-stor priv-stor-0) (pt pt-2))))
+  (origs (nb (2 3)) (l (3 1)) (pt-2 (3 1)) (lb (1 1)) (pt-0 (1 1))
+    (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (upsilon expt) (l l-0 rndx))
+  (defstrand init 5 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (la l-0) (x x) (beta l) (upsilon upsilon))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor) (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 1) (2 0)) ((1 2) (0 1)) ((2 2) (0 3)) ((3 1) (0 0))
+    ((3 2) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (trans 2 1) (trans 2 0) (trans 1 1) (trans 1 0) (trans 3 1)
+    (trans 3 0) (neq (exp (gen) upsilon) (gen)) (neq self b))
+  (operation generalization deleted (2 0))
+  (traces
+    ((load priv-stor-0 (cat pt-3 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) upsilon)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x upsilon)))))) (send nb))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (stor priv-stor (cat pt-1 "nil")) (send l))
+    ((load priv-stor-0 (cat pt-2 ignore-0))
+      (stor priv-stor-0 (cat pt-3 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 529)
+  (parent 366)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a self) (b b) (la l-0) (x x) (beta l) (upsilon upsilon) (na na)
+        (nb nb) (priv-stor priv-stor-0) (pt pt-3))))
+  (origs (l-0 (3 1)) (pt-3 (3 1)) (pt-1 (2 1)) (l (1 1)) (pt-0 (1 1))
+    (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (upsilon expt) (l l-0 rndx))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (la l) (x x) (beta l-0) (upsilon upsilon))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (precedes ((1 1) (0 0)) ((1 1) (3 0)) ((2 2) (0 1)) ((3 2) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (trans 3 1) (trans 3 0) (trans 2 1) (trans 2 0) (trans 1 1)
+    (trans 1 0) (neq (exp (gen) upsilon) (gen)) (neq a b))
+  (operation generalization deleted (3 0))
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) upsilon)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x upsilon)))))) (send nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-3 "nil")) (send l)))
+  (label 532)
+  (parent 366)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (la l) (x x) (beta l-0) (upsilon upsilon) (na na)
+        (nb nb) (priv-stor priv-stor) (pt pt))))
+  (origs (l-0 (2 1)) (pt-2 (2 1)) (pt-3 (3 1)) (l (1 1)) (pt (1 1))
+    (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (lb l x y rndx))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (la l) (x x) (beta lb) (upsilon y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l lb))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (precedes ((1 1) (0 0)) ((1 1) (3 0)) ((2 2) (0 1)) ((3 2) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na lb l)
+  (uniq-gen x y)
+  (absent (x lb) (x l) (y lb) (y l) (y x))
+  (gen-st (pv a l) (pv b lb))
+  (facts (trans 3 1) (trans 3 0) (neq (exp (gen) x) (gen)) (trans 2 1)
+    (trans 2 0) (trans 1 1) (trans 1 0) (neq (exp (gen) y) (gen))
+    (neq a b))
+  (operation generalization forgot nb)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) lb) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul lb l)) (exp (gen) (mul x y))))))
+      (send nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b lb)))
+      (send
+        (sig (body b (exp (gen) lb) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-3 "nil")) (send l)))
+  (label 535)
+  (parent 366)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (la l) (x x) (beta lb) (upsilon y) (na na) (nb nb)
+        (priv-stor priv-stor) (pt pt))))
+  (origs (pt-3 (3 1)) (lb (2 1)) (pt-2 (2 1)) (l (1 1)) (pt (1 1))
+    (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (upsilon expt) (l l-0 rndx))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (la l-0) (x x) (beta l) (upsilon upsilon))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((1 1) (0 0)) ((1 1) (3 0)) ((2 2) (0 1)) ((3 2) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (trans 3 1) (trans 3 0) (trans 2 1) (trans 2 0) (trans 1 1)
+    (trans 1 0) (neq (exp (gen) upsilon) (gen)) (neq a b))
+  (operation generalization deleted (3 0))
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) upsilon)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x upsilon)))))) (send nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0)))
+  (label 710)
+  (parent 366)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (la l-0) (x x) (beta l) (upsilon upsilon) (na na)
+        (nb nb) (priv-stor priv-stor) (pt pt))))
+  (origs (pt-3 (3 1)) (l (2 1)) (pt-2 (2 1)) (l-0 (1 1)) (pt (1 1))
+    (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 lb x y rndx))
+  (defstrand init 5 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-1) (la l-0) (x x) (beta l) (upsilon y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l lb))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor) (l l))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 1) (3 0)) ((1 2) (0 1)) ((3 2) (0 3)) ((4 1) (0 0))
+    ((4 2) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 lb)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec lb))) (y lb) (y x))
+  (gen-st (pv b l) (pv b lb) (pv self l-0))
+  (facts (trans 3 1) (trans 3 0) (trans 2 1) (trans 2 0)
+    (neq (exp (gen) x) (gen)) (trans 1 1) (trans 1 0) (trans 4 1)
+    (trans 4 0) (neq (exp (gen) y) (gen)) (neq self b))
+  (operation generalization forgot nb)
+  (traces
+    ((load priv-stor-1 (cat pt-5 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))))
+      (send nb))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 ignore-0))
+      (stor priv-stor-0 (cat pt-1 (pv b lb))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (stor priv-stor (cat pt-3 "nil")) (send l))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-5 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 739)
+  (parent 366)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a self) (b b) (la l-0) (x x) (beta l) (upsilon y) (na na)
+        (nb nb) (priv-stor priv-stor-1) (pt pt-5))))
+  (origs (l-0 (4 1)) (pt-5 (4 1)) (pt-3 (3 1)) (lb (2 1)) (pt-1 (2 1))
+    (l (1 1)) (pt-0 (1 1)) (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 lb x y rndx))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b-0) (priv-stor priv-stor)
+    (la l) (x x) (beta l-0) (upsilon y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b-0)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l lb))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (precedes ((1 1) (0 0)) ((1 1) (4 0)) ((2 2) (0 1)) ((4 2) (0 3)))
+  (non-orig (privk "sig" b-0))
+  (uniq-orig na l l-0 lb)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec lb))) (y lb) (y x))
+  (gen-st (pv a l) (pv b lb))
+  (facts (trans 4 1) (trans 4 0) (trans 3 1) (trans 3 0)
+    (neq (exp (gen) x) (gen)) (trans 2 1) (trans 2 0) (trans 1 1)
+    (trans 1 0) (neq (exp (gen) y) (gen)) (neq a b-0))
+  (operation generalization forgot (privk "sig" b))
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) l-0) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b-0
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))))
+      (send nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b-0 l-0)))
+      (send
+        (sig (body b-0 (exp (gen) l-0) (pubk "sig" b-0))
+          (privk "sig" b-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b lb))))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l)))
+  (label 779)
+  (parent 366)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b-0) (la l) (x x) (beta l-0) (upsilon y) (na na) (nb nb)
+        (priv-stor priv-stor) (pt pt))))
+  (origs (l-0 (2 1)) (pt-2 (2 1)) (pt-5 (4 1)) (lb (3 1)) (pt-3 (3 1))
+    (l (1 1)) (pt (1 1)) (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (lb l x rndx) (w expt) (y rndx))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (la l) (x x) (beta lb) (upsilon (mul w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l lb))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) y) w))
+  (precedes ((1 1) (0 0)) ((1 1) (3 0)) ((2 2) (0 1)) ((3 2) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na lb l)
+  (uniq-gen x y)
+  (absent (x lb) (x l) (y lb) (y l) (y (mul x w)))
+  (precur (4 0))
+  (gen-st (pv a l) (pv b lb))
+  (facts (trans 3 1) (trans 3 0) (neq (exp (gen) (mul x w)) (gen))
+    (trans 2 1) (trans 2 0) (trans 1 1) (trans 1 0)
+    (neq (exp (gen) (mul w y)) (gen)) (neq a b))
+  (operation generalization forgot nb)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) lb) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul lb l)) (exp (gen) (mul x w y))))))
+      (send nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b lb)))
+      (send
+        (sig (body b (exp (gen) lb) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-3 "nil")) (send l))
+    ((recv (cat (exp (gen) y) w))))
+  (label 786)
+  (parent 366)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (la l) (x x) (beta lb) (upsilon (mul w y)) (na na)
+        (nb nb) (priv-stor priv-stor) (pt pt))))
+  (origs (pt-3 (3 1)) (lb (2 1)) (pt-2 (2 1)) (l (1 1)) (pt (1 1))
+    (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 lb x y rndx))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (la l-0) (x x) (beta l) (upsilon y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l lb))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((1 1) (0 0)) ((1 1) (4 0)) ((2 2) (0 1)) ((4 2) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 lb)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec lb))) (y lb) (y x))
+  (gen-st (pv a l-0) (pv b l) (pv b lb))
+  (facts (trans 4 1) (trans 4 0) (trans 3 1) (trans 3 0)
+    (neq (exp (gen) x) (gen)) (trans 2 1) (trans 2 0) (trans 1 1)
+    (trans 1 0) (neq (exp (gen) y) (gen)) (neq a b))
+  (operation generalization forgot nb)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))))
+      (send nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b lb))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0)))
+  (label 795)
+  (parent 366)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (la l-0) (x x) (beta l) (upsilon y) (na na) (nb nb)
+        (priv-stor priv-stor) (pt pt))))
+  (origs (pt-5 (4 1)) (lb (3 1)) (pt-3 (3 1)) (l (2 1)) (pt-2 (2 1))
+    (l-0 (1 1)) (pt (1 1)) (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 lb x rndx) (w expt)
+    (y rndx))
+  (defstrand init 5 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-1) (la l-0) (x x) (beta l) (upsilon (mul w y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l lb))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor) (l l))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-0))
+  (deflistener (cat (exp (gen) y) w))
+  (precedes ((1 1) (3 0)) ((1 2) (0 1)) ((3 2) (0 3)) ((4 1) (0 0))
+    ((4 2) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 lb)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec lb))) (y lb) (y (mul x w)))
+  (precur (5 0))
+  (gen-st (pv b l) (pv b lb) (pv self l-0))
+  (facts (trans 3 1) (trans 3 0) (trans 2 1) (trans 2 0)
+    (neq (exp (gen) (mul x w)) (gen)) (trans 1 1) (trans 1 0)
+    (trans 4 1) (trans 4 0) (neq (exp (gen) (mul w y)) (gen))
+    (neq self b))
+  (operation generalization forgot nb)
+  (traces
+    ((load priv-stor-1 (cat pt-5 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))))
+      (send nb))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 ignore-0))
+      (stor priv-stor-0 (cat pt-1 (pv b lb))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (stor priv-stor (cat pt-3 "nil")) (send l))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-5 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))) ((recv (cat (exp (gen) y) w))))
+  (label 814)
+  (parent 366)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a self) (b b) (la l-0) (x x) (beta l) (upsilon (mul w y))
+        (na na) (nb nb) (priv-stor priv-stor-1) (pt pt-5))))
+  (origs (l-0 (4 1)) (pt-5 (4 1)) (pt-3 (3 1)) (lb (2 1)) (pt-1 (2 1))
+    (l (1 1)) (pt-0 (1 1)) (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 lb x rndx) (w expt)
+    (y rndx))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b-0) (priv-stor priv-stor)
+    (la l) (x x) (beta l-0) (upsilon (mul w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b-0)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l lb))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (deflistener (cat (exp (gen) y) w))
+  (precedes ((1 1) (0 0)) ((1 1) (4 0)) ((2 2) (0 1)) ((4 2) (0 3)))
+  (non-orig (privk "sig" b-0))
+  (uniq-orig na l l-0 lb)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec lb))) (y lb) (y (mul x w)))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b lb))
+  (facts (trans 4 1) (trans 4 0) (trans 3 1) (trans 3 0)
+    (neq (exp (gen) (mul x w)) (gen)) (trans 2 1) (trans 2 0)
+    (trans 1 1) (trans 1 0) (neq (exp (gen) (mul w y)) (gen))
+    (neq a b-0))
+  (operation generalization forgot (privk "sig" b))
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) l-0) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na nb a b-0
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))))
+      (send nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b-0 l-0)))
+      (send
+        (sig (body b-0 (exp (gen) l-0) (pubk "sig" b-0))
+          (privk "sig" b-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b lb))))
+    ((load priv-stor (cat pt (pv a l)))
+      (stor priv-stor (cat pt-5 "nil")) (send l))
+    ((recv (cat (exp (gen) y) w))))
+  (label 818)
+  (parent 366)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b-0) (la l) (x x) (beta l-0) (upsilon (mul w y)) (na na)
+        (nb nb) (priv-stor priv-stor) (pt pt))))
+  (origs (l-0 (2 1)) (pt-2 (2 1)) (pt-5 (4 1)) (lb (3 1)) (pt-3 (3 1))
+    (l (1 1)) (pt (1 1)) (na (0 2))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 lb x rndx) (w expt)
+    (y rndx))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (la l-0) (x x) (beta l) (upsilon (mul w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l lb))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) y) w))
+  (precedes ((1 1) (0 0)) ((1 1) (4 0)) ((2 2) (0 1)) ((4 2) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 lb)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec lb))) (y lb) (y (mul x w)))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l) (pv b lb))
+  (facts (trans 4 1) (trans 4 0) (trans 3 1) (trans 3 0)
+    (neq (exp (gen) (mul x w)) (gen)) (trans 2 1) (trans 2 0)
+    (trans 1 1) (trans 1 0) (neq (exp (gen) (mul w y)) (gen)) (neq a b))
+  (operation generalization forgot nb)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))))
+      (send nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b lb))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((recv (cat (exp (gen) y) w))))
+  (label 820)
+  (parent 366)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (la l-0) (x x) (beta l) (upsilon (mul w y)) (na na)
+        (nb nb) (priv-stor priv-stor) (pt pt))))
+  (origs (pt-5 (4 1)) (lb (3 1)) (pt-3 (3 1)) (l (2 1)) (pt-2 (2 1))
+    (l-0 (1 1)) (pt (1 1)) (na (0 2))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-um diffie-hellman
+  (defrole init
+    (vars (la x rndx) (beta upsilon expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a la))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) upsilon)
+          (enc na nb a b
+            (hash (exp (gen) (mul la beta))
+              (exp (gen) (mul x upsilon)))))) (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x la) (x beta))
+    (facts (neq (exp (gen) upsilon) (gen)))
+    (gen-st (pv a la))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole resp
+    (vars (lb y rndx) (alpha zeta expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b lb))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) zeta)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul lb alpha))
+              (exp (gen) (mul y zeta)))))) (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y lb) (y alpha) (y zeta))
+    (facts (neq (exp (gen) zeta) (gen)))
+    (gen-st (pv b lb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l))
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z 2)
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (upsilon expt))
+      (implies (and (p "init" z 4) (p "init" "upsilon" z upsilon))
+        (fact neq (exp (gen) upsilon) (gen)))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (zeta expt))
+      (implies (and (p "resp" z 3) (p "resp" "zeta" z zeta))
+        (fact neq (exp (gen) zeta) (gen)))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 0))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 0))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (la rndx) (a name))
+      (implies
+        (and (p "init" z 1) (p "init" "la" z la) (p "init" "a" z a))
+        (gen-st (pv a la)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (lb rndx) (b name))
+      (implies
+        (and (p "resp" z 1) (p "resp" "lb" z lb) (p "resp" "b" z b))
+        (gen-st (pv b lb)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (l rndx) (self name))
+      (implies
+        (and (p "ltx-disclose" z 1) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-um
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn) (lb rndx)
+    (alpha expt) (y rndx) (zeta expt))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (lb lb) (y y) (alpha alpha) (zeta zeta))
+  (non-orig (privk "sig" a))
+  (uniq-orig nb)
+  (uniq-gen y)
+  (absent (y lb) (y alpha) (y zeta))
+  (facts (neq a b) (undisclosed lb) (undisclosed alpha))
+  (traces
+    ((load priv-stor (cat pt (pv b lb)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) zeta)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul lb alpha))
+              (exp (gen) (mul y zeta)))))) (recv nb)))
+  (label 821)
+  (unrealized (0 1))
+  (origs (nb (0 3)))
+  (comment "Not closed under rules"))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-um diffie-hellman
+  (defrole init
+    (vars (la x rndx) (beta upsilon expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a la))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) upsilon)
+          (enc na nb a b
+            (hash (exp (gen) (mul la beta))
+              (exp (gen) (mul x upsilon)))))) (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x la) (x beta))
+    (facts (neq (exp (gen) upsilon) (gen)))
+    (gen-st (pv a la))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole resp
+    (vars (lb y rndx) (alpha zeta expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b lb))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) zeta)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul lb alpha))
+              (exp (gen) (mul y zeta)))))) (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y lb) (y alpha) (y zeta))
+    (facts (neq (exp (gen) zeta) (gen)))
+    (gen-st (pv b lb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l))
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z 2)
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (upsilon expt))
+      (implies (and (p "init" z 4) (p "init" "upsilon" z upsilon))
+        (fact neq (exp (gen) upsilon) (gen)))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (zeta expt))
+      (implies (and (p "resp" z 3) (p "resp" "zeta" z zeta))
+        (fact neq (exp (gen) zeta) (gen)))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 0))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 0))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (la rndx) (a name))
+      (implies
+        (and (p "init" z 1) (p "init" "la" z la) (p "init" "a" z a))
+        (gen-st (pv a la)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (lb rndx) (b name))
+      (implies
+        (and (p "resp" z 1) (p "resp" "lb" z lb) (p "resp" "b" z b))
+        (gen-st (pv b lb)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (l rndx) (self name))
+      (implies
+        (and (p "ltx-disclose" z 1) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-um
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn) (lb rndx)
+    (alpha expt) (y rndx) (zeta expt))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (lb lb) (y y) (alpha alpha) (zeta zeta))
+  (non-orig (privk "sig" a))
+  (uniq-orig nb)
+  (uniq-gen y)
+  (absent (y lb) (y alpha) (y zeta))
+  (facts (neq a b) (undisclosed alpha))
+  (traces
+    ((load priv-stor (cat pt (pv b lb)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) zeta)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul lb alpha))
+              (exp (gen) (mul y zeta)))))) (recv nb)))
+  (label 829)
+  (unrealized (0 1))
+  (origs (nb (0 3)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (zeta expt) (l l-0 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (lb l) (y y) (alpha l-0) (zeta zeta))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor) (l l))
+  (precedes ((1 1) (0 0)) ((1 1) (3 0)) ((2 2) (0 1)) ((3 2) (0 4)))
+  (non-orig (privk "sig" a))
+  (uniq-orig nb l l-0)
+  (uniq-gen y)
+  (absent (y zeta) (y l) (y l-0))
+  (gen-st (pv b l))
+  (facts (trans 3 1) (trans 3 0) (trans 2 1) (trans 2 0) (trans 1 1)
+    (trans 1 0) (neq (exp (gen) zeta) (gen)) (neq a b)
+    (undisclosed l-0))
+  (operation generalization deleted (3 0))
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) zeta)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y zeta))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a))))
+    ((load priv-stor (cat pt (pv b l)))
+      (stor priv-stor (cat pt-3 "nil")) (send l)))
+  (label 856)
+  (parent 829)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (lb l) (alpha l-0) (y y) (zeta zeta) (na na) (nb nb)
+        (priv-stor priv-stor) (pt pt))))
+  (origs (l-0 (2 1)) (pt-2 (2 1)) (pt-3 (3 1)) (l (1 1)) (pt (1 1))
+    (nb (0 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-um diffie-hellman
+  (defrole init
+    (vars (la x rndx) (beta upsilon expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a la))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) upsilon)
+          (enc na nb a b
+            (hash (exp (gen) (mul la beta))
+              (exp (gen) (mul x upsilon)))))) (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x la) (x beta))
+    (facts (neq (exp (gen) upsilon) (gen)))
+    (gen-st (pv a la))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole resp
+    (vars (lb y rndx) (alpha zeta expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b lb))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) zeta)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul lb alpha))
+              (exp (gen) (mul y zeta)))))) (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y lb) (y alpha) (y zeta))
+    (facts (neq (exp (gen) zeta) (gen)))
+    (gen-st (pv b lb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l))
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z 2)
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (upsilon expt))
+      (implies (and (p "init" z 4) (p "init" "upsilon" z upsilon))
+        (fact neq (exp (gen) upsilon) (gen)))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (zeta expt))
+      (implies (and (p "resp" z 3) (p "resp" "zeta" z zeta))
+        (fact neq (exp (gen) zeta) (gen)))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 0))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 0))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (la rndx) (a name))
+      (implies
+        (and (p "init" z 1) (p "init" "la" z la) (p "init" "a" z a))
+        (gen-st (pv a la)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (lb rndx) (b name))
+      (implies
+        (and (p "resp" z 1) (p "resp" "lb" z lb) (p "resp" "b" z b))
+        (gen-st (pv b lb)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (l rndx) (self name))
+      (implies
+        (and (p "ltx-disclose" z 1) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-um
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn) (lb y rndx)
+    (alpha zeta expt))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (lb lb) (y y) (alpha alpha) (zeta zeta))
+  (non-orig (privk "sig" a))
+  (uniq-orig nb)
+  (uniq-gen y)
+  (absent (y lb) (y alpha) (y zeta))
+  (facts (neq a b) (undisclosed lb))
+  (traces
+    ((load priv-stor (cat pt (pv b lb)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) zeta)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul lb alpha))
+              (exp (gen) (mul y zeta)))))) (recv nb)))
+  (label 859)
+  (unrealized (0 1))
+  (origs (nb (0 3)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (zeta expt) (l l-0 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b self)
+    (priv-stor priv-stor-0) (lb l-0) (y y) (alpha l) (zeta zeta))
+  (defstrand ltx-gen 3 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 1) (2 0)) ((1 2) (0 1)) ((2 2) (0 4)) ((3 1) (0 0))
+    ((3 2) (0 4)))
+  (non-orig (privk "sig" a))
+  (uniq-orig nb l l-0)
+  (uniq-gen y)
+  (absent (y zeta) (y l) (y l-0))
+  (gen-st (pv a l) (pv self l-0))
+  (facts (trans 2 1) (trans 2 0) (trans 1 1) (trans 1 0) (trans 3 1)
+    (trans 3 0) (neq (exp (gen) zeta) (gen)) (neq a self)
+    (undisclosed l-0))
+  (operation generalization deleted (2 0))
+  (traces
+    ((load priv-stor-0 (cat pt-3 (pv self l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a self (exp (gen) zeta)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a self
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y zeta))))))
+      (recv nb))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv a l)))
+      (send
+        (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a))))
+    ((load priv-stor (cat pt-0 (pv a l)))
+      (stor priv-stor (cat pt-1 "nil")) (send l))
+    ((load priv-stor-0 (cat pt-2 ignore-0))
+      (stor priv-stor-0 (cat pt-3 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 886)
+  (parent 859)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b self) (lb l-0) (y y) (alpha l) (zeta zeta) (na na)
+        (nb nb) (priv-stor priv-stor-0) (pt pt-3))))
+  (origs (l-0 (3 1)) (pt-3 (3 1)) (pt-1 (2 1)) (l (1 1)) (pt-0 (1 1))
+    (nb (0 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-um diffie-hellman
+  (defrole init
+    (vars (la x rndx) (beta upsilon expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a la))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) upsilon)
+          (enc na nb a b
+            (hash (exp (gen) (mul la beta))
+              (exp (gen) (mul x upsilon)))))) (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x la) (x beta))
+    (facts (neq (exp (gen) upsilon) (gen)))
+    (gen-st (pv a la))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole resp
+    (vars (lb y rndx) (alpha zeta expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b lb))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) zeta)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul lb alpha))
+              (exp (gen) (mul y zeta)))))) (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y lb) (y alpha) (y zeta))
+    (facts (neq (exp (gen) zeta) (gen)))
+    (gen-st (pv b lb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l))
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z 2)
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (upsilon expt))
+      (implies (and (p "init" z 4) (p "init" "upsilon" z upsilon))
+        (fact neq (exp (gen) upsilon) (gen)))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (zeta expt))
+      (implies (and (p "resp" z 3) (p "resp" "zeta" z zeta))
+        (fact neq (exp (gen) zeta) (gen)))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 0))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 0))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (la rndx) (a name))
+      (implies
+        (and (p "init" z 1) (p "init" "la" z la) (p "init" "a" z a))
+        (gen-st (pv a la)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (lb rndx) (b name))
+      (implies
+        (and (p "resp" z 1) (p "resp" "lb" z lb) (p "resp" "b" z b))
+        (gen-st (pv b lb)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (l rndx) (self name))
+      (implies
+        (and (p "ltx-disclose" z 1) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-um
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn) (lb y rndx)
+    (alpha zeta expt))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (lb lb) (y y) (alpha alpha) (zeta zeta))
+  (non-orig (privk "sig" a))
+  (uniq-orig nb)
+  (uniq-gen y)
+  (absent (y lb) (y alpha) (y zeta))
+  (facts (neq a b))
+  (traces
+    ((load priv-stor (cat pt (pv b lb)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) zeta)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul lb alpha))
+              (exp (gen) (mul y zeta)))))) (recv nb)))
+  (label 889)
+  (unrealized (0 1))
+  (origs (nb (0 3)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (zeta expt) (l l-0 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b self)
+    (priv-stor priv-stor-0) (lb l-0) (y y) (alpha l) (zeta zeta))
+  (defstrand ltx-gen 3 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 1) (2 0)) ((1 2) (0 1)) ((2 2) (0 4)) ((3 1) (0 0))
+    ((3 2) (0 4)))
+  (non-orig (privk "sig" a))
+  (uniq-orig nb l l-0)
+  (uniq-gen y)
+  (absent (y zeta) (y l) (y l-0))
+  (gen-st (pv a l) (pv self l-0))
+  (facts (trans 2 1) (trans 2 0) (trans 1 1) (trans 1 0) (trans 3 1)
+    (trans 3 0) (neq (exp (gen) zeta) (gen)) (neq a self))
+  (operation generalization deleted (2 0))
+  (traces
+    ((load priv-stor-0 (cat pt-3 (pv self l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a self (exp (gen) zeta)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a self
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y zeta))))))
+      (recv nb))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv a l)))
+      (send
+        (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a))))
+    ((load priv-stor (cat pt-0 (pv a l)))
+      (stor priv-stor (cat pt-1 "nil")) (send l))
+    ((load priv-stor-0 (cat pt-2 ignore-0))
+      (stor priv-stor-0 (cat pt-3 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 937)
+  (parent 889)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b self) (lb l-0) (y y) (alpha l) (zeta zeta) (na na)
+        (nb nb) (priv-stor priv-stor-0) (pt pt-3))))
+  (origs (l-0 (3 1)) (pt-3 (3 1)) (pt-1 (2 1)) (l (1 1)) (pt-0 (1 1))
+    (nb (0 3))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (zeta expt) (l l-0 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (lb l) (y y) (alpha l-0) (zeta zeta))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor) (l l))
+  (precedes ((1 1) (0 0)) ((1 1) (3 0)) ((2 2) (0 1)) ((3 2) (0 4)))
+  (non-orig (privk "sig" a))
+  (uniq-orig nb l l-0)
+  (uniq-gen y)
+  (absent (y zeta) (y l) (y l-0))
+  (gen-st (pv b l))
+  (facts (trans 3 1) (trans 3 0) (trans 2 1) (trans 2 0) (trans 1 1)
+    (trans 1 0) (neq (exp (gen) zeta) (gen)) (neq a b))
+  (operation generalization deleted (3 0))
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) zeta)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y zeta))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a))))
+    ((load priv-stor (cat pt (pv b l)))
+      (stor priv-stor (cat pt-3 "nil")) (send l)))
+  (label 940)
+  (parent 889)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (lb l) (y y) (alpha l-0) (zeta zeta) (na na) (nb nb)
+        (priv-stor priv-stor) (pt pt))))
+  (origs (l-0 (2 1)) (pt-2 (2 1)) (pt-3 (3 1)) (l (1 1)) (pt (1 1))
+    (nb (0 3))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (zeta expt) (l l-0 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (lb l-0) (y y) (alpha l) (zeta zeta))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor) (l l-0))
+  (precedes ((1 1) (0 0)) ((1 1) (3 0)) ((2 2) (0 1)) ((3 2) (0 4)))
+  (non-orig (privk "sig" a))
+  (uniq-orig nb l l-0)
+  (uniq-gen y)
+  (absent (y zeta) (y l) (y l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (trans 3 1) (trans 3 0) (trans 2 1) (trans 2 0) (trans 1 1)
+    (trans 1 0) (neq (exp (gen) zeta) (gen)) (neq a b))
+  (operation generalization deleted (3 0))
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) zeta)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y zeta))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l)))
+      (send
+        (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a))))
+    ((load priv-stor (cat pt (pv b l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0)))
+  (label 951)
+  (parent 889)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (lb l-0) (y y) (alpha l) (zeta zeta) (na na) (nb nb)
+        (priv-stor priv-stor) (pt pt))))
+  (origs (pt-3 (3 1)) (l (2 1)) (pt-2 (2 1)) (l-0 (1 1)) (pt (1 1))
+    (nb (0 3))))
+
+(comment "Nothing left to do")
diff --git a/tst/dhcr_um_goals.scm b/tst/dhcr_um_goals.scm
new file mode 100644
--- /dev/null
+++ b/tst/dhcr_um_goals.scm
@@ -0,0 +1,317 @@
+;;; Unified Model  This version used in the paper, tooldev/dh/conf_dh/dh_ebn.tex
+
+;;; This file models the "Unified Model" method of determining a fresh
+;;; key from long-term and ephemeral Diffie-Hellman exponents.  We use
+;;; self-signed certificates to link names to long-term public values.
+
+;;; This file contains the standard version, in which the two
+;;; ephemeral are mixed, as are the two static exponents.
+
+;;; A role is provided to expose the long term exponent.  The latter
+;;; step is used to test the notion of forward security, assuming that
+;;; it happens *after* the session which agrees the key in question.  
+
+;;; A sequence of queries are analyzed.  Four show what happens given
+;;; an initiator run, depnding which long term values are exposed.
+;;; Then four ask the corresponding questions about the responder.  In
+;;; each group of four, we first assume neither long term exponent is
+;;; exposed, then consider each exposure individually, and then both
+;;; exposed.  
+
+;;; Then we consider the forward secrecy question, first from the
+;;; initiator's point of view, and then from the responder's.
+
+;;; The UM key derivation achieves forward secrecy.  Its weakness is
+;;; that if a participant's *own* long term value is exposed, an
+;;; adversary can acquire a key shared with them for any claimed peer.
+;;; This remains true if we stipulate that the partcipant generates a
+;;; long trem key only once.  If my peer's long term value is exposed
+;;; of course anyone can impersonate them.
+
+;;; CPSA4 revisions:
+;;;
+;;; 1.  Self certify my public value in ltx-gen,
+;;;     and assume signing keys non.
+;;; 2.  Deposit private value in state and retrieve
+;;;	it at the beginning of each init or resp run.
+;;; 3.  Discard the private value from state before
+;;;	disclosing it, when testing forward secrecy.
+
+(herald "DHCR: unified model (UM) original"
+	(bound 30)
+	(limit 8000)
+	(goals-sat)
+	(algebra diffie-hellman))
+
+(defmacro (kcfa l gb x gy)
+  (hash (exp gb l) (exp gy x)))
+
+(defmacro (kcfb l ga y gx) 
+  (hash (exp ga l) (exp gx y)))
+
+(defprotocol dhcr-um diffie-hellman
+  (defrole init
+    (vars (l x rndx) (beta eta expt) (a b name) (na nb data) (priv-stor locn))
+    (trace
+     (load priv-stor (pv a l))
+     (recv (sig (body b (exp (gen) beta) (pubk "sig" b))
+		(privk "sig" b)))
+     (send (cat na a b (exp (gen) x)))
+     (recv (cat (exp (gen) eta)
+		(enc na nb a b
+		     (kcfa l (exp (gen) beta)
+			   x (exp (gen) eta)))))
+     (send nb)
+     )
+    (uniq-gen x)
+    (uniq-orig na)
+    (facts (neq a b))
+    ;; (facts (neq (exp (gen) eta) (gen)))
+    (gen-st (pv a l)))
+
+  (defrole resp
+    (vars (l y rndx) (alpha chi expt) (a b name) (na nb data) (priv-stor locn))
+    (trace
+     (load priv-stor (pv b l))
+     (recv (sig (body a (exp (gen) alpha) (pubk "sig" a))
+		(privk "sig" a)))
+     (recv (cat na a b (exp (gen) chi)))
+     (send (cat (exp (gen) y)
+		(enc na nb a b
+		     (kcfb l (exp (gen) alpha)
+			   y (exp (gen) chi)))))
+     (recv nb)
+     (send "done")
+     )
+    (uniq-gen y)
+    (uniq-orig nb)
+    (facts (neq a b))
+    ;;    (facts (neq (exp (gen) chi) (gen)))
+    (gen-st (pv b l)))
+
+  (defrole ltx-gen
+    (vars (self name) (l rndx)
+	  (priv-stor locn) (ignore mesg))
+    (trace
+     (load priv-stor ignore)
+     (stor priv-stor (pv self l))
+     (send (sig (body self (exp (gen) l) (pubk "sig" self))
+		(privk "sig" self))))
+    (uniq-orig l))
+
+  (defrole ltx-disclose
+    (vars (self name) (l rndx)
+	  (priv-stor locn) (ignore mesg))
+    (trace
+     (load priv-stor (pv self l))
+     (stor priv-stor "nil")
+     (send l))
+    (gen-st (pv self l)))
+
+  (defrule undisclosed-not-disclosed
+    (forall
+     ((z strd) (l rndx))
+     (implies
+      (and (fact undisclosed l)
+	  (p "ltx-disclose" z 2)
+	  (p "ltx-disclose" "l" z l))
+      (false))))
+
+  (defrule ltx-gen-once-inference
+    (forall
+     ((z1 z2 strd) (self name))
+     (implies
+      (and
+       (fact ltx-gen-once self)
+       (p "ltx-gen" z1 2)
+       (p "ltx-gen" "self" z1 self)
+       (p "ltx-gen" z2 2)
+       (p "ltx-gen" "self" z2 self))
+      (= z1 z2))))
+
+  (defrule eq-means-=
+    (forall
+     ((v1 v2 mesg))
+     (implies
+      (fact eq v1 v2)
+      (= v1 v2))))
+
+  (lang (sig sign)
+	(body (tuple 3))
+	(pv (tuple 2))))
+
+
+(defgoal dhcr-um
+  (forall
+   ((na nb data) (a b name) (priv-stor locn) (l l-peer x rndx)
+    (eta expt) (z strd))
+   (implies
+    (and
+     (p "init" z 4)
+     (p "init" "na" z na)
+     (p "init" "nb" z nb)     
+     (p "init" "a" z a)
+     (p "init" "b" z b)
+     (p "init" "priv-stor" z priv-stor)
+     (p "init" "l" z l)
+     (p "init" "x" z x)
+     (p "init" "beta" z l-peer)     
+     (p "init" "eta" z eta)
+     (non (privk "sig" b))
+     (ugen x)
+     (uniq-at na z 2)
+     (fact neq a b)
+     (fact undisclosed l)
+     (fact undisclosed l-peer))
+    (exists
+     ((z-1 strd) (y rndx) (w expt))
+     (and
+      (= eta (mul w y))
+      (p "resp" z-1 4) 
+      (p "resp" "na" z-1 na)
+      (p "resp" "nb" z-1 nb) (p "resp" "a" z-1 a)
+      (p "resp" "b" z-1 b) 
+      (p "resp" "l" z-1 l-peer) (p "resp" "y" z-1 y)
+      (p "resp" "alpha" z-1 l) (p "resp" "chi" z-1 (mul y w))
+      (prec z 2 z-1 2) 
+      (ugen y) (uniq-at nb z-1 3))))))
+
+
+(defgoal dhcr-um
+  (forall
+   ((z strd) (na nb data) (a b name) (l l-peer y rndx)
+    (chi expt))
+   (implies
+    (and (p "resp" z 5)
+	 (p "resp" "na" z na)
+	 (p "resp" "nb" z nb)
+         (p "resp" "a" z a)
+	 (p "resp" "b" z b)
+	 (p "resp" "l" z l)
+         (p "resp" "y" z y)
+	 (p "resp" "alpha" z l-peer)
+         (p "resp" "chi" z chi)
+	 (non (privk "sig" a)) (ugen y)
+         (uniq-at nb z 3) (fact neq a b) (fact undisclosed l)
+         (fact undisclosed l-peer))      
+    (exists
+     ((z-1 strd) (x rndx) (w expt))
+     (and (= chi (mul x w))
+	  (p "init" z-1 5)
+          (p "resp" "chi" z (mul x w)) 
+	  (p "init" "na" z-1 na)
+          (p "init" "nb" z-1 nb)
+	  (p "init" "a" z-1 a)
+          (p "init" "b" z-1 b) 
+          (p "init" "l" z-1 l-peer)
+	  (p "init" "x" z-1 x)
+          (p "init" "beta" z-1 l)
+	  (p "init" "eta" z-1 (mul y w))
+	  (prec z 3 z-1 3) (prec z-1 2 z 2)
+	  (prec z-1 4 z 4) (ugen x)
+	  (uniq-at na z-1 2))))))
+
+
+(defgoal dhcr-um
+  (forall
+   ((z zl strd) (na nb data) (a b name) (priv-stor locn) (l x rndx)
+    (eta beta expt))
+   (implies
+    (and
+     (p "init" z 4)
+     (p "init" "na" z na)
+     (p "init" "nb" z nb)     
+     (p "init" "a" z a)
+     (p "init" "b" z b)
+     (p "init" "priv-stor" z priv-stor)
+     (p "init" "l" z l)
+     (p "init" "x" z x)
+     (p "init" "beta" z beta)     
+     (p "init" "eta" z eta)
+     (non (privk "sig" b))
+     (ugen x)
+     (uniq-at na z 2)
+     (fact neq a b)
+     (fact undisclosed l)
+     (fact undisclosed beta)
+     ;; ... gets the secrecy we need
+     (p "" zl 2)
+     (p "" "x" zl 
+	(kcfa l (exp (gen) beta)
+	      x (exp (gen) eta))))
+    (false))))
+
+(comment
+;;; comment these out for brevity in the tst suite run.  Be sure to
+;;; test them periodically, though.
+
+;;; Forward secrecy 
+
+ (defgoal dhcr-um
+   (forall
+    ((na nb data) (a b self self-0 name)
+     (ltxa ltxb x rndx)
+     (y expt) (z z-0 z-1 z-2 strd))
+    (implies
+     (and (p "init" z 5)
+	  (p "" z-0 2)
+	  (p "ltx-disclose" z-1 3)
+	  (p "ltx-disclose" z-2 3)
+
+	  (p "init" "na" z na)
+          (p "init" "nb" z nb)
+	  (p "init" "a" z a)
+	  (p "init" "b" z b)
+	  (p "init" "l" z ltxa)
+          (p "init" "x" z x)
+	  (p "init" "beta" z ltxb)
+	  (p "init" "eta" z y)
+	 
+          (p "" "x" z-0
+             (hash (exp (gen) (mul ltxa ltxb))
+		   (exp (gen) (mul x y))))
+	 
+          (p "ltx-disclose" "self" z-1 self)
+          (p "ltx-disclose" "l" z-1 ltxa)
+          (p "ltx-disclose" "self" z-2 self-0)
+          (p "ltx-disclose" "l" z-2 ltxb)
+	  (ugen x)
+	  (uniq-at na z 2)
+	  (prec z 4 z-1 0)
+	  (prec z 4 z-2 0))
+     (false))))
+
+
+ (defgoal dhcr-um
+   (forall
+    ((na nb data) (a b self self-0 name)
+     (ltxa ltxb y rndx)
+     (chi expt) (z z-0 z-1 z-2 strd))
+    (implies
+     (and
+      (p "resp" z 6)
+      (p "" z-0 2)
+      (p "ltx-disclose" z-1 3)     
+      (p "ltx-disclose" z-2 3)
+     
+      (p "resp" "na" z na)
+      (p "resp" "nb" z nb)
+      (p "resp" "a" z a)
+      (p "resp" "b" z b)
+      (p "resp" "l" z ltxa)
+      (p "resp" "y" z y)
+      (p "resp" "alpha" z ltxb)
+      (p "resp" "chi" z chi)
+
+      (p "" "x" z-0
+         (hash (exp (gen) (mul ltxa ltxb))
+	       (exp (gen) (mul y chi))))
+     
+      (p "ltx-disclose" "self" z-1 self)         
+      (p "ltx-disclose" "l" z-1 ltxa)
+      (p "ltx-disclose" "self" z-2 self-0)         
+      (p "ltx-disclose" "l" z-2 ltxb)
+      (prec z 5 z-1 0)
+      (prec z 5 z-2 0)
+      (ugen y) (uniq-at nb z 3))
+     (false)))))
diff --git a/tst/dhcr_um_goals.tst b/tst/dhcr_um_goals.tst
new file mode 100644
--- /dev/null
+++ b/tst/dhcr_um_goals.tst
@@ -0,0 +1,7551 @@
+(herald "DHCR: unified model (UM) original" (bound 30) (limit 8000)
+  (goals-sat) (algebra diffie-hellman))
+
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/dhcr_um_goals.scm")
+(comment "Step count limited to 8000")
+(comment "Strand count bounded at 30")
+
+(defprotocol dhcr-um diffie-hellman
+  (defrole init
+    (vars (l x rndx) (beta eta expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a l))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l beta)) (exp (gen) (mul x eta))))))
+      (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x l) (x beta))
+    (facts (neq a b))
+    (gen-st (pv a l)))
+  (defrole resp
+    (vars (l y rndx) (alpha chi expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b l))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l alpha)) (exp (gen) (mul y chi))))))
+      (recv nb) (send "done"))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y l) (y alpha) (y chi))
+    (facts (neq a b))
+    (gen-st (pv b l)))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l)))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z (idx 2))
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defrule ltx-gen-once-inference
+    (forall ((z1 z2 strd) (self name))
+      (implies
+        (and (fact ltx-gen-once self) (p "ltx-gen" z1 (idx 2))
+          (p "ltx-gen" "self" z1 self) (p "ltx-gen" z2 (idx 2))
+          (p "ltx-gen" "self" z2 self))
+        (= z1 z2))))
+  (defrule eq-means-=
+    (forall ((v1 v2 mesg)) (implies (fact eq v1 v2) (= v1 v2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "init" z (idx 2)) (p "init" "a" z a) (p "init" "b" z b))
+        (fact neq a b))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "resp" z (idx 2)) (p "resp" "a" z a) (p "resp" "b" z b))
+        (fact neq a b))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd))
+      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 1)))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd))
+      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 0)))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd))
+      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 1)))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd))
+      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 0)))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (a name) (l rndx))
+      (implies
+        (and (p "init" z (idx 1)) (p "init" "l" z l) (p "init" "a" z a))
+        (gen-st (pv a l)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (b name) (l rndx))
+      (implies
+        (and (p "resp" z (idx 1)) (p "resp" "l" z l) (p "resp" "b" z b))
+        (gen-st (pv b l)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (self name) (l rndx))
+      (implies
+        (and (p "ltx-disclose" z (idx 1)) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-um
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn)
+    (l l-peer x rndx) (eta expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-peer) (eta eta))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x l) (x l-peer))
+  (facts (neq a b) (undisclosed l) (undisclosed l-peer))
+  (goals
+    (forall
+      ((na nb data) (a b name) (priv-stor locn) (l l-peer x rndx)
+        (eta expt) (z strd))
+      (implies
+        (and (p "init" z 4) (p "init" "na" z na) (p "init" "nb" z nb)
+          (p "init" "a" z a) (p "init" "b" z b)
+          (p "init" "priv-stor" z priv-stor) (p "init" "l" z l)
+          (p "init" "x" z x) (p "init" "beta" z l-peer)
+          (p "init" "eta" z eta) (non (privk "sig" b)) (ugen x)
+          (uniq-at na z 2) (fact neq a b) (fact undisclosed l)
+          (fact undisclosed l-peer))
+        (exists ((z-1 strd) (y rndx) (w expt))
+          (and (= eta (mul w y)) (p "resp" z-1 4) (p "resp" "na" z-1 na)
+            (p "resp" "nb" z-1 nb) (p "resp" "a" z-1 a)
+            (p "resp" "b" z-1 b) (p "resp" "l" z-1 l-peer)
+            (p "resp" "y" z-1 y) (p "resp" "alpha" z-1 l)
+            (p "resp" "chi" z-1 (mul y w)) (prec z 2 z-1 2) (ugen y)
+            (uniq-at nb z-1 3))))))
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-peer) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-peer))
+              (exp (gen) (mul x eta))))))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (na (0 2)))
+  (ugens (x (0 2)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhcr-um
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn)
+    (l l-peer x rndx) (eta expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-peer) (eta eta))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x l) (x l-peer))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-peer))
+  (rule fact-resp-neq0 gen-st-ltx-disclose-0)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-peer) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-peer))
+              (exp (gen) (mul x eta))))))))
+  (label 1)
+  (parent 0)
+  (unrealized (0 0) (0 1))
+  (origs (na (0 2)))
+  (ugens (x (0 2)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore mesg) (na nb data) (a b name) (pt pt-0 pval)
+    (priv-stor locn) (l-peer x rndx) (eta expt) (l rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-peer) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (precedes ((1 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l)
+  (uniq-gen x)
+  (absent (x l-peer) (x l))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-peer))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor (cat pt (pv a l))) (0 0))
+  (strand-map 0)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-peer) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l-peer l))
+              (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l)))))
+  (label 2)
+  (parent 1)
+  (unrealized (0 1) (0 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 1) (0 0)) ((2 2) (0 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand ltx-gen 3)
+    (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)) (0 1))
+  (strand-map 0 1)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))))
+  (label 3)
+  (parent 2)
+  (unrealized (0 3))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 l-1 x y rndx)
+    (chi expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1))) (chi chi))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 3) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec l-1))) (y l-1) (y chi))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 gen-st-ltx-disclose-0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand resp 4)
+    (enc na nb a b
+      (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))) (0 3))
+  (strand-map 0 1 2)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))))))
+  (label 4)
+  (parent 3)
+  (unrealized (0 3) (3 0) (3 1))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (precedes ((0 2) (3 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+    (enc na nb a b
+      (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))) (0 3))
+  (strand-map 0 1 2)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))))
+  (label 5)
+  (parent 3)
+  (unrealized (3 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (chi expt) (l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi chi))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
+    ((3 3) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y chi) (y l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 4 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))))))
+  (label 6)
+  (parent 4)
+  (unrealized (0 3) (3 1))
+  (fringe)
+  (satisfies-all)
+  (maps
+    ((0)
+      ((na na) (nb nb) (a a) (b b) (priv-stor priv-stor) (l l)
+        (l-peer l-0) (x x) (eta (mul (rec x) y chi)))))
+  (origs (l-0 (2 1)) (pt-2 (2 1)) (nb (3 3)) (l (1 1)) (pt (1 1))
+    (na (0 2)))
+  (ugens (y (3 3)) (x (0 2)))
+  (comment "satisfies all"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y rndx) (chi expt)
+    (l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1))) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 3) (0 3))
+    ((4 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec l-1))) (y chi) (y l-1))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1)))))
+  (label 7)
+  (parent 4)
+  (unrealized (0 3) (3 1))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))))
+  (label 8)
+  (parent 5)
+  (unrealized (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y rndx) (chi expt)
+    (l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1))) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 3) (0 3))
+    ((4 1) (3 0)) ((4 1) (5 0)) ((5 1) (3 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec l-1))) (y chi) (y l-1))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l l-0)) l-1))
+    (exp (gen) (mul l l-0 (rec l-1))) (3 1))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1))))
+  (label 9)
+  (parent 7)
+  (unrealized (0 3) (5 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y rndx) (chi expt)
+    (l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1))) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l (rec l-1))) l-0))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((5 1) (3 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec l-1))) (y chi) (y l-1))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l (rec l-1))) l-0))
+    (exp (gen) (mul l l-0 (rec l-1))) (3 1))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l (rec l-1))) l-0))
+      (send (cat (exp (gen) (mul l (rec l-1))) l-0))))
+  (label 10)
+  (parent 7)
+  (unrealized (0 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y rndx) (chi expt)
+    (l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1))) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((5 1) (3 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec l-1))) (y chi) (y l-1))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+    (exp (gen) (mul l l-0 (rec l-1))) (3 1))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l))))
+  (label 11)
+  (parent 7)
+  (unrealized (0 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (deflistener (cat (exp (gen) l) l-0))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) l-0))
+    (exp (gen) (mul l l-0)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))
+    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0))))
+  (label 12)
+  (parent 8)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (deflistener (cat (exp (gen) l-0) l))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) l))
+    (exp (gen) (mul l l-0)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l))))
+  (label 13)
+  (parent 8)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y rndx) (chi expt)
+    (l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1))) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 3) (0 3))
+    ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec l-1))) (y chi) (y l-1))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (5 0)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1)))
+  (label 14)
+  (parent 9)
+  (unrealized (0 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y rndx) (chi expt)
+    (l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1))) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) l-0))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 1) (7 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec l-1))) (y chi) (y l-1))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) l-0))
+    (exp (gen) (mul l l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0))))
+  (label 15)
+  (parent 14)
+  (unrealized (0 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y rndx) (chi expt)
+    (l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1))) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((1 1) (7 0)) ((2 2) (0 1))
+    ((3 3) (0 3)) ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1))
+    ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec l-1))) (y chi) (y l-1))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) l))
+    (exp (gen) (mul l l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l))))
+  (label 16)
+  (parent 14)
+  (unrealized (0 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-um diffie-hellman
+  (defrole init
+    (vars (l x rndx) (beta eta expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a l))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l beta)) (exp (gen) (mul x eta))))))
+      (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x l) (x beta))
+    (facts (neq a b))
+    (gen-st (pv a l)))
+  (defrole resp
+    (vars (l y rndx) (alpha chi expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b l))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l alpha)) (exp (gen) (mul y chi))))))
+      (recv nb) (send "done"))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y l) (y alpha) (y chi))
+    (facts (neq a b))
+    (gen-st (pv b l)))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l)))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z (idx 2))
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defrule ltx-gen-once-inference
+    (forall ((z1 z2 strd) (self name))
+      (implies
+        (and (fact ltx-gen-once self) (p "ltx-gen" z1 (idx 2))
+          (p "ltx-gen" "self" z1 self) (p "ltx-gen" z2 (idx 2))
+          (p "ltx-gen" "self" z2 self))
+        (= z1 z2))))
+  (defrule eq-means-=
+    (forall ((v1 v2 mesg)) (implies (fact eq v1 v2) (= v1 v2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "init" z (idx 2)) (p "init" "a" z a) (p "init" "b" z b))
+        (fact neq a b))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "resp" z (idx 2)) (p "resp" "a" z a) (p "resp" "b" z b))
+        (fact neq a b))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd))
+      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 1)))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd))
+      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 0)))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd))
+      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 1)))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd))
+      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 0)))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (a name) (l rndx))
+      (implies
+        (and (p "init" z (idx 1)) (p "init" "l" z l) (p "init" "a" z a))
+        (gen-st (pv a l)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (b name) (l rndx))
+      (implies
+        (and (p "resp" z (idx 1)) (p "resp" "l" z l) (p "resp" "b" z b))
+        (gen-st (pv b l)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (self name) (l rndx))
+      (implies
+        (and (p "ltx-disclose" z (idx 1)) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-um
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn)
+    (l l-peer y rndx) (chi expt))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-peer) (chi chi))
+  (non-orig (privk "sig" a))
+  (uniq-orig nb)
+  (uniq-gen y)
+  (absent (y l) (y l-peer) (y chi))
+  (facts (neq a b) (undisclosed l) (undisclosed l-peer))
+  (goals
+    (forall
+      ((z strd) (na nb data) (a b name) (l l-peer y rndx) (chi expt))
+      (implies
+        (and (p "resp" z 5) (p "resp" "na" z na) (p "resp" "nb" z nb)
+          (p "resp" "a" z a) (p "resp" "b" z b) (p "resp" "l" z l)
+          (p "resp" "y" z y) (p "resp" "alpha" z l-peer)
+          (p "resp" "chi" z chi) (non (privk "sig" a)) (ugen y)
+          (uniq-at nb z 3) (fact neq a b) (fact undisclosed l)
+          (fact undisclosed l-peer))
+        (exists ((z-1 strd) (x rndx) (w expt))
+          (and (= chi (mul x w)) (p "init" z-1 5)
+            (p "resp" "chi" z (mul x w)) (p "init" "na" z-1 na)
+            (p "init" "nb" z-1 nb) (p "init" "a" z-1 a)
+            (p "init" "b" z-1 b) (p "init" "l" z-1 l-peer)
+            (p "init" "x" z-1 x) (p "init" "beta" z-1 l)
+            (p "init" "eta" z-1 (mul y w)) (prec z 3 z-1 3)
+            (prec z-1 2 z 2) (prec z-1 4 z 4) (ugen x)
+            (uniq-at na z-1 2))))))
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-peer) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-peer)) (exp (gen) (mul y chi))))))
+      (recv nb)))
+  (label 17)
+  (unrealized (0 1))
+  (origs (nb (0 3)))
+  (ugens (y (0 3)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhcr-um
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn)
+    (l l-peer y rndx) (chi expt))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-peer) (chi chi))
+  (non-orig (privk "sig" a))
+  (uniq-orig nb)
+  (uniq-gen y)
+  (absent (y l) (y l-peer) (y chi))
+  (gen-st (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-peer))
+  (rule fact-init-neq0 gen-st-ltx-disclose-0)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-peer) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-peer)) (exp (gen) (mul y chi))))))
+      (recv nb)))
+  (label 18)
+  (parent 17)
+  (unrealized (0 0) (0 1))
+  (origs (nb (0 3)))
+  (ugens (y (0 3)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore mesg) (na nb data) (a b name) (pt pt-0 pval)
+    (priv-stor locn) (l-peer y rndx) (chi expt) (l rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-peer) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (precedes ((1 1) (0 0)))
+  (non-orig (privk "sig" a))
+  (uniq-orig nb l)
+  (uniq-gen y)
+  (absent (y l-peer) (y chi) (y l))
+  (gen-st (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-peer))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-init-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor (cat pt (pv b l))) (0 0))
+  (strand-map 0)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-peer) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l-peer l)) (exp (gen) (mul y chi))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l)))))
+  (label 19)
+  (parent 18)
+  (unrealized (0 1) (0 4))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (chi expt) (l l-0 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 1) (0 0)) ((2 2) (0 1)))
+  (non-orig (privk "sig" a))
+  (uniq-orig nb l l-0)
+  (uniq-gen y)
+  (absent (y chi) (y l) (y l-0))
+  (gen-st (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-init-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand ltx-gen 3)
+    (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)) (0 1))
+  (strand-map 0 1)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))))
+  (label 20)
+  (parent 19)
+  (unrealized (0 4))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 l-1 x rndx)
+    (eta expt) (y x-0 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x eta)))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta (mul l l-0 (rec l-1)))
+    (eta (mul x eta y (rec x-0))))
+  (precedes ((0 3) (3 3)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 2) (0 2))
+    ((3 4) (0 4)))
+  (non-orig (privk "sig" a))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x-0)
+  (absent (y l) (y l-0) (y (mul x eta)) (x-0 (mul l l-0 (rec l-1)))
+    (x-0 l-1))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 gen-st-ltx-disclose-0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 5) nb (0 4)
+    (enc na nb a b
+      (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y)))))
+  (strand-map 0 1 2)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x eta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a))))
+    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x eta y (rec x-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (send nb)))
+  (label 21)
+  (parent 20)
+  (unrealized (3 0) (3 1) (3 3))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (chi expt) (l l-0 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (precedes ((0 3) (3 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 4)))
+  (non-orig (privk "sig" a))
+  (uniq-orig nb l l-0)
+  (uniq-gen y)
+  (absent (y chi) (y l) (y l-0))
+  (gen-st (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-init-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener
+      (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))) nb (0 4)
+    (enc na nb a b
+      (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+  (strand-map 0 1 2)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a))))
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))))
+  (label 22)
+  (parent 20)
+  (unrealized (3 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x rndx)
+    (eta expt) (y x-0 l-0 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x eta)))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta l) (eta (mul x eta y (rec x-0))))
+  (precedes ((0 3) (3 3)) ((1 1) (0 0)) ((2 1) (3 0)) ((2 2) (0 1))
+    ((3 2) (0 2)) ((3 4) (0 4)))
+  (non-orig (privk "sig" a))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x-0)
+  (absent (y l) (y (mul x eta)) (y l-0) (x-0 l) (x-0 l-0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 4 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x eta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a))))
+    ((load priv-stor-0 (cat pt-2 (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x eta y (rec x-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (send nb)))
+  (label 23)
+  (parent 21)
+  (unrealized (3 1) (3 3))
+  (fringe)
+  (satisfies-all)
+  (maps
+    ((0)
+      ((na na) (nb nb) (a a) (b b) (l l) (l-peer l-0) (y y)
+        (chi (mul x eta)) (priv-stor priv-stor))))
+  (origs (l-0 (2 1)) (pt-2 (2 1)) (na (3 2)) (l (1 1)) (pt (1 1))
+    (nb (0 3)))
+  (ugens (x-0 (3 2)) (y (0 3)))
+  (comment "satisfies all"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x rndx) (eta expt)
+    (y x-0 l-1 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x eta)))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta (mul l l-0 (rec l-1)))
+    (eta (mul x eta y (rec x-0))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 3) (3 3)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 2) (0 2))
+    ((3 4) (0 4)) ((4 1) (3 0)))
+  (non-orig (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x-0)
+  (absent (y l) (y l-0) (y (mul x eta)) (x-0 (mul l l-0 (rec l-1)))
+    (x-0 l-1))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x eta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a))))
+    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x eta y (rec x-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (send nb))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a l-1)))))
+  (label 24)
+  (parent 21)
+  (unrealized (3 1) (3 3))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (chi expt) (l l-0 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (precedes ((0 3) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 4))
+    ((4 1) (3 0)))
+  (non-orig (privk "sig" a))
+  (uniq-orig nb l l-0)
+  (uniq-gen y)
+  (absent (y chi) (y l) (y l-0))
+  (gen-st (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-init-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a))))
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))))
+  (label 25)
+  (parent 22)
+  (unrealized (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x rndx) (eta expt)
+    (y x-0 l-1 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x eta)))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta (mul l l-0 (rec l-1)))
+    (eta (mul x eta y (rec x-0))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (precedes ((0 3) (3 3)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 2) (0 2))
+    ((3 4) (0 4)) ((4 1) (3 0)) ((4 1) (5 0)) ((5 1) (3 1)))
+  (non-orig (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x-0)
+  (absent (y l) (y l-0) (y (mul x eta)) (x-0 (mul l l-0 (rec l-1)))
+    (x-0 l-1))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l l-0)) l-1))
+    (exp (gen) (mul l l-0 (rec l-1))) (3 1))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x eta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a))))
+    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x eta y (rec x-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (send nb))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1))))
+  (label 26)
+  (parent 24)
+  (unrealized (3 3) (5 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x rndx) (eta expt)
+    (y x-0 l-1 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x eta)))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta (mul l l-0 (rec l-1)))
+    (eta (mul x eta y (rec x-0))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l (rec l-1))) l-0))
+  (precedes ((0 3) (3 3)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
+    ((3 2) (0 2)) ((3 4) (0 4)) ((4 1) (3 0)) ((5 1) (3 1)))
+  (non-orig (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x-0)
+  (absent (y l) (y l-0) (y (mul x eta)) (x-0 (mul l l-0 (rec l-1)))
+    (x-0 l-1))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l (rec l-1))) l-0))
+    (exp (gen) (mul l l-0 (rec l-1))) (3 1))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x eta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a))))
+    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x eta y (rec x-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (send nb))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a l-1))))
+    ((recv (cat (exp (gen) (mul l (rec l-1))) l-0))
+      (send (cat (exp (gen) (mul l (rec l-1))) l-0))))
+  (label 27)
+  (parent 24)
+  (unrealized (3 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x rndx) (eta expt)
+    (y x-0 l-1 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x eta)))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta (mul l l-0 (rec l-1)))
+    (eta (mul x eta y (rec x-0))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (precedes ((0 3) (3 3)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 2) (0 2)) ((3 4) (0 4)) ((4 1) (3 0)) ((5 1) (3 1)))
+  (non-orig (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x-0)
+  (absent (y l) (y l-0) (y (mul x eta)) (x-0 (mul l l-0 (rec l-1)))
+    (x-0 l-1))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+    (exp (gen) (mul l l-0 (rec l-1))) (3 1))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x eta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a))))
+    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x eta y (rec x-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (send nb))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l))))
+  (label 28)
+  (parent 24)
+  (unrealized (3 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (chi expt) (l l-0 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (deflistener (cat (exp (gen) l) l-0))
+  (precedes ((0 3) (4 0)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 4)) ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" a))
+  (uniq-orig nb l l-0)
+  (uniq-gen y)
+  (absent (y chi) (y l) (y l-0))
+  (gen-st (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-init-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) l-0))
+    (exp (gen) (mul l l-0)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a))))
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0))))
+  (label 29)
+  (parent 25)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (chi expt) (l l-0 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (deflistener (cat (exp (gen) l-0) l))
+  (precedes ((0 3) (4 0)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 4)) ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" a))
+  (uniq-orig nb l l-0)
+  (uniq-gen y)
+  (absent (y chi) (y l) (y l-0))
+  (gen-st (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-init-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) l))
+    (exp (gen) (mul l l-0)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a))))
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l))))
+  (label 30)
+  (parent 25)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x rndx) (eta expt)
+    (y x-0 l-1 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x eta)))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta (mul l l-0 (rec l-1)))
+    (eta (mul x eta y (rec x-0))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 3) (3 3)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 2) (0 2))
+    ((3 4) (0 4)) ((4 1) (3 0)) ((4 1) (6 0)) ((5 1) (3 1))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x-0)
+  (absent (y l) (y l-0) (y (mul x eta)) (x-0 (mul l l-0 (rec l-1)))
+    (x-0 l-1))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (5 0)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x eta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a))))
+    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x eta y (rec x-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (send nb))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1)))
+  (label 31)
+  (parent 26)
+  (unrealized (3 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x rndx) (eta expt)
+    (y x-0 l-1 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x eta)))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta (mul l l-0 (rec l-1)))
+    (eta (mul x eta y (rec x-0))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) l-0))
+  (precedes ((0 3) (3 3)) ((1 1) (0 0)) ((2 1) (7 0)) ((2 2) (0 1))
+    ((3 2) (0 2)) ((3 4) (0 4)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x-0)
+  (absent (y l) (y l-0) (y (mul x eta)) (x-0 (mul l l-0 (rec l-1)))
+    (x-0 l-1))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) l-0))
+    (exp (gen) (mul l l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x eta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a))))
+    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x eta y (rec x-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (send nb))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0))))
+  (label 32)
+  (parent 31)
+  (unrealized (3 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x rndx) (eta expt)
+    (y x-0 l-1 rndx))
+  (defstrand resp 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x eta)))
+  (defstrand ltx-gen 2 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand init 5 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta (mul l l-0 (rec l-1)))
+    (eta (mul x eta y (rec x-0))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (precedes ((0 3) (3 3)) ((1 1) (0 0)) ((1 1) (7 0)) ((2 2) (0 1))
+    ((3 2) (0 2)) ((3 4) (0 4)) ((4 1) (3 0)) ((4 1) (6 0))
+    ((5 1) (3 1)) ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x-0)
+  (absent (y l) (y l-0) (y (mul x eta)) (x-0 (mul l l-0 (rec l-1)))
+    (x-0 l-1))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((4 1) (3 0)) ((4 1) (6 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) l))
+    (exp (gen) (mul l l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x eta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (recv nb))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv b l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a))))
+    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x eta y (rec x-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta y))))))
+      (send nb))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l))))
+  (label 33)
+  (parent 31)
+  (unrealized (3 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-um diffie-hellman
+  (defrole init
+    (vars (l x rndx) (beta eta expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a l))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l beta)) (exp (gen) (mul x eta))))))
+      (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x l) (x beta))
+    (facts (neq a b))
+    (gen-st (pv a l)))
+  (defrole resp
+    (vars (l y rndx) (alpha chi expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b l))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l alpha)) (exp (gen) (mul y chi))))))
+      (recv nb) (send "done"))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y l) (y alpha) (y chi))
+    (facts (neq a b))
+    (gen-st (pv b l)))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l)))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z (idx 2))
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defrule ltx-gen-once-inference
+    (forall ((z1 z2 strd) (self name))
+      (implies
+        (and (fact ltx-gen-once self) (p "ltx-gen" z1 (idx 2))
+          (p "ltx-gen" "self" z1 self) (p "ltx-gen" z2 (idx 2))
+          (p "ltx-gen" "self" z2 self))
+        (= z1 z2))))
+  (defrule eq-means-=
+    (forall ((v1 v2 mesg)) (implies (fact eq v1 v2) (= v1 v2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "init" z (idx 2)) (p "init" "a" z a) (p "init" "b" z b))
+        (fact neq a b))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "resp" z (idx 2)) (p "resp" "a" z a) (p "resp" "b" z b))
+        (fact neq a b))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd))
+      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 1)))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd))
+      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 0)))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd))
+      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 1)))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd))
+      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 0)))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (a name) (l rndx))
+      (implies
+        (and (p "init" z (idx 1)) (p "init" "l" z l) (p "init" "a" z a))
+        (gen-st (pv a l)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (b name) (l rndx))
+      (implies
+        (and (p "resp" z (idx 1)) (p "resp" "l" z l) (p "resp" "b" z b))
+        (gen-st (pv b l)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (self name) (l rndx))
+      (implies
+        (and (p "ltx-disclose" z (idx 1)) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-um
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn) (l x rndx)
+    (eta beta expt))
+  (deflistener (hash (exp (gen) (mul l beta)) (exp (gen) (mul x eta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta beta) (eta eta))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x l) (x beta))
+  (facts (neq a b) (undisclosed l) (undisclosed beta))
+  (goals
+    (forall
+      ((z zl strd) (na nb data) (a b name) (priv-stor locn) (l x rndx)
+        (eta beta expt))
+      (implies
+        (and (p "init" z 4) (p "init" "na" z na) (p "init" "nb" z nb)
+          (p "init" "a" z a) (p "init" "b" z b)
+          (p "init" "priv-stor" z priv-stor) (p "init" "l" z l)
+          (p "init" "x" z x) (p "init" "beta" z beta)
+          (p "init" "eta" z eta) (non (privk "sig" b)) (ugen x)
+          (uniq-at na z 2) (fact neq a b) (fact undisclosed l)
+          (fact undisclosed beta) (p "" zl 2)
+          (p "" "x" zl
+            (hash (exp (exp (gen) beta) l) (exp (exp (gen) eta) x))))
+        (false))))
+  (traces
+    ((recv (hash (exp (gen) (mul l beta)) (exp (gen) (mul x eta))))
+      (send (hash (exp (gen) (mul l beta)) (exp (gen) (mul x eta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l beta)) (exp (gen) (mul x eta))))))))
+  (label 34)
+  (unrealized (0 0) (1 1))
+  (preskeleton)
+  (origs (na (1 2)))
+  (ugens (x (1 2)))
+  (comment "Not a skeleton"))
+
+(defskeleton dhcr-um
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn) (l x rndx)
+    (eta beta expt))
+  (deflistener (hash (exp (gen) (mul l beta)) (exp (gen) (mul x eta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta beta) (eta eta))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x l) (x beta))
+  (facts (neq a b) (undisclosed l) (undisclosed beta))
+  (traces
+    ((recv (hash (exp (gen) (mul l beta)) (exp (gen) (mul x eta))))
+      (send (hash (exp (gen) (mul l beta)) (exp (gen) (mul x eta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l beta)) (exp (gen) (mul x eta))))))))
+  (label 35)
+  (parent 34)
+  (unrealized (1 1))
+  (origs (na (1 2)))
+  (ugens (x (1 2)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhcr-um
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn) (l x rndx)
+    (eta beta expt))
+  (deflistener (hash (exp (gen) (mul l beta)) (exp (gen) (mul x eta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta beta) (eta eta))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x l) (x beta))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed beta))
+  (rule fact-resp-neq0 gen-st-ltx-disclose-0)
+  (traces
+    ((recv (hash (exp (gen) (mul l beta)) (exp (gen) (mul x eta))))
+      (send (hash (exp (gen) (mul l beta)) (exp (gen) (mul x eta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l beta)) (exp (gen) (mul x eta))))))))
+  (label 36)
+  (parent 35)
+  (unrealized (1 0) (1 1))
+  (origs (na (1 2)))
+  (ugens (x (1 2)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore mesg) (na nb data) (a b name) (pt pt-0 pval)
+    (priv-stor locn) (x rndx) (eta beta expt) (l rndx))
+  (deflistener (hash (exp (gen) (mul beta l)) (exp (gen) (mul x eta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta beta) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (precedes ((1 2) (0 0)) ((2 1) (1 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l)
+  (uniq-gen x)
+  (absent (x beta) (x l))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed beta))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor (cat pt (pv a l))) (1 0))
+  (strand-map 0 1)
+  (traces
+    ((recv (hash (exp (gen) (mul beta l)) (exp (gen) (mul x eta))))
+      (send (hash (exp (gen) (mul beta l)) (exp (gen) (mul x eta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul beta l)) (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l)))))
+  (label 37)
+  (parent 36)
+  (unrealized (0 0) (1 1) (1 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (0 0)) ((2 1) (1 0)) ((3 2) (1 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand ltx-gen 3)
+    (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)) (1 1))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))))
+  (label 38)
+  (parent 37)
+  (unrealized (0 0) (1 3))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 l-1 x y rndx)
+    (chi expt))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1))) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 2) (1 1)) ((4 3) (0 0))
+    ((4 3) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec l-1))) (y l-1) (y chi))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 gen-st-ltx-disclose-0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand resp 4)
+    (enc na nb a b
+      (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))) (1 3))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))))))
+  (label 39)
+  (parent 38)
+  (unrealized (0 0) (1 3) (4 0) (4 1))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (precedes ((1 2) (0 0)) ((1 2) (4 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+    (enc na nb a b
+      (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))) (1 3))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))))
+  (label 40)
+  (parent 38)
+  (unrealized (0 0) (4 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (chi expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y chi) (y l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 5 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))))))
+  (label 41)
+  (parent 39)
+  (unrealized (0 0) (1 3) (4 1))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y rndx) (chi expt)
+    (l-1 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1))) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 2) (1 1)) ((4 3) (0 0))
+    ((4 3) (1 3)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec l-1))) (y chi) (y l-1))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1)))))
+  (label 42)
+  (parent 39)
+  (unrealized (0 0) (1 3) (4 1))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))))
+  (label 43)
+  (parent 40)
+  (unrealized (0 0) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (chi expt) (l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l)
+    (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi chi))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (1 3)) ((4 1) (1 0)) ((4 2) (3 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y chi) (y l) (y l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 2 5 ltx-gen 3) (exp (gen) l-0) (4 1))
+  (strand-map 0 1 4 2 3)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 44)
+  (parent 41)
+  (unrealized (0 0) (1 3))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (chi expt) (l-0 rndx) (w expt))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi chi))
+  (deflistener (cat (exp (gen) (mul l (rec w))) w))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y chi) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l (rec w))) w)) (exp (gen) l)
+    (4 1))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((recv (cat (exp (gen) (mul l (rec w))) w))
+      (send (cat (exp (gen) (mul l (rec w))) w))))
+  (label 45)
+  (parent 41)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "7 in cohort - 7 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y rndx) (chi expt)
+    (l-1 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1))) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 2) (1 1)) ((4 3) (0 0))
+    ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (6 0)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec l-1))) (y chi) (y l-1))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l l-0)) l-1))
+    (exp (gen) (mul l l-0 (rec l-1))) (4 1))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1))))
+  (label 46)
+  (parent 42)
+  (unrealized (1 3) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y rndx) (chi expt)
+    (l-1 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1))) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l (rec l-1))) l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (6 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec l-1))) (y chi) (y l-1))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l (rec l-1))) l-0))
+    (exp (gen) (mul l l-0 (rec l-1))) (4 1))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l (rec l-1))) l-0))
+      (send (cat (exp (gen) (mul l (rec l-1))) l-0))))
+  (label 47)
+  (parent 42)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y rndx) (chi expt)
+    (l-1 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1))) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec l-1))) (y chi) (y l-1))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l-0 (rec l-1))) l))
+    (exp (gen) (mul l l-0 (rec l-1))) (4 1))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) l))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) l))))
+  (label 48)
+  (parent 42)
+  (unrealized (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (deflistener (cat (exp (gen) l) l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) l-0))
+    (exp (gen) (mul l l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))
+    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0))))
+  (label 49)
+  (parent 43)
+  (unrealized (0 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+  (deflistener (cat (exp (gen) l-0) l))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((2 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) l))
+    (exp (gen) (mul l l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x eta)))))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l))))
+  (label 50)
+  (parent 43)
+  (unrealized (0 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (1 3)) ((4 1) (1 0)) ((4 2) (3 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y x))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 5 3 resp 4) (exp (gen) y-0) (1 3))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 51)
+  (parent 44)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (chi expt) (l l-0 rndx) (w expt))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l)
+    (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi chi))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec x) y chi (rec w))) w))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (5 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y chi) (y l) (y l-0))
+  (precur (5 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul (rec x) y chi (rec w))) w))
+    (exp (gen) (mul (rec x) y chi)) (1 3))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul (rec x) y chi (rec w))) w))
+      (send (cat (exp (gen) (mul (rec x) y chi (rec w))) w))))
+  (label 52)
+  (parent 44)
+  (unrealized (0 0) (5 0))
+  (comment "8 in cohort - 8 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x y rndx) (chi expt)
+    (l l-0 rndx) (beta expt) (l-1 x-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-1) (chi chi))
+  (deflistener (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-1)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-1) (y chi) (y l) (y l-1) (x-0 l-0) (x-0 beta))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv b l) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l-1) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y chi)))))))
+    ((recv (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-1 (rec x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 53)
+  (parent 45)
+  (unrealized (0 0) (1 3) (4 1) (5 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (chi expt) (l l-0 x rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y chi (rec x))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi chi))
+  (deflistener (cat (exp (gen) x) (mul l (rec x))))
+  (precedes ((1 2) (5 0)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y chi) (y l) (y l-0) (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 1 init 3) (exp (gen) x-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y chi (rec x)))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((recv (cat (exp (gen) x) (mul l (rec x))))
+      (send (cat (exp (gen) x) (mul l (rec x))))))
+  (label 54)
+  (parent 45)
+  (unrealized (0 0) (1 3) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (chi expt) (l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi chi))
+  (deflistener (cat (gen) l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (5 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y chi) (y l) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (contracted (l-1 l-0) (w l-0)) (gen) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0))))
+  (label 55)
+  (parent 45)
+  (unrealized (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (chi expt) (l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l)
+    (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi chi))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (1 3)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y chi) (y l) (y l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 2 6 ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 5 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 56)
+  (parent 45)
+  (unrealized (0 0) (1 3))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x y rndx) (chi expt)
+    (l l-0 rndx) (alpha chi-0 expt) (l-1 y-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-1) (chi chi))
+  (deflistener (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y-0) (alpha alpha) (chi chi-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)) ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-1)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-1) (y chi) (y l) (y l-1) (y-0 l-0) (y-0 alpha)
+    (y-0 chi-0))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv b l) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l-1) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-1)) (exp (gen) (mul y chi)))))))
+    ((recv (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-1 (rec y-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na-0 a-0 b-0 (exp (gen) chi-0)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul l-0 alpha))
+              (exp (gen) (mul chi-0 y-0))))))))
+  (label 57)
+  (parent 45)
+  (unrealized (0 0) (1 3) (4 1) (5 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (chi expt) (l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi chi))
+  (deflistener (cat (exp (gen) l-0) (mul l (rec l-0))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((3 2) (5 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y chi) (y l) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 3 ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((recv (cat (exp (gen) l-0) (mul l (rec l-0))))
+      (send (cat (exp (gen) l-0) (mul l (rec l-0))))))
+  (label 58)
+  (parent 45)
+  (unrealized (0 0) (1 3) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x y rndx) (chi expt)
+    (l l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi chi))
+  (deflistener (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y chi) (y l) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((recv (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul l-0 (rec l-1)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 59)
+  (parent 45)
+  (unrealized (0 0) (1 3) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y rndx) (chi expt)
+    (l-1 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1))) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 2) (1 1)) ((4 3) (0 0))
+    ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0)) ((6 1) (4 1))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec l-1))) (y chi) (y l-1))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (6 0)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1)))
+  (label 60)
+  (parent 46)
+  (unrealized (1 3) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (5 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y x))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))) (0 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))))
+  (label 61)
+  (parent 51)
+  (unrealized (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l l-0 x rndx)
+    (w expt) (y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (mul w y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) y) w))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (5 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y (mul x w)))
+  (precur (5 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 3 resp 4) (exp (gen) y-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
+  (label 62)
+  (parent 52)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self a b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 l-1 rndx)
+    (beta expt) (x rndx) (w expt) (x-0 x-1 y x-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x-1) (beta l)
+    (eta (mul x w x-0 (rec x-1) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w x-0)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-2) (beta beta))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (5 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (1 3))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x-1 y x-2)
+  (absent (x-1 l) (x-1 l-0) (y l) (y l-0) (y (mul x w x-0)) (x-2 l-1)
+    (x-2 beta))
+  (precur (5 0))
+  (gen-st (pv b l) (pv self l-0) (pv a l-1))
+  (facts (neq a b-0) (neq b-0 a) (neq b self) (neq self b)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-2) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-1)))
+      (recv
+        (cat (exp (gen) (mul x w x-0 (rec x-1) y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w x-0 y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w x-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w x-0 y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2))))
+      (send (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2)))))
+    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-2)))))
+  (label 63)
+  (parent 52)
+  (unrealized (0 0) (1 3) (5 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l l-0 x rndx)
+    (w expt) (x-0 y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x-0) (beta l)
+    (eta (mul x w (rec x-0) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (gen) (mul x w (rec x-0) y)))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (5 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x-0 y)
+  (absent (x-0 l) (x-0 l-0) (y l) (y l-0) (y (mul x w)))
+  (precur (5 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (x-1 x-0) (y-0 y) (chi (mul x w))
+      (w-0 (mul x w (rec x-0) y)) (x x-0) (y-1 y)
+      (w (mul x w (rec x-0) y))) (gen) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x w (rec x-0) y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (gen) (mul x w (rec x-0) y)))
+      (send (cat (gen) (mul x w (rec x-0) y)))))
+  (label 64)
+  (parent 52)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (w expt)
+    (l l-0 x y x-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul w x x y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x-0) (beta l-0)
+    (eta (mul w x x y (rec x-0))))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l) (chi (mul w x x)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) x-0) (mul w x x y (rec x-0) (rec x-0))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (5 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x-0)
+  (absent (y (mul w x x)) (y l) (y l-0) (x-0 l) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv b l-0) (pv self l))
+  (facts (neq b self) (neq self b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 1 init 3) (exp (gen) x-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul w x x y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul w x x y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul w x x y (rec x-0)))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul w x x y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul w x x))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul w x x y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x-0) (mul w x x y (rec x-0) (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul w x x y (rec x-0) (rec x-0))))))
+  (label 65)
+  (parent 52)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x rndx)
+    (w expt) (l-0 x-0 y l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w l-0 y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x-0) (beta l-1)
+    (eta (mul x w l-0 (rec x-0) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha l) (chi (mul x w l-0)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (cat (exp (gen) l-1) (mul x w l-0 (rec x-0) y (rec l-1))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (5 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-1)
+  (uniq-gen x-0 y)
+  (absent (x-0 l) (x-0 l-1) (y l) (y (mul x w l-0)) (y l-1))
+  (precur (5 0))
+  (gen-st (pv b l-1) (pv self l))
+  (facts (neq b self) (neq self b) (undisclosed l) (undisclosed l-1))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 2 ltx-gen 3) (exp (gen) l-2) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w l-0 y))))
+      (send (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w l-0 y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x w l-0 (rec x-0) y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-1))
+              (exp (gen) (mul x w l-0 y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-1)))
+      (recv
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w l-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-1))
+              (exp (gen) (mul x w l-0 y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l-1) (mul x w l-0 (rec x-0) y (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul x w l-0 (rec x-0) y (rec l-1))))))
+  (label 66)
+  (parent 52)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data)
+    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 l-1 rndx)
+    (alpha chi expt) (x rndx) (w expt) (y x-0 y-0 y-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x-0) (beta l)
+    (eta (mul x w y (rec x-0) y-0)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y-0) (alpha l-0) (chi (mul x w y)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (5 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (1 3))
+    ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x-0 y-0 y-1)
+  (absent (x-0 l) (x-0 l-0) (y-0 l) (y-0 l-0) (y-0 (mul x w y))
+    (y-1 l-1) (y-1 alpha) (y-1 chi))
+  (precur (5 0))
+  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
+  (facts (neq b-0 a) (neq a b-0) (neq b self) (neq self b)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x w y (rec x-0) y-0))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w y y-0)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w y))))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w y y-0)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na-0 a b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l-1 alpha))
+              (exp (gen) (mul chi y-1))))))))
+  (label 67)
+  (parent 52)
+  (unrealized (0 0) (1 3) (5 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x rndx)
+    (w expt) (l-0 x-0 y l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w l-0 y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-1) (x x-0) (beta l)
+    (eta (mul x w l-0 (rec x-0) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-1) (chi (mul x w l-0)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-1))
+  (deflistener
+    (cat (exp (gen) l-1) (mul x w l-0 (rec x-0) y (rec l-1))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (5 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-1)
+  (uniq-gen x-0 y)
+  (absent (x-0 l) (x-0 l-1) (y l) (y (mul x w l-0)) (y l-1))
+  (precur (5 0))
+  (gen-st (pv b l) (pv self l-1))
+  (facts (neq b self) (neq self b) (undisclosed l-1) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 4 ltx-gen 3) (exp (gen) l-2) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w l-0 y))))
+      (send (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w l-0 y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x w l-0 (rec x-0) y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-1))
+              (exp (gen) (mul x w l-0 y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w l-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-1))
+              (exp (gen) (mul x w l-0 y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l-1) (mul x w l-0 (rec x-0) y (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul x w l-0 (rec x-0) y (rec l-1))))))
+  (label 68)
+  (parent 52)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
+    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x rndx) (w expt)
+    (l-1 x-0 y l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w l-1 y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x-0) (beta l)
+    (eta (mul x w l-1 (rec x-0) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w l-1)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) l-2) (mul x w l-1 (rec x-0) y (rec l-2))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
+    (priv-stor priv-stor-1) (l l-2))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (5 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (1 3))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-2)
+  (uniq-gen x-0 y)
+  (absent (x-0 l) (x-0 l-0) (y l) (y l-0) (y (mul x w l-1)))
+  (precur (5 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-2) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w l-1 y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w l-1 y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x w l-1 (rec x-0) y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w l-1 y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w l-1 y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l-2) (mul x w l-1 (rec x-0) y (rec l-2))))
+      (send (cat (exp (gen) l-2) (mul x w l-1 (rec x-0) y (rec l-2)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self-0 l-2)))
+      (send
+        (sig (body self-0 (exp (gen) l-2) (pubk "sig" self-0))
+          (privk "sig" self-0)))))
+  (label 69)
+  (parent 52)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (chi expt) (l rndx) (beta expt) (x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi chi))
+  (deflistener (cat (exp (gen) x-0) (mul (rec x-0) l-0)))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y chi) (y l) (y l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l-0)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((recv (cat (exp (gen) x-0) (mul (rec x-0) l-0)))
+      (send (cat (exp (gen) x-0) (mul (rec x-0) l-0))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 70)
+  (parent 53)
+  (unrealized (0 0) (1 3) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (chi beta expt) (l x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi chi))
+  (deflistener (cat (exp (gen) x-0) (mul l (rec x-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y chi) (y l) (y l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l)
+    (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((recv (cat (exp (gen) x-0) (mul l (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l (rec x-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 71)
+  (parent 53)
+  (unrealized (0 0) (1 3) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x y rndx) (chi expt)
+    (l rndx) (beta expt) (l-0 x-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi chi))
+  (deflistener (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)) ((6 2) (5 0))
+    ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y chi) (y l) (y l-0) (x-0 beta) (x-0 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((recv (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-0 (rec x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
+  (label 72)
+  (parent 53)
+  (unrealized (0 0) (1 3) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (1 3)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y x))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 3 resp 4) (exp (gen) y-0) (1 3))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 73)
+  (parent 56)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (chi expt) (l l-0 rndx) (w expt))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l)
+    (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi chi))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul (rec x) y chi (rec w))) w))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y chi) (y l) (y l-0))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul (rec x) y chi (rec w))) w))
+    (exp (gen) (mul (rec x) y chi)) (1 3))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul (rec x) y chi (rec w))) w))
+      (send (cat (exp (gen) (mul (rec x) y chi (rec w))) w))))
+  (label 74)
+  (parent 56)
+  (unrealized (0 0) (6 0))
+  (comment "8 in cohort - 8 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (chi expt) (l rndx) (alpha chi-0 expt) (y-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi chi))
+  (deflistener (cat (exp (gen) y-0) (mul (rec y-0) l-0)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y-0) (alpha alpha) (chi chi-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1))
+    ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y chi) (y l) (y l-0) (y-0 alpha) (y-0 chi-0)
+    (y-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l-0)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((recv (cat (exp (gen) y-0) (mul (rec y-0) l-0)))
+      (send (cat (exp (gen) y-0) (mul (rec y-0) l-0))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi-0)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha l-0))
+              (exp (gen) (mul chi-0 y-0))))))))
+  (label 75)
+  (parent 57)
+  (unrealized (0 0) (1 3) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (chi alpha chi-0 expt) (l y-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi chi))
+  (deflistener (cat (exp (gen) y-0) (mul l (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y-0) (alpha alpha) (chi chi-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1))
+    ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y chi) (y l) (y l-0) (y-0 alpha) (y-0 chi-0)
+    (y-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l)
+    (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((recv (cat (exp (gen) y-0) (mul l (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l (rec y-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi-0)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha l-0))
+              (exp (gen) (mul chi-0 y-0))))))))
+  (label 76)
+  (parent 57)
+  (unrealized (0 0) (1 3) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x y rndx) (chi expt)
+    (l rndx) (alpha chi-0 expt) (l-0 y-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi chi))
+  (deflistener (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y-0) (alpha alpha) (chi chi-0))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)) ((6 3) (5 0))
+    ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y chi) (y l) (y l-0) (y-0 alpha) (y-0 chi-0)
+    (y-0 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((recv (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-0 (rec y-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na-0 a-0 b-0 (exp (gen) chi-0)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha l-1))
+              (exp (gen) (mul chi-0 y-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 77)
+  (parent 57)
+  (unrealized (0 0) (1 3) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y rndx) (chi expt)
+    (l-1 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1))) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (8 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec l-1))) (y chi) (y l-1))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) l-0))
+    (exp (gen) (mul l l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0))))
+  (label 78)
+  (parent 60)
+  (unrealized (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x y rndx) (chi expt)
+    (l-1 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec x) y chi)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0 (rec l-1))) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) l))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (mul l l-0 (rec l-1))) (y chi) (y l-1))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) l))
+    (exp (gen) (mul l l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec x) y chi))
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0 (rec l-1))) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y chi)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l l-0)) l-1))
+      (send (cat (exp (gen) (mul l l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l))))
+  (label 79)
+  (parent 60)
+  (unrealized (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+  (deflistener (cat (exp (gen) l) l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (5 0)) ((4 1) (1 0)) ((4 1) (6 0)) ((4 2) (3 1))
+    ((5 1) (0 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y x))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) l-0))
+    (exp (gen) (mul l l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))
+    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0))))
+  (label 80)
+  (parent 61)
+  (unrealized (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+  (deflistener (cat (exp (gen) l-0) l))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 1) (6 0)) ((2 2) (1 1))
+    ((3 3) (1 3)) ((3 3) (5 0)) ((4 1) (1 0)) ((4 2) (3 1))
+    ((5 1) (0 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y x))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) l))
+    (exp (gen) (mul l l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l))))
+  (label 81)
+  (parent 61)
+  (unrealized (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l l-0 x rndx)
+    (w expt) (y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (mul w y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (5 0))
+    ((3 3) (6 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (1 3))
+    ((6 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y (mul x w)))
+  (precur (5 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))) (0 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))))
+  (label 82)
+  (parent 62)
+  (unrealized (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l rndx)
+    (beta expt) (x rndx) (w expt) (x-0 x-1 y x-2 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x-1) (beta l-0)
+    (eta (mul x w x-0 (rec x-1) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l) (chi (mul x w x-0)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-2) (beta beta))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 1) (6 0)) ((2 2) (1 1))
+    ((3 3) (0 0)) ((3 3) (5 0)) ((4 1) (1 0)) ((4 2) (3 1))
+    ((5 1) (1 3)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x-1 y x-2)
+  (absent (x-1 l) (x-1 l-0) (y l) (y (mul x w x-0)) (y l-0) (x-2 beta)
+    (x-2 l-0))
+  (precur (5 0))
+  (gen-st (pv b l-0) (pv self l))
+  (facts (neq b b-0) (neq b-0 b) (neq b self) (neq self b)
+    (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (3 0)) ((2 1) (6 0)) ((4 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-1)))
+      (recv
+        (cat (exp (gen) (mul x w x-0 (rec x-1) y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w x-0 y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w x-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w x-0 y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2))))
+      (send (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2)))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-2)))))
+  (label 83)
+  (parent 63)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l rndx)
+    (beta expt) (x rndx) (w expt) (x-0 x-1 y x-2 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x-1) (beta l)
+    (eta (mul x w x-0 (rec x-1) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w x-0)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2))))
+  (defstrand init 3 (na na-0) (a self) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-2) (beta beta))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (5 0)) ((4 1) (1 0)) ((4 1) (6 0)) ((4 2) (3 1))
+    ((5 1) (1 3)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x-1 y x-2)
+  (absent (x-1 l) (x-1 l-0) (y l) (y (mul x w x-0)) (y l-0) (x-2 beta)
+    (x-2 l-0))
+  (precur (5 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq self b-0) (neq b-0 self) (neq b self) (neq self b)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)) ((4 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 4 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-1)))
+      (recv
+        (cat (exp (gen) (mul x w x-0 (rec x-1) y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w x-0 y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w x-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w x-0 y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2))))
+      (send (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 self b-0 (exp (gen) x-2)))))
+  (label 84)
+  (parent 63)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 rndx) (beta expt)
+    (x rndx) (w expt) (x-0 x-1 y x-2 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x-1) (beta l)
+    (eta (mul x w x-0 (rec x-1) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w x-0)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-2) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (5 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (1 3))
+    ((6 2) (5 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen x-1 y x-2)
+  (absent (x-1 l) (x-1 l-0) (y l) (y l-0) (y (mul x w x-0)) (x-2 beta)
+    (x-2 l-1))
+  (precur (5 0))
+  (gen-st (pv b l) (pv self l-0) (pv a l-1))
+  (facts (neq a b-0) (neq b-0 a) (neq b self) (neq self b)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-1)))
+      (recv
+        (cat (exp (gen) (mul x w x-0 (rec x-1) y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w x-0 y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w x-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w x-0 y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2))))
+      (send (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2)))))
+    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-2))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a l-1)))))
+  (label 85)
+  (parent 63)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l rndx)
+    (alpha chi expt) (x rndx) (w expt) (y x-0 y-0 y-1 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x-0) (beta l-0)
+    (eta (mul x w y (rec x-0) y-0)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-0) (y y-0) (alpha l) (chi (mul x w y)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b)
+    (priv-stor priv-stor) (l l-0) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 1) (6 0)) ((2 2) (1 1))
+    ((3 3) (0 0)) ((3 3) (5 0)) ((4 1) (1 0)) ((4 2) (3 1))
+    ((5 1) (1 3)) ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x-0 y-0 y-1)
+  (absent (x-0 l) (x-0 l-0) (y-0 l) (y-0 (mul x w y)) (y-0 l-0)
+    (y-1 alpha) (y-1 chi) (y-1 l-0))
+  (precur (5 0))
+  (gen-st (pv b l-0) (pv self l))
+  (facts (neq b a) (neq a b) (neq b self) (neq self b) (undisclosed l)
+    (undisclosed l-0))
+  (leads-to ((2 1) (3 0)) ((2 1) (6 0)) ((4 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x w y (rec x-0) y-0))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w y y-0)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w y))))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w y y-0)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1)))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na-0 a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a b
+            (hash (exp (gen) (mul alpha l-0))
+              (exp (gen) (mul chi y-1))))))))
+  (label 86)
+  (parent 67)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l rndx)
+    (alpha chi expt) (x rndx) (w expt) (y x-0 y-0 y-1 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x-0) (beta l)
+    (eta (mul x w y (rec x-0) y-0)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y-0) (alpha l-0) (chi (mul x w y)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self)
+    (priv-stor priv-stor-0) (l l-0) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (5 0)) ((4 1) (1 0)) ((4 1) (6 0)) ((4 2) (3 1))
+    ((5 1) (1 3)) ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x-0 y-0 y-1)
+  (absent (x-0 l) (x-0 l-0) (y-0 l) (y-0 (mul x w y)) (y-0 l-0)
+    (y-1 alpha) (y-1 chi) (y-1 l-0))
+  (precur (5 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq self a) (neq a self) (neq b self) (neq self b)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)) ((4 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 4 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x w y (rec x-0) y-0))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w y y-0)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w y))))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w y y-0)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na-0 a self (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a self
+            (hash (exp (gen) (mul alpha l-0))
+              (exp (gen) (mul chi y-1))))))))
+  (label 87)
+  (parent 67)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 rndx)
+    (alpha chi expt) (x rndx) (w expt) (y x-0 y-0 y-1 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x-0) (beta l)
+    (eta (mul x w y (rec x-0) y-0)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y-0) (alpha l-0) (chi (mul x w y)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y-1) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (5 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (1 3))
+    ((6 3) (5 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen x-0 y-0 y-1)
+  (absent (x-0 l) (x-0 l-0) (y-0 l) (y-0 l-0) (y-0 (mul x w y))
+    (y-1 alpha) (y-1 chi) (y-1 l-1))
+  (precur (5 0))
+  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
+  (facts (neq b-0 a) (neq a b-0) (neq b self) (neq self b)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x w y (rec x-0) y-0))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w y y-0)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w y))))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w y y-0)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na-0 a b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul alpha l-1))
+              (exp (gen) (mul chi y-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 88)
+  (parent 67)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y x))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))) (0 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))))
+  (label 89)
+  (parent 73)
+  (unrealized (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l l-0 x rndx)
+    (w expt) (y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (mul w y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w)))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) y) w))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y (mul x w)))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 3 resp 4) (exp (gen) y-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
+  (label 90)
+  (parent 74)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self a b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 l-1 rndx)
+    (beta expt) (x rndx) (w expt) (x-0 x-1 y x-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x-1) (beta l)
+    (eta (mul x w x-0 (rec x-1) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w x-0)))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-2) (beta beta))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (1 3)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x-1 y x-2)
+  (absent (x-1 l) (x-1 l-0) (y l) (y l-0) (y (mul x w x-0)) (x-2 l-1)
+    (x-2 beta))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l) (pv self l-0) (pv a l-1))
+  (facts (neq a b-0) (neq b-0 a) (neq b self) (neq self b)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-2) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-1)))
+      (recv
+        (cat (exp (gen) (mul x w x-0 (rec x-1) y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w x-0 y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w x-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w x-0 y)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2))))
+      (send (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2)))))
+    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-2)))))
+  (label 91)
+  (parent 74)
+  (unrealized (0 0) (1 3) (6 0) (7 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l l-0 x rndx)
+    (w expt) (x-0 y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x-0) (beta l)
+    (eta (mul x w (rec x-0) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w)))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (gen) (mul x w (rec x-0) y)))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x-0 y)
+  (absent (x-0 l) (x-0 l-0) (y l) (y l-0) (y (mul x w)))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (x-1 x-0) (y-0 y) (chi (mul x w))
+      (w-0 (mul x w (rec x-0) y)) (x x-0) (y-1 y)
+      (w (mul x w (rec x-0) y))) (gen) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x w (rec x-0) y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (gen) (mul x w (rec x-0) y)))
+      (send (cat (gen) (mul x w (rec x-0) y)))))
+  (label 92)
+  (parent 74)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (w expt)
+    (l l-0 x y x-0 rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul w x x y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x-0) (beta l-0)
+    (eta (mul w x x y (rec x-0))))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l) (chi (mul w x x)))
+  (deflistener (cat (exp (gen) l) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) x-0) (mul w x x y (rec x-0) (rec x-0))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x-0)
+  (absent (y (mul w x x)) (y l) (y l-0) (x-0 l) (x-0 l-0))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l-0) (pv self l))
+  (facts (neq b self) (neq self b) (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 1 init 3) (exp (gen) x-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul w x x y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul w x x y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul w x x y (rec x-0)))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul w x x y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul w x x))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul w x x y)))))))
+    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x-0) (mul w x x y (rec x-0) (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul w x x y (rec x-0) (rec x-0))))))
+  (label 93)
+  (parent 74)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x rndx)
+    (w expt) (l-0 x-0 y l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w l-0 y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x-0) (beta l-1)
+    (eta (mul x w l-0 (rec x-0) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha l) (chi (mul x w l-0)))
+  (deflistener (cat (exp (gen) l) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (cat (exp (gen) l-1) (mul x w l-0 (rec x-0) y (rec l-1))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-1)
+  (uniq-gen x-0 y)
+  (absent (x-0 l) (x-0 l-1) (y l) (y (mul x w l-0)) (y l-1))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l-1) (pv self l))
+  (facts (neq b self) (neq self b) (undisclosed l) (undisclosed l-1))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 2 ltx-gen 3) (exp (gen) l-2) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w l-0 y))))
+      (send (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w l-0 y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x w l-0 (rec x-0) y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-1))
+              (exp (gen) (mul x w l-0 y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-1)))
+      (recv
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w l-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-1))
+              (exp (gen) (mul x w l-0 y)))))))
+    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l-1) (mul x w l-0 (rec x-0) y (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul x w l-0 (rec x-0) y (rec l-1))))))
+  (label 94)
+  (parent 74)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data)
+    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 l-1 rndx)
+    (alpha chi expt) (x rndx) (w expt) (y x-0 y-0 y-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x-0) (beta l)
+    (eta (mul x w y (rec x-0) y-0)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y-0) (alpha l-0) (chi (mul x w y)))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (1 3)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x-0 y-0 y-1)
+  (absent (x-0 l) (x-0 l-0) (y-0 l) (y-0 l-0) (y-0 (mul x w y))
+    (y-1 l-1) (y-1 alpha) (y-1 chi))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
+  (facts (neq b-0 a) (neq a b-0) (neq b self) (neq self b)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x w y (rec x-0) y-0))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w y y-0)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w y))))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w y y-0)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na-0 a b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l-1 alpha))
+              (exp (gen) (mul chi y-1))))))))
+  (label 95)
+  (parent 74)
+  (unrealized (0 0) (1 3) (6 0) (7 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x rndx)
+    (w expt) (l-0 x-0 y l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w l-0 y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-1) (x x-0) (beta l)
+    (eta (mul x w l-0 (rec x-0) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-1) (chi (mul x w l-0)))
+  (deflistener (cat (exp (gen) l-1) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-1))
+  (deflistener
+    (cat (exp (gen) l-1) (mul x w l-0 (rec x-0) y (rec l-1))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-1)
+  (uniq-gen x-0 y)
+  (absent (x-0 l) (x-0 l-1) (y l) (y (mul x w l-0)) (y l-1))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l) (pv self l-1))
+  (facts (neq b self) (neq self b) (undisclosed l-1) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 5 ltx-gen 3) (exp (gen) l-2) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w l-0 y))))
+      (send (hash (exp (gen) (mul l l-1)) (exp (gen) (mul x w l-0 y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x w l-0 (rec x-0) y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-1))
+              (exp (gen) (mul x w l-0 y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w l-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-1))
+              (exp (gen) (mul x w l-0 y)))))))
+    ((recv (cat (exp (gen) l-1) (one)))
+      (send (cat (exp (gen) l-1) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l-1) (mul x w l-0 (rec x-0) y (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul x w l-0 (rec x-0) y (rec l-1))))))
+  (label 96)
+  (parent 74)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
+    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 x rndx) (w expt)
+    (l-1 x-0 y l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w l-1 y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x-0) (beta l)
+    (eta (mul x w l-1 (rec x-0) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w l-1)))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) l-2) (mul x w l-1 (rec x-0) y (rec l-2))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
+    (priv-stor priv-stor-1) (l l-2))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (1 3)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-2)
+  (uniq-gen x-0 y)
+  (absent (x-0 l) (x-0 l-0) (y l) (y l-0) (y (mul x w l-1)))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-2) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w l-1 y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w l-1 y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x w l-1 (rec x-0) y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w l-1 y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w l-1 y)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l-2) (mul x w l-1 (rec x-0) y (rec l-2))))
+      (send (cat (exp (gen) l-2) (mul x w l-1 (rec x-0) y (rec l-2)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self-0 l-2)))
+      (send
+        (sig (body self-0 (exp (gen) l-2) (pubk "sig" self-0))
+          (privk "sig" self-0)))))
+  (label 97)
+  (parent 74)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l l-0 x rndx)
+    (w expt) (y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (mul w y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+  (deflistener (cat (exp (gen) l) l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (5 0))
+    ((3 3) (6 0)) ((4 1) (1 0)) ((4 1) (7 0)) ((4 2) (3 1))
+    ((5 1) (1 3)) ((6 1) (0 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y (mul x w)))
+  (precur (5 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) l-0))
+    (exp (gen) (mul l l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))
+    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0))))
+  (label 98)
+  (parent 82)
+  (unrealized (6 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l l-0 x rndx)
+    (w expt) (y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (mul w y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+  (deflistener (cat (exp (gen) l-0) l))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 1) (7 0)) ((2 2) (1 1))
+    ((3 3) (5 0)) ((3 3) (6 0)) ((4 1) (1 0)) ((4 2) (3 1))
+    ((5 1) (1 3)) ((6 1) (0 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y (mul x w)))
+  (precur (5 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) l))
+    (exp (gen) (mul l l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l))))
+  (label 99)
+  (parent 82)
+  (unrealized (6 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+  (deflistener (cat (exp (gen) l) l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 1) (7 0))
+    ((5 2) (4 0)) ((6 1) (0 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y x))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) l-0))
+    (exp (gen) (mul l l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))
+    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0))))
+  (label 100)
+  (parent 89)
+  (unrealized (6 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+  (deflistener (cat (exp (gen) l-0) l))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 1) (7 0)) ((2 2) (1 1))
+    ((3 3) (1 3)) ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0))
+    ((5 2) (4 0)) ((6 1) (0 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y x))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) l))
+    (exp (gen) (mul l l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x y)))))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l))))
+  (label 101)
+  (parent 89)
+  (unrealized (6 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l l-0 x rndx)
+    (w expt) (y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (mul w y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w)))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (6 0))
+    ((3 3) (7 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (1 3)) ((7 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y (mul x w)))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))) (0 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))))
+  (label 102)
+  (parent 90)
+  (unrealized (7 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l rndx)
+    (beta expt) (x rndx) (w expt) (x-0 x-1 y x-2 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x-1) (beta l-0)
+    (eta (mul x w x-0 (rec x-1) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l) (chi (mul x w x-0)))
+  (deflistener (cat (exp (gen) l) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-2) (beta beta))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 1) (7 0)) ((2 2) (1 1))
+    ((3 3) (0 0)) ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0))
+    ((5 2) (4 0)) ((6 1) (1 3)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x-1 y x-2)
+  (absent (x-1 l) (x-1 l-0) (y l) (y (mul x w x-0)) (y l-0) (x-2 beta)
+    (x-2 l-0))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l-0) (pv self l))
+  (facts (neq b b-0) (neq b-0 b) (neq b self) (neq self b)
+    (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (3 0)) ((2 1) (7 0)) ((5 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-1)))
+      (recv
+        (cat (exp (gen) (mul x w x-0 (rec x-1) y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w x-0 y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w x-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w x-0 y)))))))
+    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2))))
+      (send (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2)))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-2)))))
+  (label 103)
+  (parent 91)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l rndx)
+    (beta expt) (x rndx) (w expt) (x-0 x-1 y x-2 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x-1) (beta l)
+    (eta (mul x w x-0 (rec x-1) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w x-0)))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2))))
+  (defstrand init 3 (na na-0) (a self) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-2) (beta beta))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 1) (7 0))
+    ((5 2) (4 0)) ((6 1) (1 3)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x-1 y x-2)
+  (absent (x-1 l) (x-1 l-0) (y l) (y (mul x w x-0)) (y l-0) (x-2 beta)
+    (x-2 l-0))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq self b-0) (neq b-0 self) (neq b self) (neq self b)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)) ((5 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 5 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-1)))
+      (recv
+        (cat (exp (gen) (mul x w x-0 (rec x-1) y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w x-0 y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w x-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w x-0 y)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2))))
+      (send (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 self b-0 (exp (gen) x-2)))))
+  (label 104)
+  (parent 91)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 rndx) (beta expt)
+    (x rndx) (w expt) (x-0 x-1 y x-2 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x-1) (beta l)
+    (eta (mul x w x-0 (rec x-1) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w x-0)))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-2) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (1 3)) ((7 2) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen x-1 y x-2)
+  (absent (x-1 l) (x-1 l-0) (y l) (y l-0) (y (mul x w x-0)) (x-2 beta)
+    (x-2 l-1))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l) (pv self l-0) (pv a l-1))
+  (facts (neq a b-0) (neq b-0 a) (neq b self) (neq self b)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w x-0 y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-1)))
+      (recv
+        (cat (exp (gen) (mul x w x-0 (rec x-1) y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w x-0 y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w x-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w x-0 y)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2))))
+      (send (cat (exp (gen) x-2) (mul x w x-0 (rec x-1) y (rec x-2)))))
+    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-2))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a l-1)))))
+  (label 105)
+  (parent 91)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l rndx)
+    (alpha chi expt) (x rndx) (w expt) (y x-0 y-0 y-1 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x-0) (beta l-0)
+    (eta (mul x w y (rec x-0) y-0)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-0) (y y-0) (alpha l) (chi (mul x w y)))
+  (deflistener (cat (exp (gen) l) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener
+    (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b)
+    (priv-stor priv-stor) (l l-0) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 1) (7 0)) ((2 2) (1 1))
+    ((3 3) (0 0)) ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0))
+    ((5 2) (4 0)) ((6 1) (1 3)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x-0 y-0 y-1)
+  (absent (x-0 l) (x-0 l-0) (y-0 l) (y-0 (mul x w y)) (y-0 l-0)
+    (y-1 alpha) (y-1 chi) (y-1 l-0))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l-0) (pv self l))
+  (facts (neq b a) (neq a b) (neq b self) (neq self b) (undisclosed l)
+    (undisclosed l-0))
+  (leads-to ((2 1) (3 0)) ((2 1) (7 0)) ((5 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x w y (rec x-0) y-0))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w y y-0)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w y))))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w y y-0)))))))
+    ((recv (cat (exp (gen) l) (one))) (send (cat (exp (gen) l) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1)))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na-0 a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a b
+            (hash (exp (gen) (mul alpha l-0))
+              (exp (gen) (mul chi y-1))))))))
+  (label 106)
+  (parent 95)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l rndx)
+    (alpha chi expt) (x rndx) (w expt) (y x-0 y-0 y-1 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x-0) (beta l)
+    (eta (mul x w y (rec x-0) y-0)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y-0) (alpha l-0) (chi (mul x w y)))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self)
+    (priv-stor priv-stor-0) (l l-0) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 1) (7 0))
+    ((5 2) (4 0)) ((6 1) (1 3)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x-0 y-0 y-1)
+  (absent (x-0 l) (x-0 l-0) (y-0 l) (y-0 (mul x w y)) (y-0 l-0)
+    (y-1 alpha) (y-1 chi) (y-1 l-0))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq self a) (neq a self) (neq b self) (neq self b)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)) ((5 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 5 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x w y (rec x-0) y-0))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w y y-0)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w y))))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w y y-0)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na-0 a self (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a self
+            (hash (exp (gen) (mul alpha l-0))
+              (exp (gen) (mul chi y-1))))))))
+  (label 107)
+  (parent 95)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l l-0 rndx)
+    (alpha chi expt) (x rndx) (w expt) (y x-0 y-0 y-1 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x-0) (beta l)
+    (eta (mul x w y (rec x-0) y-0)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y-0) (alpha l-0) (chi (mul x w y)))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener
+    (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y-1) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (1 3)) ((7 3) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen x-0 y-0 y-1)
+  (absent (x-0 l) (x-0 l-0) (y-0 l) (y-0 l-0) (y-0 (mul x w y))
+    (y-1 alpha) (y-1 chi) (y-1 l-1))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
+  (facts (neq b-0 a) (neq a b-0) (neq b self) (neq self b)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y y-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul x w y (rec x-0) y-0))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w y y-0)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w y))))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0))
+              (exp (gen) (mul x w y y-0)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul x w y (rec x-0) y-0 (rec y-1)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na-0 a b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul alpha l-1))
+              (exp (gen) (mul chi y-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 108)
+  (parent 95)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l l-0 x rndx)
+    (w expt) (y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (mul w y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w)))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+  (deflistener (cat (exp (gen) l) l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (6 0))
+    ((3 3) (7 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 1) (8 0))
+    ((5 2) (4 0)) ((6 1) (1 3)) ((7 1) (0 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y (mul x w)))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) l-0))
+    (exp (gen) (mul l l-0)) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))
+    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0))))
+  (label 109)
+  (parent 102)
+  (unrealized (7 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l l-0 x rndx)
+    (w expt) (y rndx))
+  (deflistener (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (mul w y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x w)))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+  (deflistener (cat (exp (gen) l-0) l))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 1) (8 0)) ((2 2) (1 1))
+    ((3 3) (6 0)) ((3 3) (7 0)) ((4 1) (3 1)) ((5 1) (1 0))
+    ((5 2) (4 0)) ((6 1) (1 3)) ((7 1) (0 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y (mul x w)))
+  (precur (4 0) (6 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) l))
+    (exp (gen) (mul l l-0)) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+      (send (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul x w))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y))))
+      (send (cat (exp (gen) (mul l l-0)) (exp (gen) (mul x w y)))))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l))))
+  (label 110)
+  (parent 102)
+  (unrealized (7 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
diff --git a/tst/dhcr_um_implicit_auth.scm b/tst/dhcr_um_implicit_auth.scm
new file mode 100644
--- /dev/null
+++ b/tst/dhcr_um_implicit_auth.scm
@@ -0,0 +1,162 @@
+;;; Unified Model  This version used in the paper, tooldev/dh/conf_dh/dh_ebn.tex
+
+;;; This file models the "Unified Model" method of determining a fresh
+;;; key from long-term and ephemeral Diffie-Hellman exponents.  We use
+;;; self-signed certificates to link names to long-term public values.
+
+;;; This file contains the standard version, in which the two
+;;; ephemeral are mixed, as are the two static exponents.
+
+;;; A role is provided to expose the long term exponent.  The latter
+;;; step is used to test the notion of forward security, assuming that
+;;; it happens *after* the session which agrees the key in question.  
+
+;;; This file considers a single goal statement.  It asserts the
+;;; implicit authentication claim, namely that if *anyone* shares a
+;;; key with me, then that party and I agree on each others'
+;;; identities and long term values.  This assumes that the values
+;;; remain undisclosed.
+
+;;; CPSA4 revisions:
+;;;
+;;; 1.  Self certify my public value in ltx-gen,
+;;;     and assume signing keys non.
+;;; 2.  Deposit private value in state and retrieve
+;;;	it at the beginning of each init or resp run.
+;;; 3.  Discard the private value from state before
+;;;	disclosing it, when testing forward secrecy.
+
+(herald "DHCR: unified model (UM) original"
+	(bound 30)
+	(limit 4000)
+	(goals-sat)
+	(algebra diffie-hellman))
+
+(defmacro (kcfa l gb x gy)
+  (hash (exp gb l) (exp gy x)))
+
+(defmacro (kcfb l ga y gx)
+  (hash (exp ga l) (exp gx y)))
+
+(defprotocol dhcr-um diffie-hellman
+  (defrole init
+    (vars (l x rndx) (beta eta expt) (a b name) (na nb data) (priv-stor locn))
+    (trace
+     (load priv-stor (pv a l))
+     (recv (sig (body b (exp (gen) beta) (pubk "sig" b))
+		(privk "sig" b)))
+     (send (cat na a b (exp (gen) x)))
+     (recv (cat (exp (gen) eta)
+		(enc na nb a b
+		     (kcfa l (exp (gen) beta)
+			   x (exp (gen) eta)))))
+     (send nb)
+     )
+    (uniq-gen x)
+    (uniq-orig na)
+    (facts (neq a b))
+    ;; (facts (neq (exp (gen) eta) (gen)))
+    (gen-st (pv a l)))
+
+  (defrole resp
+    (vars (l y rndx) (alpha chi expt) (a b name) (na nb data) (priv-stor locn))
+    (trace
+     (load priv-stor (pv b l))
+     (recv (sig (body a (exp (gen) alpha) (pubk "sig" a))
+		(privk "sig" a)))
+     (recv (cat na a b (exp (gen) chi)))
+     (send (cat (exp (gen) y)
+		(enc na nb a b
+		     (kcfb l (exp (gen) alpha)
+			   y (exp (gen) chi)))))
+     (recv nb)
+     (send "done")
+     )
+    (uniq-gen y)
+    (uniq-orig nb)
+    (facts (neq a b))
+    ;;    (facts (neq (exp (gen) chi) (gen)))
+    (gen-st (pv b l)))
+
+  (defrole ltx-gen
+    (vars (self name) (l rndx)
+	  (priv-stor locn) (ignore mesg))
+    (trace
+     (load priv-stor ignore)
+     (stor priv-stor (pv self l))
+     (send (sig (body self (exp (gen) l) (pubk "sig" self))
+		(privk "sig" self))))
+    (uniq-orig l))
+
+  (defrole ltx-disclose
+    (vars (self name) (l rndx)
+	  (priv-stor locn) (ignore mesg))
+    (trace
+     (load priv-stor (pv self l))
+     (stor priv-stor "nil")
+     (send l))
+    (gen-st (pv self l)))
+
+  (defrule undisclosed-not-disclosed
+    (forall
+     ((z strd) (l rndx))
+     (implies
+      (and (fact undisclosed l)
+	  (p "ltx-disclose" z 2)
+	  (p "ltx-disclose" "l" z l))
+      (false))))
+
+  (defrule eq-means-=
+    (forall
+     ((v1 v2 mesg))
+     (implies
+      (fact eq v1 v2)
+      (= v1 v2))))
+
+  (lang (sig sign)
+	(body (tuple 3))
+	(pv (tuple 2))))
+
+;; Implicit authentication
+
+(defgoal dhcr-um
+  (forall
+   ((zi zr strd) (ltxa ltxb x y rndx) (eta chi beta alpha expt)
+    (a b a-0 b-0 name))
+   (implies
+    (and
+     (p "init" zi 4)
+     (p "init" "l" zi ltxa)
+     (p "init" "beta" zi beta)
+     (p "init" "x" zi x)
+     (p "init" "eta" zi eta)
+     (p "init" "a" zi a)
+     (p "init" "b" zi b-0)
+     
+     (p "resp" zr 4)
+     (p "resp" "l" zr ltxb)
+     (p "resp" "alpha" zr alpha)
+     (p "resp" "y" zr y)
+     (p "resp" "chi" zr chi)     
+     (p "resp" "a" zr a-0)
+     (p "resp" "b" zr b)
+     (fact eq
+	   (kcfa ltxa (exp (gen) beta)
+		 x (exp (gen) eta))
+	   (kcfb ltxb (exp (gen) alpha)
+		 y (exp (gen) chi)))
+     (non (privk "sig" b))
+     (non (privk "sig" a))
+     (fact neq ltxa ltxb)
+     (fact undisclosed ltxa)
+     (fact undisclosed beta)
+     (fact undisclosed ltxb)
+     (fact undisclosed alpha))
+    (and
+     (= a-0 a)
+     (= b-0 b)
+     (= beta ltxb)
+     (= alpha ltxa)))))
+
+
+
diff --git a/tst/dhcr_um_implicit_auth.tst b/tst/dhcr_um_implicit_auth.tst
new file mode 100644
# file too large to diff: tst/dhcr_um_implicit_auth.tst
diff --git a/tst/dhcr_um_shapes.tst b/tst/dhcr_um_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/dhcr_um_shapes.tst
@@ -0,0 +1,256 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "DHCR: unified model (UM) original" (bound 20) (limit 12000)
+  (algebra diffie-hellman))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/dhcr_um.scm")
+
+(comment "Step count limited to 12000")
+
+(comment "Strand count bounded at 20")
+
+(defprotocol dhcr-um diffie-hellman
+  (defrole init
+    (vars (l x rndx) (gb gy base) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a l))
+      (recv (sig (body b gb (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv (cat gy (enc na nb a b (hash (exp gb l) (exp gy x)))))
+      (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x l))
+    (gen-st (pv a l))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole resp
+    (vars (l y rndx) (ga gx base) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b l))
+      (recv (sig (body a ga (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b gx))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b (hash (exp ga l) (exp gx y))))) (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y l))
+    (gen-st (pv b l))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l))
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defrule fact-resp-neq0
+    (forall ((z strd))
+      (implies (and (p "resp" z 3) (p "resp" "gx" z (gen))) (false))))
+  (defrule fact-init-neq0
+    (forall ((z strd))
+      (implies (and (p "init" z 4) (p "init" "gy" z (gen))) (false))))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z 2)
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd)) (implies (p "ltx-gen" z 2) (trans z 0))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 1))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd)) (implies (p "ltx-disclose" z 2) (trans z 0))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (l rndx) (a name))
+      (implies
+        (and (p "init" z 1) (p "init" "l" z l) (p "init" "a" z a))
+        (gen-st (pv a l)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (l rndx) (b name))
+      (implies
+        (and (p "resp" z 1) (p "resp" "l" z l) (p "resp" "b" z b))
+        (gen-st (pv b l)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (l rndx) (self name))
+      (implies
+        (and (p "ltx-disclose" z 1) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-um
+  (vars (na nb data) (a b name) (pt pval) (gy base) (priv-stor locn)
+    (l l-peer x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (gb (exp (gen) l-peer))
+    (gy gy) (priv-stor priv-stor) (l l) (x x))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x l))
+  (facts (neq a b) (undisclosed l) (undisclosed l-peer))
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-peer) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat gy
+          (enc na nb a b
+            (hash (exp (gen) (mul l l-peer)) (exp gy x)))))))
+  (label 0)
+  (unrealized (0 1) (0 3))
+  (origs (na (0 2)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y l l-0 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
+    (gy (exp (gen) y)) (priv-stor priv-stor-0) (l l-0) (x x))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
+    (gx (exp (gen) x)) (priv-stor priv-stor) (l l) (y y))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
+    ((3 1) (0 0)) ((3 2) (2 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y l) (x l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (trans 1 1) (trans 1 0) (trans 3 1) (trans 3 0) (neq self b)
+    (undisclosed l-0) (undisclosed l))
+  (operation nonce-test (displaced 4 0 init 3) (exp (gen) x-0) (2 2))
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 18)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a self) (b b) (l l-0) (l-peer l) (x x) (gy (exp (gen) y))
+        (na na) (nb nb) (priv-stor priv-stor-0) (pt pt-2))))
+  (origs (na (0 2)) (l-0 (3 1)) (pt-2 (3 1)) (l (1 1)) (pt-0 (1 1))
+    (nb (2 3))))
+
+(defskeleton dhcr-um
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y l rndx)
+    (w expt) (l-0 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b) (gb (exp (gen) l))
+    (gy (exp (gen) (mul y w))) (priv-stor priv-stor-0) (l l-0) (x x))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (ga (exp (gen) l-0))
+    (gx (exp (gen) (mul w x))) (priv-stor priv-stor) (l l) (y y))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 2) (2 2)) ((1 1) (2 0)) ((1 2) (0 1)) ((2 3) (0 3))
+    ((3 1) (0 0)) ((3 2) (2 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y l) (x l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (trans 1 1) (trans 1 0) (trans 3 1) (trans 3 0) (neq self b)
+    (undisclosed l-0) (undisclosed l))
+  (operation generalization deleted (4 0))
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w))
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))
+      (recv (cat na self b (exp (gen) (mul w x))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul l l-0)) (exp (gen) (mul y w x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 90)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a self) (b b) (l l-0) (l-peer l) (x x)
+        (gy (exp (gen) (mul y w))) (na na) (nb nb)
+        (priv-stor priv-stor-0) (pt pt-2))))
+  (origs (na (0 2)) (l-0 (3 1)) (pt-2 (3 1)) (l (1 1)) (pt-0 (1 1))
+    (nb (2 3))))
+
+(comment "Nothing left to do")
diff --git a/tst/dhcr_umx.scm b/tst/dhcr_umx.scm
--- a/tst/dhcr_umx.scm
+++ b/tst/dhcr_umx.scm
@@ -1,135 +1,281 @@
-; Unified Model.  This version used in the paper, tooldev/dh/conf_dh/dh_ebn.tex
+;;; Unified Model  This version used in the paper, tooldev/dh/conf_dh/dh_ebn.tex
 
-; This file models the "Unified Model" method of determining a fresh
-; key from long-term and ephemeral Diffie-Hellman exponents.  We use
-; function relation declarations to link names to long-term public
-; values.
+;;; This file models the "Unified Model" method of determining a fresh
+;;; key from long-term and ephemeral Diffie-Hellman exponents.  We use
+;;; self-signed certificates to link names to long-term public values.
 
-;;; This file contains the criss-cross version, in which each
-;;; ephemeral is mixed with the peer's static exponent.
+;;; This file contains the criss-crossed version, in which each
+;;; ephemeral is mixed with the peer's static exponent.  Only the key
+;;; derivation macros differ from the version in dhcr_um.scm
 
-; A role is provided in which a party signs a fresh long-term
-; Diffie-Hellman value, and then leaks the exponent.  The latter step
-; is used to test forward security.
+;;; A role is provided to expose the long term exponent.  The latter
+;;; step is used to test the notion of forward security, assuming that
+;;; it happens *after* the session which agrees the key in question.  
 
-; Two inputs are analyzed.  In the first, we model that two
-; participants exist that agree on the UM key.  The notion of
-; "implicit authentication" suggests that if one participant exists
-; and another party knows the same key, that party must be either the
-; participant or the participant's intended partner.
+;;; A sequence of queries are analyzed.  Four show what happens given
+;;; an initiator run, depnding which long term values are exposed.
+;;; Then four ask the corresponding questions about the responder.  In
+;;; each group of four, we first assume neither long term exponent is
+;;; exposed, then consider each exposure individually, and then both
+;;; exposed.
 
-; In this version, we assume that the long-term keys of the
-; participants do not leak.
+;;; Then we consider the forward secrecy question, first from the
+;;; initiator's point of view, and then from the responder's.
 
-; The second input checks whether the key can be learned when the key
-; is generated honestly.  In this version, we do NOT assume that the
-; long-term keys of the participants do not leak.
+;;; The UMX key derivation fails to achieve forward secrecy.  Its
+;;; strength relative to the standard UM key derivation a
+;;; participant's *own* long term value may be exposed without an
+;;; adversary being able to acquire a key shared with them for any
+;;; claimed peer.  A fine point that the analysis exposes is that this
+;;; is true when the peer has had only one long key generated.  Other
+;;; disclosed long terms keys yield counterxamples.  If my peer's long
+;;; term value is exposed of course anyone can impersonate them.
 
-(herald "DHCR: unified model (UM) criss-cross" (bound 20) (limit 8000) (algebra diffie-hellman))
+;;; CPSA4 revisions:
+;;;
+;;; 1.  Self certify my public value in ltx-gen,
+;;;     and assume signing keys non.
+;;; 2.  Deposit private value in state and retrieve
+;;;	it at the beginning of each init or resp run.
+;;; 3.  Discard the private value from state before
+;;;	disclosing it, when testing forward secrecy.
 
-(defmacro (kcfa ltxa ltxb x hy)
-  (hash (exp hy ltxa) (exp (gen) (mul ltxb x))))
+(herald "DHCR: unified model (UM) with criss-cross key derivation"
+	(bound 30)
+	(limit 8000)
+	(algebra diffie-hellman))
 
-(defmacro (kcfb ltxa ltxb y hx)
-  (hash (exp (gen) (mul ltxa y)) (exp hx ltxb)))
+(defmacro (kcfa ltxa gbeta x hy)
+  (hash (exp hy ltxa) (exp gbeta x)))
 
+(defmacro (kcfb ltxb galpha y hx)
+  (hash (exp galpha y) (exp hx ltxb)))
+
 (defprotocol dhcr-umx diffie-hellman
   (defrole init
-    (vars (ltxa ltxb x rndx) (y expt) (a b name) (na nb data))
+    (vars (l x rndx) (beta eta expt) (a b name) (na nb data) (priv-stor locn))
     (trace
-     (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+     (load priv-stor (pv a l))
+     (recv (sig (body b (exp (gen) beta) (pubk "sig" b))
+		(privk "sig" b)))
      (send (cat na a b (exp (gen) x)))
-     (recv (cat (exp (gen) y) (enc na nb a b (kcfa ltxa ltxb x (exp (gen) y)))))
+     (recv (cat (exp (gen) eta)
+		(enc na nb a b
+		     (kcfa l (exp (gen) beta)
+			   x (exp (gen) eta)))))
      (send nb)
      )
-    (fn-of ("principal-of" (ltxa a) (ltxb b))
-           ("ltx-of" (a ltxa) (b ltxb)))
     (uniq-gen x)
     (uniq-orig na)
-    (neq ((exp (gen) y) (gen))))
+    (facts (neq a b))
+    ;; (facts (neq (exp (gen) eta) (gen)))
+    (gen-st (pv a l)))
 
   (defrole resp
-    (vars (ltxa ltxb y rndx) (x expt) (a b name) (na nb data))
+    (vars (l y rndx) (alpha chi expt) (a b name) (na nb data) (priv-stor locn))
     (trace
-     (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
-     (recv (cat na a b (exp (gen) x)))
-     (send (cat (exp (gen) y) (enc na nb a b (kcfb ltxa ltxb y (exp (gen) x)))))
+     (load priv-stor (pv b l))
+     (recv (sig (body a (exp (gen) alpha) (pubk "sig" a))
+		(privk "sig" a)))
+     (recv (cat na a b (exp (gen) chi)))
+     (send (cat (exp (gen) y)
+		(enc na nb a b
+		     (kcfb l (exp (gen) alpha)
+			   y (exp (gen) chi)))))
      (recv nb)
+     (send "done")
      )
-    (fn-of ("principal-of" (ltxa a) (ltxb b))
-	   ("ltx-of" (a ltxa) (b ltxb)))
     (uniq-gen y)
     (uniq-orig nb)
-    (neq ((exp (gen) x) (gen))))
+    (facts (neq a b))
+    ;;    (facts (neq (exp (gen) chi) (gen)))
+    (gen-st (pv b l)))
 
   (defrole ltx-gen
-    (vars (self name) (l rndx))
+    (vars (self name) (l rndx)
+	  (priv-stor locn) (ignore mesg))
     (trace
-     (send (cat self (exp (gen) l)))
-     (recv "end-of-protocol")
+     (load priv-stor ignore)
+     (stor priv-stor (pv self l))
+     (send (sig (body self (exp (gen) l) (pubk "sig" self))
+		(privk "sig" self))))
+    (uniq-orig l))
+
+  (defrole ltx-disclose
+    (vars (self name) (l rndx)
+	  (priv-stor locn) (ignore mesg))
+    (trace
+     (load priv-stor (pv self l))
+     (stor priv-stor "nil")
      (send l))
-    (uniq-gen l)
-    (fn-of ("principal-of" (l self))
-	   ("ltx-of" (self l)))))
+    (gen-st (pv self l)))
 
-; Omitting the a\not=b changes basically nothing.
+  (defrule undisclosed-not-disclosed
+    (forall
+     ((z strd) (l rndx))
+     (implies
+      (and (fact undisclosed l)
+	  (p "ltx-disclose" z 2)
+	  (p "ltx-disclose" "l" z l))
+      (false))))
+
+  (defrule ltx-gen-once-inference
+    (forall
+     ((z1 z2 strd) (self name))
+     (implies
+      (and
+       (fact ltx-gen-once self)
+       (p "ltx-gen" z1 2)
+       (p "ltx-gen" "self" z1 self)
+       (p "ltx-gen" z2 2)
+       (p "ltx-gen" "self" z2 self))
+      (= z1 z2))))
+
+  (defrule eq-means-=
+    (forall
+     ((v1 v2 mesg))
+     (implies
+      (fact eq v1 v2)
+      (= v1 v2))))
+
+  (lang (sig sign)
+	(body (tuple 3))
+	(pv (tuple 2))))
+ 
+
+; Initiator point of view: both LTX exponents secret
 (defskeleton dhcr-umx
-  (vars (ltxa ltxb rndx) (a b name))
-  (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-  (defstrand ltx-gen 1 (self b) (l ltxb))
-  (precedes ((1 0) (0 0)))
-  (non-orig ltxb)
-;   (neq (a b))
-  )
+  (vars (a b name) (l l-peer rndx))
+  (defstrand init 4 (a a) (b b) (l l) (beta l-peer))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (facts (neq a b)
+	 (undisclosed l)
+	 (undisclosed l-peer)))
 
-; Initiator point of view: partner's exponent secret
+
+
+; Initiator point of view:  peer exponent secret
 (defskeleton dhcr-umx
-  (vars (ltxa ltxb rndx) (a b name))
-  (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-  (defstrand ltx-gen 1 (self b) (l ltxb))
-  (precedes ((1 0) (0 0)))
-  (non-orig ltxb)
-  (neq (a b)))
+  (vars (a b name) (l l-peer rndx))
+  (defstrand init 4 (a a) (b b) (l l) (beta l-peer))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (facts (neq a b)
+	 ;;	 (undisclosed l)
+	 (undisclosed l-peer)))
 
-; Initiator point of view: both LTX exponents secret
+;;; Initiator point of view:  peer exponent secret,
+;;; my key generated only once
 (defskeleton dhcr-umx
-  (vars (ltxa ltxb rndx) (a b name))
-  (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-  (defstrand ltx-gen 1 (l ltxa))
-  (defstrand ltx-gen 1 (l ltxb))
-  (non-orig ltxa ltxb) (neq (a b)))
+  (vars (a b name) (l l-peer rndx))
+  (defstrand init 4 (a a) (b b) (l l) (beta l-peer))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (facts (neq a b)
+	 (ltx-gen-once a)
+	 ;;	 (undisclosed l)
+	 (undisclosed l-peer)))
 
-; Responder point of view; both exponents secret
+
+;; Initiator point of view:  my exponent secret
 (defskeleton dhcr-umx
-  (vars (ltxa ltxb rndx) (a b name))
-  (defstrand resp 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-  (defstrand ltx-gen 1 (l ltxa))
-  (defstrand ltx-gen 1 (l ltxb))
-  (non-orig ltxa ltxb)
-  (neq (a b)))
+  (vars (a b name) (l rndx) (l-peer expt))
+  (defstrand init 4 (a a) (b b) (l l) (beta l-peer))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (facts (neq a b)
+	 ;;	 (undisclosed l-peer)
+	 (undisclosed l)))
 
-; Responder point of view; partner's exponent secre
+(comment
+;;; comment this out for brevity in the tst suite run.
+;;; Be sure to test it periodically, though.  
+
+; Initiator point of view:  neither exponent secret
+
 (defskeleton dhcr-umx
-  (vars (ltxa ltxb rndx) (a b name))
-  (defstrand resp 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-  (defstrand ltx-gen 1 (l ltxa))
-  (non-orig ltxa)
-  (neq (a b)))
+  (vars (a b name) (l rndx) (l-peer expt))
+  (defstrand init 4 (a a) (b b) (l l) (beta l-peer))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (facts (neq a b)
+	 ;;	 (undisclosed l-peer)
+	 ;;	 (undisclosed l)
+	 )))
 
+
+;;; Responder cases
+
 (defskeleton dhcr-umx
-  (vars (ltxa ltxb rndx) (a b name))
-  (defstrand resp 4 (ltxa ltxa) (ltxb ltxb) (a a) (b b))
-  (defstrand ltx-gen 1 (l ltxa))
-  (non-orig ltxa)
-  ;; (neq (a b))
-  )
+  (vars (a b name) (l l-peer rndx))
+  (defstrand resp 5 (a a) (b b) (l l) (alpha l-peer))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (facts (neq a b)
+	 (undisclosed l)
+	 (undisclosed l-peer)))
 
-;;; Forward secrecy, neither long-term exponent secure
 (defskeleton dhcr-umx
-  (vars (ltxa ltxb x rndx) (y expt) (a b name))
-  (defstrand init 4 (ltxa ltxa) (ltxb ltxb) (x x) (y y) (a a) (b b))
-  (deflistener (kcfa ltxa ltxb x (exp (gen) y)))
-  (defstrand ltx-gen 3 (l ltxa))
-  (defstrand ltx-gen 3 (l ltxb))
-  (precedes ((0 3) (3 1)) ((0 3) (2 1)))
-  (neq (a b)))
+  (vars (a b name) (l l-peer rndx))
+  (defstrand resp 5 (a a) (b b) (l l) (alpha l-peer))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (facts (neq a b)
+	 ;; 	 (undisclosed l) 
+	 (undisclosed l-peer)))
+
+(defskeleton dhcr-umx
+  (vars (a b name) (l l-peer rndx))
+  (defstrand resp 5 (a a) (b b) (l l) (alpha l-peer))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (facts (neq a b)
+	 (ltx-gen-once b)
+	 ;; 	 (undisclosed l)
+	 (undisclosed l-peer)))
+
+(defskeleton dhcr-umx
+  (vars (a b name) (l l-peer rndx))
+  (defstrand resp 5 (a a) (b b) (l l) (alpha l-peer))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (facts (neq a b)
+	 (undisclosed l)
+	 ;;	 (undisclosed l-peer)
+	 ))
+
+
+(comment
+;;; comment this out for brevity in the tst suite run.
+;;; Be sure to test it periodically, though.  
+
+
+ (defskeleton dhcr-umx
+   (vars (a b name) (l l-peer rndx))
+   (defstrand resp 5 (a a) (b b) (l l) (alpha l-peer))
+   (non-orig (privk "sig" a) (privk "sig" b))
+   (facts (neq a b)
+	  ;;      (undisclosed l)
+	  ;;	 (undisclosed l-peer)
+	  )))
+
+;; Forward secrecy for each participant 
+
+(comment
+;;; These forward secrecy queries are commented out because they take
+;;; a long time to run (10 minutes plus).  They're not suitable for
+;;; the regular test suite for this reason.
+
+;;; They should however be checked from time to time.  
+
+ (defskeleton dhcr-umx
+   (vars (ltxa ltxb x rndx) (y expt) (a b name))
+   (defstrand init 5 (l ltxa) (beta ltxb) (x x) (eta y) (a a) (b b))
+   (deflistener (kcfa ltxa (exp (gen) ltxb) x (exp (gen) y)))
+   (defstrand ltx-disclose 3 (l ltxa))
+   (defstrand ltx-disclose 3 (l ltxb))
+   (precedes ((0 4) (3 0)) ((0 4) (2 0)))
+   (non-orig (privk "sig" a) (privk "sig" b))
+   (facts (neq a b)))
+
+ (defskeleton dhcr-umx
+   (vars (ltxa ltxb y rndx) (chi expt) (a b name))
+   (defstrand resp 6 (l ltxa) (alpha ltxb) (y y) (chi chi) (a a) (b b))
+   (deflistener (kcfb ltxb (exp (gen) ltxa) y (exp (gen) chi)))
+   (defstrand ltx-disclose 3 (l ltxa))
+   (defstrand ltx-disclose 3 (l ltxb))
+   (precedes ((0 5) (3 0)) ((0 5) (2 0)))
+   (facts (neq a b))))
+
diff --git a/tst/dhcr_umx.tst b/tst/dhcr_umx.tst
# file too large to diff: tst/dhcr_umx.tst
diff --git a/tst/dhcr_umx_goals.scm b/tst/dhcr_umx_goals.scm
new file mode 100644
--- /dev/null
+++ b/tst/dhcr_umx_goals.scm
@@ -0,0 +1,209 @@
+;;; Unified Model  This version used in the paper, tooldev/dh/conf_dh/dh_ebn.tex
+
+;;; This file models the "Unified Model" method of determining a fresh
+;;; key from long-term and ephemeral Diffie-Hellman exponents.  We use
+;;; self-signed certificates to link names to long-term public values.
+
+;;; This file contains the criss-crossed version, in which each
+;;; ephemeral is mixed with the peer's static exponent.  Only the key
+;;; derivation macros differ from the version in dhcr_um.scm
+
+;;; A role is provided to expose the long term exponent.  The latter
+;;; step is used to test the notion of forward security, assuming that
+;;; it happens *after* the session which agrees the key in question.  
+
+;;; A sequence of queries are analyzed.  Four show what happens given
+;;; an initiator run, depnding which long term values are exposed.
+;;; Then four ask the corresponding questions about the responder.  In
+;;; each group of four, we first assume neither long term exponent is
+;;; exposed, then consider each exposure individually, and then both
+;;; exposed.
+
+;;; Then we consider the forward secrecy question, first from the
+;;; initiator's point of view, and then from the responder's.
+
+;;; The UMX key derivation fails to achieve forward secrecy.  Its
+;;; strength relative to the standard UM key derivation a
+;;; participant's *own* long term value may be exposed without an
+;;; adversary being able to acquire a key shared with them for any
+;;; claimed peer.  A fine point that the analysis exposes is that this
+;;; is true when the peer has had only one long key generated.  Other
+;;; disclosed long terms keys yield counterxamples.  If my peer's long
+;;; term value is exposed of course anyone can impersonate them.
+
+;;; CPSA4 revisions:
+;;;
+;;; 1.  Self certify my public value in ltx-gen,
+;;;     and assume signing keys non.
+;;; 2.  Deposit private value in state and retrieve
+;;;	it at the beginning of each init or resp run.
+;;; 3.  Discard the private value from state before
+;;;	disclosing it, when testing forward secrecy.
+
+(herald "DHCR: unified model (UM) with criss-cross key derivation"
+	(bound 30)
+	(limit 16000) 
+	(goals-sat)
+	(algebra diffie-hellman))
+
+(defmacro (kcfa ltxa gbeta x hy)
+  (hash (exp hy ltxa) (exp gbeta x)))
+
+(defmacro (kcfb ltxb galpha y hx)
+  (hash (exp galpha y) (exp hx ltxb)))
+
+(defprotocol dhcr-umx diffie-hellman
+  (defrole init
+    (vars (l x rndx) (beta eta expt) (a b name) (na nb data) (priv-stor locn))
+    (trace
+     (load priv-stor (pv a l))
+     (recv (sig (body b (exp (gen) beta) (pubk "sig" b))
+		(privk "sig" b)))
+     (send (cat na a b (exp (gen) x)))
+     (recv (cat (exp (gen) eta)
+		(enc na nb a b
+		     (kcfa l (exp (gen) beta)
+			   x (exp (gen) eta)))))
+     (send nb)
+     )
+    (uniq-gen x)
+    (uniq-orig na)
+    (facts (neq a b))
+    ;; (facts (neq (exp (gen) eta) (gen)))
+    (gen-st (pv a l)))
+
+  (defrole resp
+    (vars (l y rndx) (alpha chi expt) (a b name) (na nb data) (priv-stor locn))
+    (trace
+     (load priv-stor (pv b l))
+     (recv (sig (body a (exp (gen) alpha) (pubk "sig" a))
+		(privk "sig" a)))
+     (recv (cat na a b (exp (gen) chi)))
+     (send (cat (exp (gen) y)
+		(enc na nb a b
+		     (kcfb l (exp (gen) alpha)
+			   y (exp (gen) chi)))))
+     (recv nb)
+     (send "done")
+     )
+    (uniq-gen y)
+    (uniq-orig nb)
+    (facts (neq a b))
+    ;;    (facts (neq (exp (gen) chi) (gen)))
+    (gen-st (pv b l)))
+
+  (defrole ltx-gen
+    (vars (self name) (l rndx)
+	  (priv-stor locn) (ignore mesg))
+    (trace
+     (load priv-stor ignore)
+     (stor priv-stor (pv self l))
+     (send (sig (body self (exp (gen) l) (pubk "sig" self))
+		(privk "sig" self))))
+    (uniq-orig l))
+
+  (defrole ltx-disclose
+    (vars (self name) (l rndx)
+	  (priv-stor locn) (ignore mesg))
+    (trace
+     (load priv-stor (pv self l))
+     (stor priv-stor "nil")
+     (send l))
+    (gen-st (pv self l)))
+
+  (defrule undisclosed-not-disclosed
+    (forall
+     ((z strd) (l rndx))
+     (implies
+      (and (fact undisclosed l)
+	  (p "ltx-disclose" z 2)
+	  (p "ltx-disclose" "l" z l))
+      (false))))
+
+  (defrule ltx-gen-once-inference
+    (forall
+     ((z1 z2 strd) (self name))
+     (implies
+      (and
+       (fact ltx-gen-once self)
+       (p "ltx-gen" z1 2)
+       (p "ltx-gen" "self" z1 self)
+       (p "ltx-gen" z2 2)
+       (p "ltx-gen" "self" z2 self))
+      (= z1 z2))))
+
+  (defrule eq-means-=
+    (forall
+     ((v1 v2 mesg))
+     (implies
+      (fact eq v1 v2)
+      (= v1 v2))))
+
+  (lang (sig sign)
+	(body (tuple 3))
+	(pv (tuple 2))))
+
+(defgoal dhcr-umx
+  (forall
+   ((na nb data) (a b name) (l l-peer x rndx)
+    (eta expt) (z strd))
+   (implies
+    (and
+     (p "init" z 4)
+     (p "init" "na" z na)
+     (p "init" "nb" z nb)     
+     (p "init" "a" z a)
+     (p "init" "b" z b)
+     (p "init" "l" z l)
+     (p "init" "x" z x)
+     (p "init" "beta" z l-peer)     
+     (p "init" "eta" z eta)
+      
+     (non (privk "sig" b))
+     (ugen x)
+     (uniq-at na z 2)
+     (fact neq a b)
+     ;; skip the ltx-gen-once assumption 
+     ;; (fact ltx-gen-once a)
+     (fact undisclosed l-peer))
+    ;; and still get the authentication we need 
+    (exists
+     ((z-1 strd) (y rndx) (w expt))
+     (and
+      (p "resp" z-1 4) 
+      (p "resp" "na" z-1 na)
+      (p "resp" "nb" z-1 nb) (p "resp" "a" z-1 a)
+      (p "resp" "b" z-1 b)       
+      (prec z 2 z-1 2))))))
+
+(defgoal dhcr-umx
+  (forall
+   ((z zl strd) (na nb data) (a b name)  (l x rndx)
+    (eta beta expt))
+   (implies
+    (and
+     (p "init" z 4)
+     (p "init" "na" z na)
+     (p "init" "nb" z nb)     
+     (p "init" "a" z a)
+     (p "init" "b" z b)
+     (p "init" "l" z l)
+     (p "init" "x" z x)
+     (p "init" "beta" z beta)     
+     (p "init" "eta" z eta)
+     (non (privk "sig" b))
+     (ugen x)
+     (uniq-at na z 2)
+     (fact neq a b)
+     ;; skip the ltx-gen-once assumption 
+     ;; (fact ltx-gen-once a)
+     (fact undisclosed beta)
+     ;; and still get the secrecy we need
+     (p "" zl 2)
+     (p "" "x" zl 
+	(kcfa l (exp (gen) beta)
+	      x (exp (gen) eta))))
+    (false))))
+
+;;; Forward secrecy doesn't hold, so let's not try to prove that 
+
diff --git a/tst/dhcr_umx_goals.tst b/tst/dhcr_umx_goals.tst
new file mode 100644
--- /dev/null
+++ b/tst/dhcr_umx_goals.tst
@@ -0,0 +1,29564 @@
+(herald "DHCR: unified model (UM) with criss-cross key derivation"
+  (bound 30) (limit 16000) (goals-sat) (algebra diffie-hellman))
+
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/dhcr_umx_goals.scm")
+(comment "Step count limited to 16000")
+(comment "Strand count bounded at 30")
+
+(defprotocol dhcr-umx diffie-hellman
+  (defrole init
+    (vars (l x rndx) (beta eta expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a l))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))))))
+      (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x l) (x beta))
+    (facts (neq a b))
+    (gen-st (pv a l)))
+  (defrole resp
+    (vars (l y rndx) (alpha chi expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b l))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul l chi))))))
+      (recv nb) (send "done"))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y l) (y alpha) (y chi))
+    (facts (neq a b))
+    (gen-st (pv b l)))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l)))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z (idx 2))
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defrule ltx-gen-once-inference
+    (forall ((z1 z2 strd) (self name))
+      (implies
+        (and (fact ltx-gen-once self) (p "ltx-gen" z1 (idx 2))
+          (p "ltx-gen" "self" z1 self) (p "ltx-gen" z2 (idx 2))
+          (p "ltx-gen" "self" z2 self))
+        (= z1 z2))))
+  (defrule eq-means-=
+    (forall ((v1 v2 mesg)) (implies (fact eq v1 v2) (= v1 v2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "init" z (idx 2)) (p "init" "a" z a) (p "init" "b" z b))
+        (fact neq a b))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "resp" z (idx 2)) (p "resp" "a" z a) (p "resp" "b" z b))
+        (fact neq a b))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd))
+      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 1)))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd))
+      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 0)))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd))
+      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 1)))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd))
+      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 0)))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (a name) (l rndx))
+      (implies
+        (and (p "init" z (idx 1)) (p "init" "l" z l) (p "init" "a" z a))
+        (gen-st (pv a l)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (b name) (l rndx))
+      (implies
+        (and (p "resp" z (idx 1)) (p "resp" "l" z l) (p "resp" "b" z b))
+        (gen-st (pv b l)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (self name) (l rndx))
+      (implies
+        (and (p "ltx-disclose" z (idx 1)) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn)
+    (l l-peer x rndx) (eta expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-peer) (eta eta))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x l) (x l-peer))
+  (facts (neq a b) (undisclosed l-peer))
+  (goals
+    (forall
+      ((na nb data) (a b name) (l l-peer x rndx) (eta expt) (z strd))
+      (implies
+        (and (p "init" z 4) (p "init" "na" z na) (p "init" "nb" z nb)
+          (p "init" "a" z a) (p "init" "b" z b) (p "init" "l" z l)
+          (p "init" "x" z x) (p "init" "beta" z l-peer)
+          (p "init" "eta" z eta) (non (privk "sig" b)) (ugen x)
+          (uniq-at na z 2) (fact neq a b) (fact undisclosed l-peer))
+        (exists ((z-1 strd) (y rndx) (w expt))
+          (and (p "resp" z-1 4) (p "resp" "na" z-1 na)
+            (p "resp" "nb" z-1 nb) (p "resp" "a" z-1 a)
+            (p "resp" "b" z-1 b) (prec z 2 z-1 2))))))
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-peer) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l eta))
+              (exp (gen) (mul l-peer x))))))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (na (0 2)))
+  (ugens (x (0 2)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn)
+    (l l-peer x rndx) (eta expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-peer) (eta eta))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x l) (x l-peer))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-peer))
+  (rule fact-resp-neq0 gen-st-ltx-disclose-0)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-peer) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l eta))
+              (exp (gen) (mul l-peer x))))))))
+  (label 1)
+  (parent 0)
+  (unrealized (0 0) (0 1))
+  (origs (na (0 2)))
+  (ugens (x (0 2)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb data) (a b name) (pt pt-0 pval)
+    (priv-stor locn) (l-peer x rndx) (eta expt) (l rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-peer) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (precedes ((1 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l)
+  (uniq-gen x)
+  (absent (x l-peer) (x l))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-peer))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor (cat pt (pv a l))) (0 0))
+  (strand-map 0)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-peer) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l))
+              (exp (gen) (mul l-peer x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l)))))
+  (label 2)
+  (parent 1)
+  (unrealized (0 1) (0 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 1) (0 0)) ((2 2) (0 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand ltx-gen 3)
+    (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)) (0 1))
+  (strand-map 0 1)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))))
+  (label 3)
+  (parent 2)
+  (unrealized (0 3))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l y rndx) (alpha expt)
+    (x l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y alpha)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha alpha) (chi (mul x l-0 (rec l-1))))
+  (precedes ((0 2) (3 2)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 3) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y alpha) (y (mul x l-0 (rec l-1))) (y l-1) (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 gen-st-ltx-disclose-0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand resp 4)
+    (enc na nb a b
+      (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))) (0 3))
+  (strand-map 0 1 2)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y alpha))
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha))
+              (exp (gen) (mul x l-0))))))))
+  (label 4)
+  (parent 3)
+  (unrealized (0 3) (3 0) (3 2))
+  (fringe)
+  (satisfies-all)
+  (maps
+    ((0)
+      ((na na) (nb nb) (a a) (b b) (l l) (l-peer l-0) (x x)
+        (eta (mul (rec l) y alpha)) (priv-stor priv-stor))))
+  (origs (nb (3 3)) (l-0 (2 1)) (pt-2 (2 1)) (l (1 1)) (pt (1 1))
+    (na (0 2)))
+  (ugens (y (3 3)) (x (0 2)))
+  (comment "satisfies all"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+  (precedes ((0 2) (3 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+    (enc na nb a b
+      (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))) (0 3))
+  (strand-map 0 1 2)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))))
+  (label 5)
+  (parent 3)
+  (unrealized (3 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+    (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))))
+  (label 6)
+  (parent 5)
+  (unrealized (4 0))
+  (comment "8 in cohort - 8 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx)
+    (alpha chi expt) (l-1 y rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec l-1) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 3) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y l-0) (y alpha) (y chi))
+  (gen-st (pv a l-1) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) y))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul l-0 chi))))))))
+  (label 7)
+  (parent 6)
+  (unrealized (0 3) (4 0) (5 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (beta expt)
+    (l-1 x-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec l-1) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-1) (x-0 l-0) (x-0 beta))
+  (gen-st (pv a l-1) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 8)
+  (parent 6)
+  (unrealized (0 3) (4 0) (5 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (rec l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (gen) (exp (gen) (mul x l))))
+  (deflistener (cat (gen) (exp (gen) (mul x l))))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (contracted (eta (rec l-0)) (l-1 l-0)) (gen)
+    (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (rec l-0))
+          (enc na nb a b (hash (gen) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (gen) (exp (gen) (mul x l))))
+      (send (hash (gen) (exp (gen) (mul x l)))))
+    ((recv (cat (gen) (exp (gen) (mul x l))))
+      (send (cat (gen) (exp (gen) (mul x l))))))
+  (label 9)
+  (parent 6)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) x) (exp (gen) (mul l-0 x))))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 5 0 init 3) (exp (gen) x-0) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) x) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) x) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) x) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) x) (exp (gen) (mul l-0 x))))))
+  (label 10)
+  (parent 6)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) l-0) (exp (gen) (mul x l-0))))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 5 2 ltx-gen 3) (exp (gen) l-1) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l-0))))))
+  (label 11)
+  (parent 6)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-0) (exp (gen) (mul x l))))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 2) (3 0)) ((1 2) (0 1)) ((2 1) (0 3)) ((3 1) (2 0))
+    ((4 1) (0 0)) ((4 2) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((4 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 1 5 ltx-gen 3) (exp (gen) l-1) (4 0))
+  (strand-map 0 4 1 2 3)
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (gen)
+          (enc na nb self b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l)))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 12)
+  (parent 6)
+  (unrealized (3 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-1) (exp (gen) (mul x l))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) l-1) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-1) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-1) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) l-1) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 13)
+  (parent 6)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx) (w expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul eta l (rec w))) w))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul eta l (rec w))) w))
+    (exp (gen) (mul eta l)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul eta l (rec w))) w))
+      (send (cat (exp (gen) (mul eta l (rec w))) w))))
+  (label 14)
+  (parent 6)
+  (unrealized (4 0) (5 0))
+  (comment "7 in cohort - 7 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 3) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 6 1 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0))))))))
+  (label 15)
+  (parent 7)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 3) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 6 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0))))))))
+  (label 16)
+  (parent 7)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 y l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 3) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((6 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) y))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 17)
+  (parent 7)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 6 1 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 18)
+  (parent 8)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 6 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 19)
+  (parent 8)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((6 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
+  (label 20)
+  (parent 8)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (rec l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (gen) (exp (gen) (mul x l))))
+  (deflistener (cat (gen) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (5 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (rec l-0))
+          (enc na nb a b (hash (gen) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (gen) (exp (gen) (mul x l))))
+      (send (hash (gen) (exp (gen) (mul x l)))))
+    ((recv (cat (gen) (exp (gen) (mul x l))))
+      (send (cat (gen) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 21)
+  (parent 9)
+  (unrealized (0 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (rec l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (gen) (exp (gen) (mul x l))))
+  (deflistener (cat (gen) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (5 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (rec l-0))
+          (enc na nb a b (hash (gen) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (gen) (exp (gen) (mul x l))))
+      (send (hash (gen) (exp (gen) (mul x l)))))
+    ((recv (cat (gen) (exp (gen) (mul x l))))
+      (send (cat (gen) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 22)
+  (parent 9)
+  (unrealized (0 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) x) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (5 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul l-0 x)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) x) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) x) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) x) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) x) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 23)
+  (parent 10)
+  (unrealized (0 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) x) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (5 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul l-0 x)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) x) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) x) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) x) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) x) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 24)
+  (parent 10)
+  (unrealized (0 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) l-0) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (5 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 25)
+  (parent 11)
+  (unrealized (0 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) l-0) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (5 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 26)
+  (parent 11)
+  (unrealized (0 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-0) (exp (gen) (mul x l))))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (5 0)) ((1 2) (0 1)) ((2 1) (0 3)) ((3 1) (2 0))
+    ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((4 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (3 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (gen)
+          (enc na nb self b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l)))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 27)
+  (parent 12)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-0) (exp (gen) (mul x l))))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (5 0)) ((1 2) (0 1)) ((2 1) (0 3)) ((3 1) (2 0))
+    ((4 1) (0 0)) ((4 2) (3 0)) ((5 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((4 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (3 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (gen)
+          (enc na nb self b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l)))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 28)
+  (parent 12)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-1) (exp (gen) (mul x l))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) l-1) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-1) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-1) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) l-1) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 29)
+  (parent 13)
+  (unrealized (0 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-1) (exp (gen) (mul x l))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) l-1) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-1) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-1) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) l-1) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 30)
+  (parent 13)
+  (unrealized (0 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (beta expt)
+    (l-1 rndx) (w expt) (x-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec l-1) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-1) (x-0 l-0) (x-0 beta))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 31)
+  (parent 14)
+  (unrealized (0 3) (4 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (w expt)
+    (l l-0 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul w (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) x) w))
+  (precedes ((0 2) (5 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 0 init 3) (exp (gen) x-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w))))
+  (label 32)
+  (parent 14)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l l-0 rndx)
+    (w expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) w) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) w) (exp (gen) (mul x l))))
+  (deflistener (cat (gen) w))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (eta (mul (rec l-0) w)) (l-1 l-0) (w-0 w)) (gen) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w))
+          (enc na nb a b (hash (exp (gen) w) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) w) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) w) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) w) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) w) (exp (gen) (mul x l)))))
+    ((recv (cat (gen) w)) (send (cat (gen) w))))
+  (label 33)
+  (parent 14)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta w))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 2) (3 0)) ((1 2) (0 1)) ((2 1) (0 3)) ((3 1) (2 0))
+    ((4 1) (3 0)) ((5 1) (0 0)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((5 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 1 6 ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 5 1 2 3 4)
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) w)
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 34)
+  (parent 14)
+  (unrealized (3 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx)
+    (alpha chi expt) (l-1 rndx) (w expt) (y rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec l-1) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y l-0) (y alpha) (y chi))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul l-0 chi))))))))
+  (label 35)
+  (parent 14)
+  (unrealized (0 3) (4 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((2 2) (5 0))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 2 ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w))))
+  (label 36)
+  (parent 14)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (w expt)
+    (l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-1) w))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-1) w)) (send (cat (exp (gen) l-1) w)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 37)
+  (parent 14)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 3) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0)))))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 38)
+  (parent 15)
+  (unrealized (0 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 3) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0)))))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 39)
+  (parent 15)
+  (unrealized (0 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 3) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0)))))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 40)
+  (parent 16)
+  (unrealized (0 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 3) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0)))))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 41)
+  (parent 16)
+  (unrealized (0 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 y l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 3) (4 0)) ((6 1) (5 0)) ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((6 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) y))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 42)
+  (parent 17)
+  (unrealized (0 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 y l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 3) (4 0)) ((6 1) (5 0)) ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((6 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) y))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 43)
+  (parent 17)
+  (unrealized (0 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 44)
+  (parent 18)
+  (unrealized (0 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((1 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 45)
+  (parent 18)
+  (unrealized (0 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 46)
+  (parent 19)
+  (unrealized (0 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 1) (5 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 47)
+  (parent 19)
+  (unrealized (0 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (5 0)) ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((6 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 48)
+  (parent 20)
+  (unrealized (0 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 2) (4 0)) ((6 1) (5 0)) ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((6 1) (5 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 49)
+  (parent 20)
+  (unrealized (0 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta w expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 1 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 50)
+  (parent 31)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l rndx) (w expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 51)
+  (parent 31)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 rndx) (w expt) (x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
+  (label 52)
+  (parent 31)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (w expt)
+    (l l-0 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul w (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) x) w))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (5 0)) ((0 2) (6 0)) ((1 1) (0 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul l-0 x)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w)))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 53)
+  (parent 32)
+  (unrealized (0 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (w expt)
+    (l l-0 x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul w (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) x) w))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (5 0)) ((0 2) (6 0)) ((1 1) (0 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul l-0 x)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w)))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 54)
+  (parent 32)
+  (unrealized (0 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l l-0 rndx)
+    (w expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) w) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) w) (exp (gen) (mul x l))))
+  (deflistener (cat (gen) w))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w))
+          (enc na nb a b (hash (exp (gen) w) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) w) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) w) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) w) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) w) (exp (gen) (mul x l)))))
+    ((recv (cat (gen) w)) (send (cat (gen) w)))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 55)
+  (parent 33)
+  (unrealized (0 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l l-0 rndx)
+    (w expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) w) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) w) (exp (gen) (mul x l))))
+  (deflistener (cat (gen) w))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w))
+          (enc na nb a b (hash (exp (gen) w) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) w) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) w) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) w) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) w) (exp (gen) (mul x l)))))
+    ((recv (cat (gen) w)) (send (cat (gen) w)))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 56)
+  (parent 33)
+  (unrealized (0 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta w))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (6 0)) ((1 2) (0 1)) ((2 1) (0 3)) ((3 1) (2 0))
+    ((4 1) (3 0)) ((5 1) (0 0)) ((5 2) (4 0)) ((6 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((5 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (3 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) w)
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 57)
+  (parent 34)
+  (unrealized (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta w))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (6 0)) ((1 2) (0 1)) ((2 1) (0 3)) ((3 1) (2 0))
+    ((4 1) (3 0)) ((5 1) (0 0)) ((5 2) (4 0)) ((6 1) (3 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (4 0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((5 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (3 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) w)
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 58)
+  (parent 34)
+  (unrealized (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi w expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 1 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0))))))))
+  (label 59)
+  (parent 35)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l rndx) (w expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0))))))))
+  (label 60)
+  (parent 35)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 rndx) (w expt) (y l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 2) (4 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 61)
+  (parent 35)
+  (unrealized (0 3) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((2 2) (5 0))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 62)
+  (parent 36)
+  (unrealized (0 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (6 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((2 2) (5 0))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 63)
+  (parent 36)
+  (unrealized (0 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (w expt)
+    (l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-1) w))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)) ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-1) w)) (send (cat (exp (gen) l-1) w)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 64)
+  (parent 37)
+  (unrealized (0 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (w expt)
+    (l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-1) w))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)) ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-1) w)) (send (cat (exp (gen) l-1) w)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 65)
+  (parent 37)
+  (unrealized (0 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta w expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 66)
+  (parent 50)
+  (unrealized (0 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta w expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 67)
+  (parent 50)
+  (unrealized (0 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l rndx) (w expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 68)
+  (parent 51)
+  (unrealized (0 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l rndx) (w expt) (x-0 l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 69)
+  (parent 51)
+  (unrealized (0 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 rndx) (w expt) (x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (8 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)) ((7 1) (6 0))
+    ((8 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 70)
+  (parent 52)
+  (unrealized (0 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 rndx) (w expt) (x-0 l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (8 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 2) (5 0)) ((7 1) (6 0))
+    ((8 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 71)
+  (parent 52)
+  (unrealized (0 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi w expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0)))))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 72)
+  (parent 59)
+  (unrealized (0 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi w expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((1 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((1 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0)))))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 73)
+  (parent 59)
+  (unrealized (0 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l rndx) (w expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0)))))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 74)
+  (parent 60)
+  (unrealized (0 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l rndx) (w expt) (y l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((0 2) (7 0)) ((1 1) (0 0)) ((2 1) (6 0)) ((2 2) (0 1))
+    ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((1 1) (0 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0)))))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 75)
+  (parent 60)
+  (unrealized (0 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 rndx) (w expt) (y l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((0 2) (8 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0)) ((7 1) (6 0))
+    ((8 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 76)
+  (parent 61)
+  (unrealized (0 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 rndx) (w expt) (y l-1 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((0 2) (8 0)) ((1 1) (0 0)) ((2 2) (0 1)) ((3 1) (0 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 3) (5 0)) ((7 1) (6 0))
+    ((8 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((1 1) (0 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 77)
+  (parent 61)
+  (unrealized (0 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-umx diffie-hellman
+  (defrole init
+    (vars (l x rndx) (beta eta expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a l))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))))))
+      (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x l) (x beta))
+    (facts (neq a b))
+    (gen-st (pv a l)))
+  (defrole resp
+    (vars (l y rndx) (alpha chi expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b l))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul l chi))))))
+      (recv nb) (send "done"))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y l) (y alpha) (y chi))
+    (facts (neq a b))
+    (gen-st (pv b l)))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l)))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z (idx 2))
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defrule ltx-gen-once-inference
+    (forall ((z1 z2 strd) (self name))
+      (implies
+        (and (fact ltx-gen-once self) (p "ltx-gen" z1 (idx 2))
+          (p "ltx-gen" "self" z1 self) (p "ltx-gen" z2 (idx 2))
+          (p "ltx-gen" "self" z2 self))
+        (= z1 z2))))
+  (defrule eq-means-=
+    (forall ((v1 v2 mesg)) (implies (fact eq v1 v2) (= v1 v2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "init" z (idx 2)) (p "init" "a" z a) (p "init" "b" z b))
+        (fact neq a b))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "resp" z (idx 2)) (p "resp" "a" z a) (p "resp" "b" z b))
+        (fact neq a b))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd))
+      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 1)))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd))
+      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 0)))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd))
+      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 1)))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd))
+      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 0)))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (a name) (l rndx))
+      (implies
+        (and (p "init" z (idx 1)) (p "init" "l" z l) (p "init" "a" z a))
+        (gen-st (pv a l)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (b name) (l rndx))
+      (implies
+        (and (p "resp" z (idx 1)) (p "resp" "l" z l) (p "resp" "b" z b))
+        (gen-st (pv b l)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (self name) (l rndx))
+      (implies
+        (and (p "ltx-disclose" z (idx 1)) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn) (l x rndx)
+    (eta beta expt))
+  (deflistener (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta beta) (eta eta))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x l) (x beta))
+  (facts (neq a b) (undisclosed beta))
+  (goals
+    (forall
+      ((z zl strd) (na nb data) (a b name) (l x rndx) (eta beta expt))
+      (implies
+        (and (p "init" z 4) (p "init" "na" z na) (p "init" "nb" z nb)
+          (p "init" "a" z a) (p "init" "b" z b) (p "init" "l" z l)
+          (p "init" "x" z x) (p "init" "beta" z beta)
+          (p "init" "eta" z eta) (non (privk "sig" b)) (ugen x)
+          (uniq-at na z 2) (fact neq a b) (fact undisclosed beta)
+          (p "" zl 2)
+          (p "" "x" zl
+            (hash (exp (exp (gen) eta) l) (exp (exp (gen) beta) x))))
+        (false))))
+  (traces
+    ((recv (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))))
+      (send (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))))))))
+  (label 78)
+  (unrealized (0 0) (1 1))
+  (preskeleton)
+  (origs (na (1 2)))
+  (ugens (x (1 2)))
+  (comment "Not a skeleton"))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn) (l x rndx)
+    (eta beta expt))
+  (deflistener (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta beta) (eta eta))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x l) (x beta))
+  (facts (neq a b) (undisclosed beta))
+  (traces
+    ((recv (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))))
+      (send (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))))))))
+  (label 79)
+  (parent 78)
+  (unrealized (1 1))
+  (origs (na (1 2)))
+  (ugens (x (1 2)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b name) (pt pval) (priv-stor locn) (l x rndx)
+    (eta beta expt))
+  (deflistener (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta beta) (eta eta))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na)
+  (uniq-gen x)
+  (absent (x l) (x beta))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed beta))
+  (rule fact-resp-neq0 gen-st-ltx-disclose-0)
+  (traces
+    ((recv (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))))
+      (send (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))))))))
+  (label 80)
+  (parent 79)
+  (unrealized (1 0) (1 1))
+  (origs (na (1 2)))
+  (ugens (x (1 2)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb data) (a b name) (pt pt-0 pval)
+    (priv-stor locn) (x rndx) (eta beta expt) (l rndx))
+  (deflistener (hash (exp (gen) (mul eta l)) (exp (gen) (mul x beta))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta beta) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (precedes ((1 2) (0 0)) ((2 1) (1 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l)
+  (uniq-gen x)
+  (absent (x beta) (x l))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed beta))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor (cat pt (pv a l))) (1 0))
+  (strand-map 0 1)
+  (traces
+    ((recv (hash (exp (gen) (mul eta l)) (exp (gen) (mul x beta))))
+      (send (hash (exp (gen) (mul eta l)) (exp (gen) (mul x beta)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x beta)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l)))))
+  (label 81)
+  (parent 80)
+  (unrealized (0 0) (1 1) (1 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (0 0)) ((2 1) (1 0)) ((3 2) (1 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand ltx-gen 3)
+    (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)) (1 1))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))))
+  (label 82)
+  (parent 81)
+  (unrealized (0 0) (1 3))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l y rndx) (alpha expt)
+    (x l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y alpha)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha alpha) (chi (mul x l-0 (rec l-1))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 2) (1 1)) ((4 3) (0 0))
+    ((4 3) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y alpha) (y (mul x l-0 (rec l-1))) (y l-1) (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 gen-st-ltx-disclose-0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand resp 4)
+    (enc na nb a b
+      (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))) (1 3))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y alpha))
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha))
+              (exp (gen) (mul x l-0))))))))
+  (label 83)
+  (parent 82)
+  (unrealized (0 0) (1 3) (4 0) (4 2))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+  (precedes ((1 2) (0 0)) ((1 2) (4 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+    (enc na nb a b
+      (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))) (1 3))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))))
+  (label 84)
+  (parent 82)
+  (unrealized (0 0) (4 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l y rndx)
+    (alpha expt) (x l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y alpha)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha alpha) (chi x))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y alpha) (y x) (y l-0) (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 5 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y alpha))
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha))
+              (exp (gen) (mul x l-0))))))))
+  (label 85)
+  (parent 83)
+  (unrealized (0 0) (1 3))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l y rndx) (alpha expt)
+    (x l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y alpha)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha alpha) (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 2) (1 1)) ((4 3) (0 0))
+    ((4 3) (1 3)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y alpha) (y (mul x l-0 (rec l-1))) (y l-1) (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y alpha))
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1)))))
+  (label 86)
+  (parent 83)
+  (unrealized (0 0) (1 3) (4 2))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+    (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))))
+  (label 87)
+  (parent 84)
+  (unrealized (0 0) (5 0))
+  (comment "8 in cohort - 8 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x y rndx))
+  (deflistener (hash (exp (gen) (mul l-0 y)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y x))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 5 4 resp 4) (exp (gen) y-0) (1 3))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul l-0 y)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul l-0 y)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 y)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 y)) (exp (gen) (mul l x))))))))
+  (label 88)
+  (parent 85)
+  (unrealized (0 0) (4 1))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l y rndx)
+    (alpha expt) (x l-0 rndx) (w expt))
+  (deflistener (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y alpha)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha alpha) (chi x))
+  (deflistener (cat (exp (gen) (mul (rec l) y alpha (rec w))) w))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y alpha) (y x) (y l-0) (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul (rec l) y alpha (rec w))) w))
+    (exp (gen) (mul (rec l) y alpha)) (1 3))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y alpha))
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) (mul (rec l) y alpha (rec w))) w))
+      (send (cat (exp (gen) (mul (rec l) y alpha (rec w))) w))))
+  (label 89)
+  (parent 85)
+  (unrealized (0 0) (5 0))
+  (comment "8 in cohort - 8 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l y rndx) (alpha expt)
+    (x l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y alpha)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha alpha) (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (precedes ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1)) ((4 3) (0 0))
+    ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (6 0)) ((6 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y alpha) (y (mul x l-0 (rec l-1))) (y l-1) (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x l-0)) l-1))
+    (exp (gen) (mul x l-0 (rec l-1))) (4 2))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y alpha))
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1))))
+  (label 90)
+  (parent 86)
+  (unrealized (1 3) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l y rndx) (alpha expt)
+    (x l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y alpha)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha alpha) (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul x (rec l-1))) l-0))
+  (precedes ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1)) ((4 3) (0 0))
+    ((4 3) (1 3)) ((5 1) (4 0)) ((6 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y alpha) (y (mul x l-0 (rec l-1))) (y l-1) (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x (rec l-1))) l-0))
+    (exp (gen) (mul x l-0 (rec l-1))) (4 2))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y alpha))
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul x (rec l-1))) l-0))
+      (send (cat (exp (gen) (mul x (rec l-1))) l-0))))
+  (label 91)
+  (parent 86)
+  (unrealized (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l y rndx) (alpha expt)
+    (x l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y alpha)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha alpha) (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l-0 (rec l-1))) x))
+  (precedes ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1)) ((4 3) (0 0))
+    ((4 3) (1 3)) ((5 1) (4 0)) ((6 1) (4 2)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y alpha) (y (mul x l-0 (rec l-1))) (y l-1) (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l-0 (rec l-1))) x))
+    (exp (gen) (mul x l-0 (rec l-1))) (4 2))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y alpha))
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul l-0 (rec l-1))) x))
+      (send (cat (exp (gen) (mul l-0 (rec l-1))) x))))
+  (label 92)
+  (parent 86)
+  (unrealized (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx)
+    (alpha chi expt) (l-1 y rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec l-1) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0)) ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y l-0) (y alpha) (y chi))
+  (gen-st (pv a l-1) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) y))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul l-0 chi))))))))
+  (label 93)
+  (parent 87)
+  (unrealized (0 0) (1 3) (5 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (beta expt)
+    (l-1 x-0 rndx))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec l-1) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-1) (x-0 l-0) (x-0 beta))
+  (gen-st (pv a l-1) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 94)
+  (parent 87)
+  (unrealized (0 0) (1 3) (5 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener (hash (gen) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (rec l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (gen) (exp (gen) (mul x l))))
+  (deflistener (cat (gen) (exp (gen) (mul x l))))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (contracted (eta (rec l-0)) (l-1 l-0)) (gen)
+    (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (gen) (exp (gen) (mul x l))))
+      (send (hash (gen) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (rec l-0))
+          (enc na nb a b (hash (gen) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (gen) (exp (gen) (mul x l))))
+      (send (hash (gen) (exp (gen) (mul x l)))))
+    ((recv (cat (gen) (exp (gen) (mul x l))))
+      (send (cat (gen) (exp (gen) (mul x l))))))
+  (label 95)
+  (parent 87)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x rndx))
+  (deflistener (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) x) (exp (gen) (mul l-0 x))))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 1 init 3) (exp (gen) x-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) x) (exp (gen) (mul l-0 x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) x) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) x) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) x) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) x) (exp (gen) (mul l-0 x))))))
+  (label 96)
+  (parent 87)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) l-0) (exp (gen) (mul x l-0))))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 3 ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l-0))))))
+  (label 97)
+  (parent 87)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-0) (exp (gen) (mul x l))))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (4 0)) ((2 2) (1 1)) ((3 1) (1 3))
+    ((4 1) (3 0)) ((5 1) (1 0)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 2 6 ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 5 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (gen)
+          (enc na nb self b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l)))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 98)
+  (parent 87)
+  (unrealized (0 0) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-1) (exp (gen) (mul x l))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-1) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) l-1) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-1) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-1) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) l-1) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 99)
+  (parent 87)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (eta expt) (l l-0 rndx) (w expt))
+  (deflistener (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta eta))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul eta l (rec w))) w))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul eta l (rec w))) w))
+    (exp (gen) (mul eta l)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul eta l)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul eta l (rec w))) w))
+      (send (cat (exp (gen) (mul eta l (rec w))) w))))
+  (label 100)
+  (parent 87)
+  (unrealized (0 0) (5 0) (6 0))
+  (comment "7 in cohort - 7 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (1 3)) ((4 1) (1 0)) ((4 2) (3 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 2 5 ltx-gen 3) (exp (gen) l-0) (4 1))
+  (strand-map 0 1 4 2 3)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 101)
+  (parent 88)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x y rndx) (w expt))
+  (deflistener (hash (exp (gen) (mul l-0 y)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) (mul l-0 (rec w))) w))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y l-0) (y x))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l-0 (rec w))) w))
+    (exp (gen) l-0) (4 1))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul l-0 y)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul l-0 y)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 y)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 y)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) (mul l-0 (rec w))) w))
+      (send (cat (exp (gen) (mul l-0 (rec w))) w))))
+  (label 102)
+  (parent 88)
+  (unrealized (0 0) (5 0))
+  (comment "7 in cohort - 7 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l l-0 rndx)
+    (w expt) (x y rndx))
+  (deflistener (hash (exp (gen) (mul l-0 w y)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 w)) (chi x))
+  (deflistener (cat (exp (gen) y) w))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y (mul l-0 w)) (y x))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 4 resp 4) (exp (gen) y-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l-0 w y)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul l-0 w y)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 w y)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 w)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 w y)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
+  (label 103)
+  (parent 89)
+  (unrealized (0 0) (4 1))
+  (comment "8 in cohort - 8 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (beta expt)
+    (l-1 rndx) (w expt) (x-0 l-2 y x-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l-1 w x-0 y)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l) (eta (mul l-1 w x-0 (rec l-2) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-1 w x-0)) (chi x))
+  (deflistener
+    (cat (exp (gen) x-1) (mul l-1 w x-0 (rec l-2) y (rec x-1))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-1) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-2)
+  (uniq-gen x y x-1)
+  (absent (x l) (x l-2) (y x) (y l) (y (mul l-1 w x-0)) (x-1 l-0)
+    (x-1 beta))
+  (precur (5 0))
+  (gen-st (pv a l-2) (pv b l) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l-1 w x-0 y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul l-1 w x-0 y)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l-1 w x-0 (rec l-2) y))
+          (enc na nb a b
+            (hash (exp (gen) (mul l-1 w x-0 y))
+              (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-1 w x-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l-1 w x-0 y))
+              (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) x-1) (mul l-1 w x-0 (rec l-2) y (rec x-1))))
+      (send
+        (cat (exp (gen) x-1) (mul l-1 w x-0 (rec l-2) y (rec x-1)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-1)))))
+  (label 104)
+  (parent 89)
+  (unrealized (0 0) (1 3) (5 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l l-0 rndx)
+    (w expt) (l-1 y rndx))
+  (deflistener (hash (exp (gen) (mul l-0 w y)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul l-0 w (rec l-1) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 w)) (chi x))
+  (deflistener (cat (gen) (mul l-0 w (rec l-1) y)))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y x) (y l) (y (mul l-0 w)))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (l-2 l-1) (y-0 y) (alpha (mul l-0 w))
+      (w-0 (mul l-0 w (rec l-1) y)) (l-0 l-1) (y-1 y)
+      (w (mul l-0 w (rec l-1) y))) (gen) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l-0 w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul l-0 w y)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l-0 w (rec l-1) y))
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 w y)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 w)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 w y)) (exp (gen) (mul x l)))))))
+    ((recv (cat (gen) (mul l-0 w (rec l-1) y)))
+      (send (cat (gen) (mul l-0 w (rec l-1) y)))))
+  (label 105)
+  (parent 89)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (w expt)
+    (l l-0 x y l-1 x-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w l x y)) (exp (gen) (mul l-0 x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x-0) (beta l-0) (eta (mul w l x y (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul w l x)) (chi x-0))
+  (deflistener (cat (exp (gen) x-0) (mul w l x y (rec l-1) (rec x-0))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l-0 l-1)
+  (uniq-gen y x-0)
+  (absent (y (mul w l x)) (y l-0) (y x-0) (x-0 l-0) (x-0 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 1 init 3) (exp (gen) x-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul w l x y)) (exp (gen) (mul l-0 x-0))))
+      (send (hash (exp (gen) (mul w l x y)) (exp (gen) (mul l-0 x-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul w l x y (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l x y))
+              (exp (gen) (mul l-0 x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul w l x)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x-0)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul w l x y))
+              (exp (gen) (mul l-0 x-0)))))))
+    ((recv (cat (exp (gen) x-0) (mul w l x y (rec l-1) (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul w l x y (rec l-1) (rec x-0))))))
+  (label 106)
+  (parent 89)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 y l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul w l-0 l-0 y)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta l)
+    (eta (mul w l-0 l-0 y (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha (mul w l-0 l-0)) (chi x))
+  (deflistener
+    (cat (exp (gen) l-1) (mul w l-0 l-0 y (rec l-1) (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-1))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (4 0)) ((4 1) (1 3)) ((5 1) (1 0)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y x) (y l) (y (mul w l-0 l-0)))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-1))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 2 6 ltx-gen 3) (exp (gen) l-2) (5 0))
+  (strand-map 0 1 5 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul w l-0 l-0 y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-0 l-0 y)) (exp (gen) (mul x l)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w l-0 l-0 y (rec l-1)))
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0 l-0 y))
+              (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) (mul w l-0 l-0)) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0 l-0 y))
+              (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) l-1) (mul w l-0 l-0 y (rec l-1) (rec l-1))))
+      (send
+        (cat (exp (gen) l-1) (mul w l-0 l-0 y (rec l-1) (rec l-1)))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 107)
+  (parent 89)
+  (unrealized (0 0) (1 3) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx)
+    (alpha chi expt) (l-1 rndx) (w expt) (y l-2 y-0 y-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l-1 w y y-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l) (eta (mul l-1 w y (rec l-2) y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y-0) (alpha (mul l-1 w y)) (chi x))
+  (deflistener
+    (cat (exp (gen) y-1) (mul l-1 w y (rec l-2) y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-2)
+  (uniq-gen x y-0 y-1)
+  (absent (x l) (x l-2) (y-0 x) (y-0 l) (y-0 (mul l-1 w y)) (y-1 l-0)
+    (y-1 alpha) (y-1 chi))
+  (precur (5 0))
+  (gen-st (pv a l-2) (pv b l) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l-1 w y y-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul l-1 w y y-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l-1 w y (rec l-2) y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul l-1 w y y-0))
+              (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-1 w y)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb a b
+            (hash (exp (gen) (mul l-1 w y y-0))
+              (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y-1) (mul l-1 w y (rec l-2) y-0 (rec y-1))))
+      (send
+        (cat (exp (gen) y-1) (mul l-1 w y (rec l-2) y-0 (rec y-1)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul l-0 chi))))))))
+  (label 108)
+  (parent 89)
+  (unrealized (0 0) (1 3) (5 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 l-1 y l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l w l-0 y)) (exp (gen) (mul x l-2))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-2) (eta (mul l w l-0 (rec l-1) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-2))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-2) (y y) (alpha (mul l w l-0)) (chi x))
+  (deflistener
+    (cat (exp (gen) l-2) (mul l w l-0 (rec l-1) y (rec l-2))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l-1 l-2)
+  (uniq-gen x y)
+  (absent (x l-1) (x l-2) (y x) (y (mul l w l-0)) (y l-2))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv b l-2))
+  (facts (neq b a) (neq a b) (undisclosed l-2))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 3 ltx-gen 3) (exp (gen) l-3) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l w l-0 y)) (exp (gen) (mul x l-2))))
+      (send (hash (exp (gen) (mul l w l-0 y)) (exp (gen) (mul x l-2)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l w l-0 (rec l-1) y))
+          (enc na nb a b
+            (hash (exp (gen) (mul l w l-0 y))
+              (exp (gen) (mul x l-2)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-2)))
+      (send
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-2)))
+      (recv
+        (sig (body a (exp (gen) (mul l w l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l w l-0 y))
+              (exp (gen) (mul x l-2)))))))
+    ((recv (cat (exp (gen) l-2) (mul l w l-0 (rec l-1) y (rec l-2))))
+      (send (cat (exp (gen) l-2) (mul l w l-0 (rec l-1) y (rec l-2))))))
+  (label 109)
+  (parent 89)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (w expt)
+    (l-1 l-2 y l-3 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l-0 w l-1 y)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l) (eta (mul l-0 w l-1 (rec l-2) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 w l-1)) (chi x))
+  (deflistener
+    (cat (exp (gen) l-3) (mul l-0 w l-1 (rec l-2) y (rec l-3))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-3))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-2 l-3)
+  (uniq-gen x y)
+  (absent (x l) (x l-2) (y x) (y l) (y (mul l-0 w l-1)))
+  (precur (5 0))
+  (gen-st (pv a l-2) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-3) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l-0 w l-1 y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul l-0 w l-1 y)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l-0 w l-1 (rec l-2) y))
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 w l-1 y))
+              (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 w l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 w l-1 y))
+              (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) l-3) (mul l-0 w l-1 (rec l-2) y (rec l-3))))
+      (send
+        (cat (exp (gen) l-3) (mul l-0 w l-1 (rec l-2) y (rec l-3)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-3)))
+      (send
+        (sig (body self (exp (gen) l-3) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 110)
+  (parent 89)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l y rndx) (alpha expt)
+    (x l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y alpha)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha alpha) (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1)) ((4 3) (0 0))
+    ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0)) ((6 1) (4 2))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y alpha) (y (mul x l-0 (rec l-1))) (y l-1) (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (6 0)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y alpha))
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1)))
+  (label 111)
+  (parent 90)
+  (unrealized (1 3) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi expt) (y l-0 rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((2 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0))
+    ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0))))))))
+  (label 112)
+  (parent 93)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l y l-0 rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0))
+    ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0))))))))
+  (label 113)
+  (parent 93)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 y l-1 rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0)) ((6 3) (5 0))
+    ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) y))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 114)
+  (parent 93)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta expt) (x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((2 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 115)
+  (parent 94)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 116)
+  (parent 94)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0)) ((6 2) (5 0))
+    ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
+  (label 117)
+  (parent 94)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener (hash (gen) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (rec l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (gen) (exp (gen) (mul x l))))
+  (deflistener (cat (gen) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (gen) (exp (gen) (mul x l))))
+      (send (hash (gen) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (rec l-0))
+          (enc na nb a b (hash (gen) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (gen) (exp (gen) (mul x l))))
+      (send (hash (gen) (exp (gen) (mul x l)))))
+    ((recv (cat (gen) (exp (gen) (mul x l))))
+      (send (cat (gen) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 118)
+  (parent 95)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener (hash (gen) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (rec l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (gen) (exp (gen) (mul x l))))
+  (deflistener (cat (gen) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (gen) (exp (gen) (mul x l))))
+      (send (hash (gen) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (rec l-0))
+          (enc na nb a b (hash (gen) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (gen) (exp (gen) (mul x l))))
+      (send (hash (gen) (exp (gen) (mul x l)))))
+    ((recv (cat (gen) (exp (gen) (mul x l))))
+      (send (cat (gen) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 119)
+  (parent 95)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x rndx))
+  (deflistener (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) x) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul l-0 x)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) x) (exp (gen) (mul l-0 x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) x) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) x) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) x) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) x) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 120)
+  (parent 96)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x rndx))
+  (deflistener (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) x) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul l-0 x)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) x) (exp (gen) (mul l-0 x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) x) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) x) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) x) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) x) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 121)
+  (parent 96)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) l-0) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 122)
+  (parent 97)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) l-0) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 123)
+  (parent 97)
+  (unrealized (0 0) (1 3) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-0) (exp (gen) (mul x l))))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 2) (1 1)) ((3 1) (1 3))
+    ((4 1) (3 0)) ((5 1) (1 0)) ((5 2) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (gen)
+          (enc na nb self b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l)))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 124)
+  (parent 98)
+  (unrealized (0 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x l l-0 rndx))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-0) (exp (gen) (mul x l))))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 2) (1 1)) ((3 1) (1 3))
+    ((4 1) (3 0)) ((5 1) (1 0)) ((5 2) (4 0)) ((6 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (gen)
+          (enc na nb self b
+            (hash (exp (gen) l-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) l-0) (exp (gen) (mul x l)))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 125)
+  (parent 98)
+  (unrealized (0 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-1) (exp (gen) (mul x l))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-1) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) l-1) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-1) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-1) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) l-1) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 126)
+  (parent 99)
+  (unrealized (0 0) (1 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-1) (exp (gen) (mul x l))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-1) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) l-1) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) l-1) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) l-1) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-1) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) l-1) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 127)
+  (parent 99)
+  (unrealized (0 0) (1 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (beta expt)
+    (l-1 rndx) (w expt) (x-0 rndx))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec l-1) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 2) (0 0))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-1) (x-0 l-0) (x-0 beta))
+  (precur (6 0))
+  (gen-st (pv a l-1) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 128)
+  (parent 100)
+  (unrealized (0 0) (1 3) (5 0) (7 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (w expt)
+    (l l-0 x rndx))
+  (deflistener (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul w (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) x) w))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 1 init 3) (exp (gen) x-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w))))
+  (label 129)
+  (parent 100)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l l-0 rndx)
+    (w expt))
+  (deflistener (hash (exp (gen) w) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) w) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) w) (exp (gen) (mul x l))))
+  (deflistener (cat (gen) w))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (eta (mul (rec l-0) w)) (l-1 l-0) (w-0 w)) (gen) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) w) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) w) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w))
+          (enc na nb a b (hash (exp (gen) w) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) w) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) w) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) w) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) w) (exp (gen) (mul x l)))))
+    ((recv (cat (gen) w)) (send (cat (gen) w))))
+  (label 130)
+  (parent 100)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta w))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (4 0)) ((2 2) (1 1)) ((3 1) (1 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (1 0)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 2 7 ltx-gen 3) (exp (gen) l-1) (6 0))
+  (strand-map 0 1 6 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) w)
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 131)
+  (parent 100)
+  (unrealized (0 0) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx)
+    (alpha chi expt) (l-1 rndx) (w expt) (y rndx))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul (rec l-1) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 3) (0 0))
+    ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y l-0) (y alpha) (y chi))
+  (precur (6 0))
+  (gen-st (pv a l-1) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul l-0 chi))))))))
+  (label 132)
+  (parent 100)
+  (unrealized (0 0) (1 3) (5 0) (7 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((3 2) (6 0)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 3 ltx-gen 3) (exp (gen) l-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w))))
+  (label 133)
+  (parent 100)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (w expt)
+    (l-1 rndx))
+  (deflistener (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-1) w))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-1) w)) (send (cat (exp (gen) l-1) w)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 134)
+  (parent 100)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (5 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))) (0 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))))
+  (label 135)
+  (parent 101)
+  (unrealized (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 rndx)
+    (beta expt) (l-1 x-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-1) (chi x))
+  (deflistener (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-1)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-1) (y l) (y x) (y l-1) (x-0 l-0) (x-0 beta))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv b l) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-1 (rec x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 136)
+  (parent 102)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y l l-0 x rndx))
+  (deflistener (hash (exp (gen) (mul y l)) (exp (gen) (mul l-0 x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (deflistener (cat (exp (gen) x) (mul l (rec x))))
+  (precedes ((1 2) (5 0)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y l) (y l-0) (y x) (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 1 init 3) (exp (gen) x-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y l)) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) (mul y l)) (exp (gen) (mul l-0 x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul l-0 x)))))))
+    ((recv (cat (exp (gen) x) (mul l (rec x))))
+      (send (cat (exp (gen) x) (mul l (rec x))))))
+  (label 137)
+  (parent 102)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (gen) l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (5 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (contracted (l-1 l-0) (w l-0)) (gen) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0))))
+  (label 138)
+  (parent 102)
+  (unrealized (0 0) (5 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (1 3)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 2 6 ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 5 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 139)
+  (parent 102)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 rndx)
+    (alpha chi expt) (l-1 y-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-1) (chi x))
+  (deflistener (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)) ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-1)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-1) (y l) (y x) (y l-1) (y-0 l-0) (y-0 alpha)
+    (y-0 chi))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv b l) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-1 (rec y-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul l-0 chi))))))))
+  (label 140)
+  (parent 102)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x y l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (deflistener (cat (exp (gen) l-0) (mul l (rec l-0))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((3 2) (5 0)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y x) (y l) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 3 ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) l-0) (mul l (rec l-0))))
+      (send (cat (exp (gen) l-0) (mul l (rec l-0))))))
+  (label 141)
+  (parent 102)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)) ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul l-0 (rec l-1)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 142)
+  (parent 102)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 rndx)
+    (alpha chi expt) (l-1 y-0 rndx))
+  (deflistener (hash (exp (gen) (mul y y-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y (rec l-1) y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha y-0) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-1) y-0)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 3) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-1)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-1) (y l) (y x) (y y-0) (y-0 l-0) (y-0 alpha)
+    (y-0 chi))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv b l) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y-0) (4 1))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y y-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y y-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-1) y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y y-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) y-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y y-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-1) y-0)))
+      (send (cat (exp (gen) y) (mul (rec l-1) y-0))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul l-0 chi))))))))
+  (label 143)
+  (parent 103)
+  (unrealized (0 0) (1 3) (5 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 rndx)
+    (beta expt) (l-1 x-0 rndx))
+  (deflistener (hash (exp (gen) (mul y x-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y (rec l-1) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha x-0) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-1) x-0)))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 2) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-1)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-1) (y l) (y x) (y x-0) (x-0 l-0) (x-0 beta))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv b l) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (4 1))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y x-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y x-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-1) x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y x-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) x-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y x-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-1) x-0)))
+      (send (cat (exp (gen) y) (mul (rec l-1) x-0))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 144)
+  (parent 103)
+  (unrealized (0 0) (1 3) (5 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (one)) (chi x))
+  (deflistener (cat (exp (gen) y) (rec l-0)))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (one)) (y l) (y x))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (contracted (l-1 l-0) (w (rec l-0))) (gen)
+    (4 1))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) y) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv (sig (body a (gen) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (rec l-0)))
+      (send (cat (exp (gen) y) (rec l-0)))))
+  (label 145)
+  (parent 103)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y l l-0 x rndx))
+  (deflistener (hash (exp (gen) (mul y x)) (exp (gen) (mul l-0 x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha x) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) x)))
+  (precedes ((1 2) (4 1)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y l-0) (y x) (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 1 init 3) (exp (gen) x-0) (4 1))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y x)) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) (mul y x)) (exp (gen) (mul l-0 x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) (mul y x)) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) x) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y x)) (exp (gen) (mul l-0 x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) x)))
+      (send (cat (exp (gen) y) (mul (rec l) x)))))
+  (label 146)
+  (parent 103)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x y l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y (rec l) l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) l-0)))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((3 2) (4 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y x) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 3 ltx-gen 3) (exp (gen) l-1) (4 1))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) l-0)))
+      (send (cat (exp (gen) y) (mul (rec l) l-0)))))
+  (label 147)
+  (parent 103)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (4 0)) ((4 1) (1 3)) ((5 1) (1 0)) ((5 2) (3 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 2 6 ltx-gen 3) (exp (gen) l-1) (4 1))
+  (strand-map 0 1 5 2 3 4)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 148)
+  (parent 103)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-1) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) l-1)))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 2) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (4 1))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) l-1)))
+      (send (cat (exp (gen) y) (mul (rec l-0) l-1))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 149)
+  (parent 103)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l l-0 rndx)
+    (w expt) (x y rndx) (w-0 expt))
+  (deflistener (hash (exp (gen) (mul l-0 w y)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 w)) (chi x))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (exp (gen) (mul l-0 w (rec w-0))) w-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y (mul l-0 w)) (y x))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l-0 w (rec w-0))) w-0))
+    (exp (gen) (mul l-0 w)) (4 1))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul l-0 w y)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul l-0 w y)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 w y)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 w)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 w y)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (exp (gen) (mul l-0 w (rec w-0))) w-0))
+      (send (cat (exp (gen) (mul l-0 w (rec w-0))) w-0))))
+  (label 150)
+  (parent 103)
+  (unrealized (0 0) (6 0))
+  (comment "7 in cohort - 7 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta expt) (l-0 rndx) (w expt) (x-0 y x-1 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l-0 w x-0 y)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul l-0 w x-0 y (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 w x-0)) (chi x))
+  (deflistener
+    (cat (exp (gen) x-1) (mul l-0 w x-0 y (rec x-1) (rec l-1))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-1) (x x-1) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-1)
+  (uniq-gen x y x-1)
+  (absent (x l) (x l-1) (y x) (y l) (y (mul l-0 w x-0)) (x-1 beta)
+    (x-1 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-2))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l-0 w x-0 y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul l-0 w x-0 y)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l-0 w x-0 y (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 w x-0 y))
+              (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 w x-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 w x-0 y))
+              (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) x-1) (mul l-0 w x-0 y (rec x-1) (rec l-1))))
+      (send
+        (cat (exp (gen) x-1) (mul l-0 w x-0 y (rec x-1) (rec l-1)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-1)))))
+  (label 151)
+  (parent 104)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l rndx) (w expt) (x-0 l-0 y x-1 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l w x-0 y)) (exp (gen) (mul x l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul l w x-0 (rec l-0) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-1) (y y) (alpha (mul l w x-0)) (chi x))
+  (deflistener
+    (cat (exp (gen) x-1) (mul l w x-0 (rec l-0) y (rec x-1))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-1) (x x-1) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l-0 l-1)
+  (uniq-gen x y x-1)
+  (absent (x l-0) (x l-1) (y x) (y (mul l w x-0)) (y l-1) (x-1 beta)
+    (x-1 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l-1))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-2))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l w x-0 y)) (exp (gen) (mul x l-1))))
+      (send (hash (exp (gen) (mul l w x-0 y)) (exp (gen) (mul x l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l w x-0 (rec l-0) y))
+          (enc na nb a b
+            (hash (exp (gen) (mul l w x-0 y))
+              (exp (gen) (mul x l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l w x-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l w x-0 y))
+              (exp (gen) (mul x l-1)))))))
+    ((recv (cat (exp (gen) x-1) (mul l w x-0 (rec l-0) y (rec x-1))))
+      (send (cat (exp (gen) x-1) (mul l w x-0 (rec l-0) y (rec x-1)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-1)))))
+  (label 152)
+  (parent 104)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 rndx) (w expt) (x-0 l-1 y x-1 l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l-0 w x-0 y)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul l-0 w x-0 (rec l-1) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 w x-0)) (chi x))
+  (deflistener
+    (cat (exp (gen) x-1) (mul l-0 w x-0 (rec l-1) y (rec x-1))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-2) (x x-1) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-2))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 2) (5 0))
+    ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-1 l-2)
+  (uniq-gen x y x-1)
+  (absent (x l) (x l-1) (y x) (y l) (y (mul l-0 w x-0)) (x-1 beta)
+    (x-1 l-2))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv b l) (pv a-0 l-2))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-2))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l-0 w x-0 y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul l-0 w x-0 y)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l-0 w x-0 (rec l-1) y))
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 w x-0 y))
+              (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 w x-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 w x-0 y))
+              (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) x-1) (mul l-0 w x-0 (rec l-1) y (rec x-1))))
+      (send
+        (cat (exp (gen) x-1) (mul l-0 w x-0 (rec l-1) y (rec x-1)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-2)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-1))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-2)))))
+  (label 153)
+  (parent 104)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi expt) (l-0 rndx) (w expt) (y y-0 y-1 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l-0 w y y-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul l-0 w y y-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y-0) (alpha (mul l-0 w y)) (chi x))
+  (deflistener
+    (cat (exp (gen) y-1) (mul l-0 w y y-0 (rec y-1) (rec l-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-1) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-1)
+  (uniq-gen x y-0 y-1)
+  (absent (x l) (x l-1) (y-0 x) (y-0 l) (y-0 (mul l-0 w y)) (y-1 alpha)
+    (y-1 chi) (y-1 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-2))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l-0 w y y-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul l-0 w y y-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l-0 w y y-0 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 w y y-0))
+              (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 w y)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 w y y-0))
+              (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y-1) (mul l-0 w y y-0 (rec y-1) (rec l-1))))
+      (send
+        (cat (exp (gen) y-1) (mul l-0 w y y-0 (rec y-1) (rec l-1)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi l-1))))))))
+  (label 154)
+  (parent 108)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l rndx) (w expt) (y l-0 y-0 y-1 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l w y y-0)) (exp (gen) (mul x l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul l w y (rec l-0) y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-1) (y y-0) (alpha (mul l w y)) (chi x))
+  (deflistener
+    (cat (exp (gen) y-1) (mul l w y (rec l-0) y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-1) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l-0 l-1)
+  (uniq-gen x y-0 y-1)
+  (absent (x l-0) (x l-1) (y-0 x) (y-0 (mul l w y)) (y-0 l-1)
+    (y-1 alpha) (y-1 chi) (y-1 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l-1))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-2))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l w y y-0)) (exp (gen) (mul x l-1))))
+      (send (hash (exp (gen) (mul l w y y-0)) (exp (gen) (mul x l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l w y (rec l-0) y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul l w y y-0))
+              (exp (gen) (mul x l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l w y)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb a b
+            (hash (exp (gen) (mul l w y y-0))
+              (exp (gen) (mul x l-1)))))))
+    ((recv (cat (exp (gen) y-1) (mul l w y (rec l-0) y-0 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul l w y (rec l-0) y-0 (rec y-1)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi l-1))))))))
+  (label 155)
+  (parent 108)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 rndx) (w expt) (y l-1 y-0 y-1 l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul l-0 w y y-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul l-0 w y (rec l-1) y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y-0) (alpha (mul l-0 w y)) (chi x))
+  (deflistener
+    (cat (exp (gen) y-1) (mul l-0 w y (rec l-1) y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-2) (y y-1) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-2))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 3) (5 0))
+    ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-1 l-2)
+  (uniq-gen x y-0 y-1)
+  (absent (x l) (x l-1) (y-0 x) (y-0 l) (y-0 (mul l-0 w y)) (y-1 alpha)
+    (y-1 chi) (y-1 l-2))
+  (precur (5 0))
+  (gen-st (pv a l-1) (pv b l) (pv b-0 l-2))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-2))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul l-0 w y y-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul l-0 w y y-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l-0 w y (rec l-1) y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 w y y-0))
+              (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 w y)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb a b
+            (hash (exp (gen) (mul l-0 w y y-0))
+              (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y-1) (mul l-0 w y (rec l-1) y-0 (rec y-1))))
+      (send
+        (cat (exp (gen) y-1) (mul l-0 w y (rec l-1) y-0 (rec y-1)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-2)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi l-2)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-2)))))
+  (label 156)
+  (parent 108)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l y rndx) (alpha expt)
+    (x l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y alpha)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha alpha) (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (8 0)) ((2 1) (1 0)) ((3 2) (1 1)) ((4 3) (0 0))
+    ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0)) ((6 1) (4 2))
+    ((7 2) (6 0)) ((8 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y alpha) (y (mul x l-0 (rec l-1))) (y l-1) (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y alpha))
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 157)
+  (parent 111)
+  (unrealized (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l y rndx) (alpha expt)
+    (x l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y alpha)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha alpha) (chi (mul x l-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul x l-0)) l-1))
+  (defstrand ltx-disclose 3 (self b) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (8 0)) ((2 1) (1 0)) ((3 2) (1 1)) ((4 3) (0 0))
+    ((4 3) (1 3)) ((5 1) (4 0)) ((5 1) (7 0)) ((6 1) (4 2))
+    ((7 2) (6 0)) ((8 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y alpha) (y (mul x l-0 (rec l-1))) (y l-1) (x l) (x l-0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)) ((5 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y alpha))
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1))))
+    ((recv (cat (exp (gen) (mul x l-0)) l-1))
+      (send (cat (exp (gen) (mul x l-0)) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b l-1)))
+      (stor priv-stor-1 (cat pt-5 "nil")) (send l-1))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 158)
+  (parent 111)
+  (unrealized (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi expt) (y l-0 rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((2 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0))
+    ((6 3) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0)))))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 159)
+  (parent 112)
+  (unrealized (0 0) (1 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi expt) (y l-0 rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((2 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0))
+    ((6 3) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0)))))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 160)
+  (parent 112)
+  (unrealized (0 0) (1 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l y l-0 rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0))
+    ((6 3) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0)))))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 161)
+  (parent 113)
+  (unrealized (0 0) (1 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l y l-0 rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0))
+    ((6 3) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y))
+          (enc na nb a b
+            (hash (exp (gen) y) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0)))))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 162)
+  (parent 113)
+  (unrealized (0 0) (1 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 y l-1 rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0)) ((6 3) (5 0))
+    ((7 1) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) y))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 163)
+  (parent 114)
+  (unrealized (0 0) (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 y l-1 rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul x l))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 3) (0 0)) ((6 3) (5 0))
+    ((7 1) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) y))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) y) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) y) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 164)
+  (parent 114)
+  (unrealized (0 0) (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta expt) (x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((2 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0))
+    ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 165)
+  (parent 115)
+  (unrealized (0 0) (1 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta expt) (x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((2 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0))
+    ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 166)
+  (parent 115)
+  (unrealized (0 0) (1 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0))
+    ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 167)
+  (parent 116)
+  (unrealized (0 0) (1 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0))
+    ((6 2) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 168)
+  (parent 116)
+  (unrealized (0 0) (1 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0)) ((6 2) (5 0))
+    ((7 1) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 169)
+  (parent 117)
+  (unrealized (0 0) (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 2) (0 0)) ((6 2) (5 0))
+    ((7 1) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) x-0))
+          (enc na nb a b
+            (hash (exp (gen) x-0) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) x-0) (exp (gen) (mul x l)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 170)
+  (parent 117)
+  (unrealized (0 0) (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta w expt) (x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 2) (0 0)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 171)
+  (parent 128)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l rndx) (w expt) (x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 2) (0 0)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 172)
+  (parent 128)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 rndx) (w expt) (x-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 2) (0 0))
+    ((7 2) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (6 0))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
+  (label 173)
+  (parent 128)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (w expt)
+    (l l-0 x rndx))
+  (deflistener (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul w (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) x) w))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((1 2) (7 0)) ((2 1) (1 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul l-0 x)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w)))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 174)
+  (parent 129)
+  (unrealized (0 0) (1 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (w expt)
+    (l l-0 x rndx))
+  (deflistener (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul w (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) x) w))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (6 0)) ((1 2) (7 0)) ((2 1) (1 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul l-0 x)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) (mul w x)) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w)))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 175)
+  (parent 129)
+  (unrealized (0 0) (1 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l l-0 rndx)
+    (w expt))
+  (deflistener (hash (exp (gen) w) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) w) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) w) (exp (gen) (mul x l))))
+  (deflistener (cat (gen) w))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) w) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) w) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w))
+          (enc na nb a b (hash (exp (gen) w) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) w) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) w) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) w) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) w) (exp (gen) (mul x l)))))
+    ((recv (cat (gen) w)) (send (cat (gen) w)))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 176)
+  (parent 130)
+  (unrealized (0 0) (1 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l l-0 rndx)
+    (w expt))
+  (deflistener (hash (exp (gen) w) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) w) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) w) (exp (gen) (mul x l))))
+  (deflistener (cat (gen) w))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) w) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) w) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w))
+          (enc na nb a b (hash (exp (gen) w) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) w) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) w) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) w) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) w) (exp (gen) (mul x l)))))
+    ((recv (cat (gen) w)) (send (cat (gen) w)))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 177)
+  (parent 130)
+  (unrealized (0 0) (1 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta w))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 2) (1 1)) ((3 1) (1 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (1 0)) ((6 2) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) w)
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 178)
+  (parent 131)
+  (unrealized (0 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta w))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 2) (1 1)) ((3 1) (1 3))
+    ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (1 0)) ((6 2) (5 0))
+    ((7 1) (4 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (5 0))
+  (gen-st (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (4 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) w)
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 179)
+  (parent 131)
+  (unrealized (0 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi w expt) (y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 3) (0 0)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0))))))))
+  (label 180)
+  (parent 132)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l rndx) (w expt) (y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 3) (0 0)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0))))))))
+  (label 181)
+  (parent 132)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 rndx) (w expt) (y l-1 rndx))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (0 0)) ((1 2) (5 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 3) (0 0))
+    ((7 3) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (precur (6 0))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 182)
+  (parent 132)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((3 2) (6 0)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 183)
+  (parent 133)
+  (unrealized (0 0) (1 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) l-0) w))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (0 0)) ((1 2) (7 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((3 2) (6 0)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w l-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 184)
+  (parent 133)
+  (unrealized (0 0) (1 3) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (w expt)
+    (l-1 rndx))
+  (deflistener (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-1) w))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 2) (6 0))
+    ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-1) w)) (send (cat (exp (gen) l-1) w)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 185)
+  (parent 134)
+  (unrealized (0 0) (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l l-0 rndx) (w expt)
+    (l-1 rndx))
+  (deflistener (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) l-1) w))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 2) (6 0))
+    ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na l l-0 l-1)
+  (uniq-gen x)
+  (absent (x l) (x l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w l-1)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) l-1) w)) (send (cat (exp (gen) l-1) w)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 186)
+  (parent 134)
+  (unrealized (0 0) (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (6 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (0 0))
+    ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) y) l-0))
+    (exp (gen) (mul y l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0))))
+  (label 187)
+  (parent 135)
+  (unrealized (5 0) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) l-0) y))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (6 0)) ((4 1) (1 0)) ((4 2) (3 1)) ((5 1) (0 0))
+    ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) y))
+    (exp (gen) (mul y l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) l-0) y)) (send (cat (exp (gen) l-0) y))))
+  (label 188)
+  (parent 135)
+  (unrealized (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (beta expt) (x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) x-0) (mul (rec x-0) l-0)))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) x-0) (mul (rec x-0) l-0)))
+      (send (cat (exp (gen) x-0) (mul (rec x-0) l-0))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 189)
+  (parent 136)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (deflistener (cat (exp (gen) x-0) (mul l (rec x-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y x) (y l) (y l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) x-0) (mul l (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l (rec x-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 190)
+  (parent 136)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)) ((6 2) (5 0))
+    ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0) (x-0 beta) (x-0 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-0 (rec x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
+  (label 191)
+  (parent 136)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (gen) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (5 0)
+    (ch-msg priv-stor (cat pt (pv a l-0))))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0)))
+  (label 192)
+  (parent 138)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (6 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))) (0 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))))
+  (label 193)
+  (parent 139)
+  (unrealized (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (alpha chi expt) (y-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y-0) (mul (rec y-0) l-0)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1))
+    ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0) (y-0 alpha) (y-0 chi)
+    (y-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y-0) (mul (rec y-0) l-0)))
+      (send (cat (exp (gen) y-0) (mul (rec y-0) l-0))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-0))))))))
+  (label 194)
+  (parent 140)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (alpha chi expt) (l y-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (deflistener (cat (exp (gen) y-0) (mul l (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1))
+    ((6 3) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y x) (y l) (y l-0) (y-0 alpha) (y-0 chi)
+    (y-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y-0) (mul l (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l (rec y-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-0))))))))
+  (label 195)
+  (parent 140)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx)
+    (alpha chi expt) (l-0 y-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (1 3)) ((5 1) (4 1)) ((6 3) (5 0))
+    ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0) (y-0 alpha) (y-0 chi)
+    (y-0 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-0 (rec y-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 196)
+  (parent 140)
+  (unrealized (0 0) (4 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (alpha chi expt) (y-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y y-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y y-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha y-0) (chi x))
+  (deflistener (cat (exp (gen) y) (mul y-0 (rec l-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 3) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y l) (y x) (y y-0) (y-0 alpha) (y-0 chi)
+    (y-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y y-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y y-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y y-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y y-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) y-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y y-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul y-0 (rec l-0))))
+      (send (cat (exp (gen) y) (mul y-0 (rec l-0)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-0))))))))
+  (label 197)
+  (parent 143)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (alpha chi expt) (l y-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y y-0)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y (rec l) y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha y-0) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) y-0)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 3) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y x) (y y-0) (y l-0) (y-0 alpha) (y-0 chi)
+    (y-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y y-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y y-0)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y y-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) y-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y y-0)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) y-0)))
+      (send (cat (exp (gen) y) (mul (rec l) y-0))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-0))))))))
+  (label 198)
+  (parent 143)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx)
+    (alpha chi expt) (l-0 y-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y y-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0) y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha y-0) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) y-0)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 3) (4 1))
+    ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y l) (y x) (y y-0) (y-0 alpha) (y-0 chi)
+    (y-0 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y y-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y y-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y y-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) y-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y y-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) y-0)))
+      (send (cat (exp (gen) y) (mul (rec l-0) y-0))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 199)
+  (parent 143)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (beta expt) (x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y x-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha x-0) (chi x))
+  (deflistener (cat (exp (gen) y) (mul x-0 (rec l-0))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 2) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y l) (y x) (y x-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y x-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y x-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y x-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) x-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y x-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul x-0 (rec l-0))))
+      (send (cat (exp (gen) y) (mul x-0 (rec l-0)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 200)
+  (parent 144)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y x-0)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y (rec l) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha x-0) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) x-0)))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 2) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y x) (y x-0) (y l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y x-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y x-0)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y x-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) x-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y x-0)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) x-0)))
+      (send (cat (exp (gen) y) (mul (rec l) x-0))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 201)
+  (parent 144)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y x-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha x-0) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) x-0)))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 2) (4 1))
+    ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y l) (y x) (y x-0) (x-0 beta) (x-0 l-1))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((7 1) (6 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y x-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y x-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y x-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) x-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y x-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) x-0)))
+      (send (cat (exp (gen) y) (mul (rec l-0) x-0))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
+  (label 202)
+  (parent 144)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (one)) (chi x))
+  (deflistener (cat (exp (gen) y) (rec l-0)))
+  (deflistener l-0)
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (one)) (y l) (y x))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener l-0) (rec l-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) y) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv (sig (body a (gen) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (rec l-0)))
+      (send (cat (exp (gen) y) (rec l-0)))) ((recv l-0) (send l-0)))
+  (label 203)
+  (parent 145)
+  (unrealized (0 0) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (6 0)) ((4 1) (1 3)) ((5 1) (1 0)) ((5 2) (3 1))
+    ((6 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))) (0 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))))
+  (label 204)
+  (parent 148)
+  (unrealized (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 rndx)
+    (beta expt) (l-1 rndx) (w expt) (x-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y (rec l-1) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w x-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-1) w x-0)))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-1)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul w x-0)) (x-0 l-0)
+    (x-0 beta))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-1) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w x-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-1) w x-0)))
+      (send (cat (exp (gen) y) (mul (rec l-1) w x-0))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 a-0 b-0 (exp (gen) x-0)))))
+  (label 205)
+  (parent 150)
+  (unrealized (0 0) (1 3) (5 0) (7 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (w expt) (l l-0 x rndx))
+  (deflistener (hash (exp (gen) (mul y w x)) (exp (gen) (mul l-0 x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y w (rec l) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul w x)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w (rec l) x)))
+  (deflistener (cat (exp (gen) x) w))
+  (precedes ((1 2) (6 0)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y (mul w x)) (y l-0) (y x) (x l) (x l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 1 init 3) (exp (gen) x-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y w x)) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) (mul y w x)) (exp (gen) (mul l-0 x)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w (rec l) x))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x)) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul w x)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x)) (exp (gen) (mul l-0 x)))))))
+    ((recv (cat (exp (gen) y) (mul w (rec l) x)))
+      (send (cat (exp (gen) y) (mul w (rec l) x))))
+    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w))))
+  (label 206)
+  (parent 150)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "4 in cohort - 4 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx) (w expt))
+  (deflistener (hash (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha w) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) w)))
+  (deflistener (cat (gen) w))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y w))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (l-1 l-0) (w-0 (mul (rec l-0) w)) (w-1 w)) (gen) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) w))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv (sig (body a (exp (gen) w) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) w)))
+      (send (cat (exp (gen) y) (mul (rec l-0) w))))
+    ((recv (cat (gen) w)) (send (cat (gen) w))))
+  (label 207)
+  (parent 150)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "6 in cohort - 6 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (mul y w)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha (mul w l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (exp (gen) l-0) w))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (0 0))
+    ((3 3) (4 0)) ((4 1) (1 3)) ((5 1) (3 1)) ((6 1) (1 0))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w l-0)))
+  (precur (4 0) (5 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 2 7 ltx-gen 3) (exp (gen) l-1) (6 0))
+  (strand-map 0 1 6 2 3 4 5)
+  (traces
+    ((recv (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w))
+          (enc na nb self b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) (mul w l-0)) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 208)
+  (parent 150)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 rndx)
+    (alpha chi expt) (l-1 rndx) (w expt) (y-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y (rec l-1) w y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w y-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-1) w y-0)))
+  (deflistener (cat (exp (gen) y-0) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-1)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul w y-0)) (y-0 l-0)
+    (y-0 alpha) (y-0 chi))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-1) w y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w y-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-1) w y-0)))
+      (send (cat (exp (gen) y) (mul (rec l-1) w y-0))))
+    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul l-0 chi))))))))
+  (label 209)
+  (parent 150)
+  (unrealized (0 0) (1 3) (5 0) (7 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y l rndx)
+    (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y (rec l) w l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul w l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) w l-0)))
+  (deflistener (cat (exp (gen) l-0) w))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((3 2) (6 0)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y x) (y (mul w l-0)) (y l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 3 ltx-gen 3) (exp (gen) l-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) w l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul w l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w l-0)))
+      (send (cat (exp (gen) y) (mul (rec l) w l-0))))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w))))
+  (label 210)
+  (parent 150)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "6 in cohort - 6 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 rndx) (w expt)
+    (l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y w l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0) w l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) w l-1)))
+  (deflistener (cat (exp (gen) l-1) w))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y w l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) w l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) w l-1)))
+      (send (cat (exp (gen) y) (mul (rec l-0) w l-1))))
+    ((recv (cat (exp (gen) l-1) w)) (send (cat (exp (gen) l-1) w)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 211)
+  (parent 150)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "7 in cohort - 7 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta w expt) (x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 2) (0 0)) ((7 2) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 212)
+  (parent 171)
+  (unrealized (0 0) (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (beta w expt) (x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 2) (0 0)) ((7 2) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 213)
+  (parent 171)
+  (unrealized (0 0) (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l rndx) (w expt) (x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 2) (0 0)) ((7 2) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 214)
+  (parent 172)
+  (unrealized (0 0) (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l rndx) (w expt) (x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 2) (0 0)) ((7 2) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-0))
+  (precur (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 215)
+  (parent 172)
+  (unrealized (0 0) (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 rndx) (w expt) (x-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (9 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 2) (0 0))
+    ((7 2) (6 0)) ((8 1) (7 0)) ((9 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (6 0))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 216)
+  (parent 173)
+  (unrealized (0 0) (1 3) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (beta expt)
+    (l-0 rndx) (w expt) (x-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (9 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 2) (0 0))
+    ((7 2) (6 0)) ((8 1) (7 0)) ((9 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na na-0 l l-0 l-1)
+  (uniq-gen x x-0)
+  (absent (x l) (x l-0) (x-0 beta) (x-0 l-1))
+  (precur (6 0))
+  (gen-st (pv a l-0) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w x-0)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 217)
+  (parent 173)
+  (unrealized (0 0) (1 3) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi w expt) (y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 3) (0 0)) ((7 3) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0)))))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 218)
+  (parent 180)
+  (unrealized (0 0) (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (alpha chi w expt) (y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul w y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 3) (0 0)) ((7 3) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (6 0))
+  (gen-st (pv a l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0)))))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 219)
+  (parent 180)
+  (unrealized (0 0) (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l rndx) (w expt) (y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 3) (0 0)) ((7 3) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0)))))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 220)
+  (parent 181)
+  (unrealized (0 0) (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l rndx) (w expt) (y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul (rec l) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y) (alpha alpha) (chi chi))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (0 0)) ((1 2) (8 0)) ((2 1) (1 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 3) (0 0)) ((7 3) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-0))
+  (precur (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul x l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0)))))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 221)
+  (parent 181)
+  (unrealized (0 0) (1 3) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 rndx) (w expt) (y l-1 rndx))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (0 0)) ((1 2) (9 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 3) (0 0))
+    ((7 3) (6 0)) ((8 1) (7 0)) ((9 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (precur (6 0))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 222)
+  (parent 182)
+  (unrealized (0 0) (1 3) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x l rndx) (alpha chi expt)
+    (l-0 rndx) (w expt) (y l-1 rndx))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul (rec l-0) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+  (deflistener (cat (exp (gen) y) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (0 0)) ((1 2) (9 0)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)) ((7 3) (0 0))
+    ((7 3) (6 0)) ((8 1) (7 0)) ((9 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb-0 l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y alpha) (y chi) (y l-1))
+  (precur (6 0))
+  (gen-st (pv a l-0) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul x l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w y))
+          (enc na nb a b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul x l))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul x l)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 223)
+  (parent 182)
+  (unrealized (0 0) (1 3) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (6 0)) ((4 1) (1 0)) ((4 1) (7 0)) ((4 2) (3 1))
+    ((5 1) (0 0)) ((6 1) (5 0)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)) ((4 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (6 0)
+    (ch-msg priv-stor-0 (cat pt-2 (pv self l-0))))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l-0)))
+  (label 224)
+  (parent 187)
+  (unrealized (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (gen) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (1 3)) ((4 3) (7 0)) ((5 1) (4 1))
+    ((6 2) (5 0)) ((7 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))) (0 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))))
+  (label 225)
+  (parent 192)
+  (unrealized (7 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (7 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (0 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) y) l-0))
+    (exp (gen) (mul y l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0))))
+  (label 226)
+  (parent 193)
+  (unrealized (6 0) (7 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) l-0) y))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (7 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 2) (4 0))
+    ((6 1) (0 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) y))
+    (exp (gen) (mul y l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) l-0) y)) (send (cat (exp (gen) l-0) y))))
+  (label 227)
+  (parent 193)
+  (unrealized (6 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (one)) (chi x))
+  (deflistener (cat (exp (gen) y) (rec l-0)))
+  (deflistener l-0)
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (5 0)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (one)) (y l) (y x))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (6 0)
+    (ch-msg priv-stor (cat pt (pv a l-0))))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) y) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv (sig (body a (gen) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (rec l-0)))
+      (send (cat (exp (gen) y) (rec l-0)))) ((recv l-0) (send l-0))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0)))
+  (label 228)
+  (parent 203)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (7 0)) ((4 1) (1 3)) ((5 1) (1 0)) ((5 2) (3 1))
+    ((6 1) (0 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) y) l-0))
+    (exp (gen) (mul y l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0))))
+  (label 229)
+  (parent 204)
+  (unrealized (6 0) (7 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) l-0) y))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (7 0)) ((4 1) (1 3)) ((5 1) (1 0)) ((5 2) (3 1))
+    ((6 1) (0 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) y))
+    (exp (gen) (mul y l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) l-0) y)) (send (cat (exp (gen) l-0) y))))
+  (label 230)
+  (parent 204)
+  (unrealized (6 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (beta w expt) (x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w x-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w x-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w x-0 (rec l-0))))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w x-0)) (x-0 beta)
+    (x-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w x-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w x-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w x-0 (rec l-0))))
+      (send (cat (exp (gen) y) (mul w x-0 (rec l-0)))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 231)
+  (parent 205)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "5 in cohort - 5 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (beta expt) (l rndx) (w expt) (x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y (rec l) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul w x-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) w x-0)))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y x) (y (mul w x-0)) (y l-0) (x-0 beta)
+    (x-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul w x-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w x-0)))
+      (send (cat (exp (gen) y) (mul (rec l) w x-0))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 232)
+  (parent 205)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "5 in cohort - 5 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx) (beta expt)
+    (l-0 rndx) (w expt) (x-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0) w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w x-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) w x-0)))
+  (deflistener (cat (exp (gen) x-0) w))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w x-0)) (x-0 beta)
+    (x-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w x-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) w x-0)))
+      (send (cat (exp (gen) y) (mul (rec l-0) w x-0))))
+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
+  (label 233)
+  (parent 205)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "6 in cohort - 6 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y l l-0 x l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) x) (mul l-0 (rec x) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (6 0)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y l) (y (mul l-0 l-1)) (y x) (x l) (x l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 2) l-1 (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) x) (mul l-0 (rec x) l-1)))
+      (send (cat (exp (gen) x) (mul l-0 (rec x) l-1))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))))
+  (label 234)
+  (parent 206)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y l l-0 x rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (exp (gen) x) (mul l-0 (rec x))))
+  (precedes ((1 2) (6 0)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y l) (y l-0) (y x) (x l) (x l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (w (mul l-0 (rec x))) (l-1 l-0) (x-0 x)) (one) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (exp (gen) x) (mul l-0 (rec x))))
+      (send (cat (exp (gen) x) (mul l-0 (rec x))))))
+  (label 235)
+  (parent 206)
+  (unrealized (0 0) (4 1) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (w expt) (l l-0 l-1 x rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w (rec l) l-1)) (exp (gen) (mul l-0 x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-0) (eta (mul y w (rec l))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul w (rec l) l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w (rec l))))
+  (deflistener (cat (exp (gen) x) (mul w (rec l) l-1 (rec x))))
+  (precedes ((1 2) (6 0)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul w (rec l) l-1)) (y l-0) (y x) (x (mul w (rec l)))
+    (x l-0) (x l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence x (mul w (rec l)))
+    (mul w (rec l)) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w (rec l) l-1)) (exp (gen) (mul l-0 x))))
+      (send
+        (hash (exp (gen) (mul y w (rec l) l-1))
+          (exp (gen) (mul l-0 x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w (rec l)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l) l-1))
+              (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul w (rec l) l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l) l-1))
+              (exp (gen) (mul l-0 x)))))))
+    ((recv (cat (exp (gen) y) (mul w (rec l))))
+      (send (cat (exp (gen) y) (mul w (rec l)))))
+    ((recv (cat (exp (gen) x) (mul w (rec l) l-1 (rec x))))
+      (send (cat (exp (gen) x) (mul w (rec l) l-1 (rec x))))))
+  (label 236)
+  (parent 206)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (w expt) (l x l-0 x-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w x l-0)) (exp (gen) (mul l x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta l) (eta (mul y w x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w x l-0)) (chi x-0))
+  (deflistener (cat (exp (gen) y) (mul w x)))
+  (deflistener (cat (exp (gen) x-0) (mul w x l-0 (rec x-0))))
+  (precedes ((1 2) (6 0)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x-0)
+  (absent (y (mul w x l-0)) (y l) (y x-0) (l-0 (mul w x)) (x-0 l)
+    (x-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-0 (mul w x)) (mul w x) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y w x l-0)) (exp (gen) (mul l x-0))))
+      (send (hash (exp (gen) (mul y w x l-0)) (exp (gen) (mul l x-0)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul y w x))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x l-0))
+              (exp (gen) (mul l x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w x l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x-0)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x l-0))
+              (exp (gen) (mul l x-0)))))))
+    ((recv (cat (exp (gen) y) (mul w x)))
+      (send (cat (exp (gen) y) (mul w x))))
+    ((recv (cat (exp (gen) x-0) (mul w x l-0 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul w x l-0 (rec x-0))))))
+  (label 237)
+  (parent 206)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x y l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul l l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) l-0))
+  (deflistener (cat (gen) (mul l l-0)))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y x) (y (mul l l-0)) (y l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 3 ltx-gen 2) l-1 (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((recv (cat (gen) (mul l l-0))) (send (cat (gen) (mul l l-0)))))
+  (label 238)
+  (parent 207)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) l-0))
+  (deflistener (cat (gen) (mul l-0 l-0)))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-0)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 2 ltx-gen 2) l-1 (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((recv (cat (gen) (mul l-0 l-0))) (send (cat (gen) (mul l-0 l-0)))))
+  (label 239)
+  (parent 207)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (gen) l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (contracted (l-1 l-0) (w l-0)) (one) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0))))
+  (label 240)
+  (parent 207)
+  (unrealized (0 0) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (gen) (mul l-0 l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 2) l-1 (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (gen) (mul l-0 l-1))) (send (cat (gen) (mul l-0 l-1))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))))
+  (label 241)
+  (parent 207)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (gen) (mul w l-0)))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w l-0)) (l-0 w))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-0 w) w (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (gen) (mul w l-0))) (send (cat (gen) (mul w l-0)))))
+  (label 242)
+  (parent 207)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx) (w expt))
+  (deflistener (hash (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha w) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) w)))
+  (deflistener (cat (gen) w))
+  (deflistener l-0)
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y w))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener l-0) (mul (rec l-0) w) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) w))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv (sig (body a (exp (gen) w) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) w)))
+      (send (cat (exp (gen) y) (mul (rec l-0) w))))
+    ((recv (cat (gen) w)) (send (cat (gen) w))) ((recv l-0) (send l-0)))
+  (label 243)
+  (parent 207)
+  (unrealized (0 0) (7 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (mul y w)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha (mul w l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (exp (gen) l-0) w))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (7 0)) ((4 1) (1 3)) ((5 1) (3 1)) ((6 1) (1 0))
+    ((6 2) (5 0)) ((7 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w l-0)))
+  (precur (4 0) (5 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+    (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))) (0 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w))
+          (enc na nb self b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) (mul w l-0)) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))))
+  (label 244)
+  (parent 208)
+  (unrealized (7 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (alpha chi w expt) (y-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w y-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w y-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w y-0 (rec l-0))))
+  (deflistener (cat (exp (gen) y-0) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w y-0)) (y-0 alpha)
+    (y-0 chi) (y-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w y-0 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w y-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w y-0 (rec l-0))))
+      (send (cat (exp (gen) y) (mul w y-0 (rec l-0)))))
+    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-0))))))))
+  (label 245)
+  (parent 209)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "5 in cohort - 5 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (alpha chi expt) (l rndx) (w expt) (y-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y (rec l) w y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul w y-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) w y-0)))
+  (deflistener (cat (exp (gen) y-0) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y x) (y (mul w y-0)) (y l-0) (y-0 alpha)
+    (y-0 chi) (y-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) w y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul w y-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w y-0)))
+      (send (cat (exp (gen) y) (mul (rec l) w y-0))))
+    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-0))))))))
+  (label 246)
+  (parent 209)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "5 in cohort - 5 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx)
+    (alpha chi expt) (l-0 rndx) (w expt) (y-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0) w y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w y-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) w y-0)))
+  (deflistener (cat (exp (gen) y-0) w))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 3) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w y-0)) (y-0 alpha)
+    (y-0 chi) (y-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) w y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w y-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) w y-0)))
+      (send (cat (exp (gen) y) (mul (rec l-0) w y-0))))
+    ((recv (cat (exp (gen) y-0) w)) (send (cat (exp (gen) y-0) w)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 247)
+  (parent 209)
+  (unrealized (0 0) (1 3) (5 0))
+  (comment "6 in cohort - 6 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x y l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul l l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) l-0))
+  (deflistener (cat (exp (gen) l-0) l))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((3 2) (6 0)) ((4 3) (0 0)) ((4 3) (5 0))
+    ((5 1) (1 3)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y x) (y (mul l l-0)) (y l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 3 ltx-gen 2) l-1 (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((recv (cat (exp (gen) l-0) l)) (send (cat (exp (gen) l-0) l))))
+  (label 248)
+  (parent 210)
+  (unrealized (0 0) (5 0) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x y l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) l-0))
+  (deflistener (cat (exp (gen) l) (mul (rec l) l-0 l-0)))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((3 2) (6 0)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y x) (y l) (y (mul l-0 l-0)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 2 ltx-gen 2) l-1 (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((recv (cat (exp (gen) l) (mul (rec l) l-0 l-0)))
+      (send (cat (exp (gen) l) (mul (rec l) l-0 l-0)))))
+  (label 249)
+  (parent 210)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x y l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (exp (gen) l-0) (mul l (rec l-0))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((3 2) (6 0)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y x) (y l) (y l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (l-1 l) (w (mul l (rec l-0))) (l-2 l-0)) (one) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (exp (gen) l-0) (mul l (rec l-0))))
+      (send (cat (exp (gen) l-0) (mul l (rec l-0))))))
+  (label 250)
+  (parent 210)
+  (unrealized (0 0) (4 1) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l l-1)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul l l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-0) (mul l (rec l-0) l-1)))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((3 2) (6 0)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y x) (y (mul l l-1)) (y l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 2) l-1 (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l l-1)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y l l-1)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-1)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-1)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-0) (mul l (rec l-0) l-1)))
+      (send (cat (exp (gen) l-0) (mul l (rec l-0) l-1))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))))
+  (label 251)
+  (parent 210)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y l rndx)
+    (w expt) (l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) w l-0)) (exp (gen) (mul x l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y (rec l) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-1) (y y) (alpha (mul (rec l) w l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) w)))
+  (deflistener (cat (exp (gen) l-1) (mul (rec l) w l-0 (rec l-1))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((3 2) (6 0)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l-0) (x l-1) (y x) (y (mul (rec l) w l-0)) (y l-1)
+    (l-1 (mul (rec l) w)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-1 (mul (rec l) w))
+    (mul (rec l) w) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) w l-0)) (exp (gen) (mul x l-1))))
+      (send
+        (hash (exp (gen) (mul y (rec l) w l-0))
+          (exp (gen) (mul x l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) w))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w l-0))
+              (exp (gen) (mul x l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) w l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w l-0))
+              (exp (gen) (mul x l-1)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w)))
+      (send (cat (exp (gen) y) (mul (rec l) w))))
+    ((recv (cat (exp (gen) l-1) (mul (rec l) w l-0 (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul (rec l) w l-0 (rec l-1))))))
+  (label 252)
+  (parent 210)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (w expt) (l l-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w l l-0)) (exp (gen) (mul x l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y w l)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-1) (y y) (alpha (mul w l l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w l)))
+  (deflistener (cat (exp (gen) l-1) (mul w l l-0 (rec l-1))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((3 2) (6 0)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l-0) (x l-1) (y x) (y (mul w l l-0)) (y l-1)
+    (l-0 (mul w l)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-0 (mul w l)) (mul w l) (5 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y w l l-0)) (exp (gen) (mul x l-1))))
+      (send (hash (exp (gen) (mul y w l l-0)) (exp (gen) (mul x l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w l))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l l-0))
+              (exp (gen) (mul x l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul w l l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l l-0))
+              (exp (gen) (mul x l-1)))))))
+    ((recv (cat (exp (gen) y) (mul w l)))
+      (send (cat (exp (gen) y) (mul w l))))
+    ((recv (cat (exp (gen) l-1) (mul w l l-0 (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul w l l-0 (rec l-1))))))
+  (label 253)
+  (parent 210)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x y l l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l l-1)) (exp (gen) (mul x l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-1) (y y) (alpha (mul l l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-0) (mul l (rec l-0) l-1)))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y x) (y (mul l l-1)) (y l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq b a) (neq a b) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 8 3 ltx-gen 2) l-2 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l l-1)) (exp (gen) (mul x l-1))))
+      (send (hash (exp (gen) (mul y l l-1)) (exp (gen) (mul x l-1)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-1)) (exp (gen) (mul x l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-1)) (exp (gen) (mul x l-1)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-0) (mul l (rec l-0) l-1)))
+      (send (cat (exp (gen) l-0) (mul l (rec l-0) l-1))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 254)
+  (parent 211)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-1 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-0) (mul (rec l-0) l-1 l-1)))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul l-1 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 8 2 ltx-gen 2) l-2 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-1 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-0) (mul (rec l-0) l-1 l-1)))
+      (send (cat (exp (gen) l-0) (mul (rec l-0) l-1 l-1))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 255)
+  (parent 211)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (l-2 l-0) (w (mul l-0 (rec l-1))) (l-3 l-1)) (one)
+    (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (exp (gen) l-1) (mul l-0 (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul l-0 (rec l-1)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 256)
+  (parent 211)
+  (unrealized (0 0) (4 1) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb data)
+    (a b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (l x y l-0 l-1 l-2 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-2)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-2)) (chi x))
+  (deflistener (cat (exp (gen) y) l-2))
+  (deflistener (cat (exp (gen) l-1) (mul l-0 (rec l-1) l-2)))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-gen 2 (ignore ignore-2) (self self-0)
+    (priv-stor priv-stor-2) (l l-2))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1 l-2)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-2)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 2) l-2 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-2)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-2)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-2)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-2)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-2)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-2)) (send (cat (exp (gen) y) l-2)))
+    ((recv (cat (exp (gen) l-1) (mul l-0 (rec l-1) l-2)))
+      (send (cat (exp (gen) l-1) (mul l-0 (rec l-1) l-2))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor-2 (cat pt-5 ignore-2))
+      (stor priv-stor-2 (cat pt-6 (pv self-0 l-2)))))
+  (label 257)
+  (parent 211)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 8 7 ltx-gen 2) l-2 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 258)
+  (parent 211)
+  (unrealized (0 0) (5 0) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 rndx) (w expt)
+    (l-1 l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l-0) w l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y (rec l-0) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul (rec l-0) w l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) w)))
+  (deflistener (cat (exp (gen) l-2) (mul (rec l-0) w l-1 (rec l-2))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-2))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-1 l-2)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul (rec l-0) w l-1))
+    (l-2 (mul (rec l-0) w)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-2 (mul (rec l-0) w))
+    (mul (rec l-0) w) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l-0) w l-1)) (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y (rec l-0) w l-1))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) w))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w l-1))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l-0) w l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w l-1))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) w)))
+      (send (cat (exp (gen) y) (mul (rec l-0) w))))
+    ((recv (cat (exp (gen) l-2) (mul (rec l-0) w l-1 (rec l-2))))
+      (send (cat (exp (gen) l-2) (mul (rec l-0) w l-1 (rec l-2)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-2)))
+      (send
+        (sig (body self (exp (gen) l-2) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 259)
+  (parent 211)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx) (w expt)
+    (l-0 l-1 l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y w l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w l-0)))
+  (deflistener (cat (exp (gen) l-2) (mul w l-0 l-1 (rec l-2))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-2))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-1 l-2)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul w l-0 l-1))
+    (l-1 (mul w l-0)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-1 (mul w l-0)) (mul w l-0)
+    (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y w l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0 l-1))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0 l-1))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w l-0)))
+      (send (cat (exp (gen) y) (mul w l-0))))
+    ((recv (cat (exp (gen) l-2) (mul w l-0 l-1 (rec l-2))))
+      (send (cat (exp (gen) l-2) (mul w l-0 l-1 (rec l-2)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-2)))
+      (send
+        (sig (body self (exp (gen) l-2) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 260)
+  (parent 211)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (3 2)) ((1 2) (8 0)) ((2 1) (3 0)) ((2 2) (1 1))
+    ((3 3) (1 3)) ((3 3) (6 0)) ((4 1) (1 0)) ((4 1) (7 0))
+    ((4 2) (3 1)) ((5 1) (0 0)) ((6 1) (5 0)) ((7 2) (6 0))
+    ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)) ((4 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul l x)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 261)
+  (parent 224)
+  (unrealized (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (3 2)) ((1 2) (8 0)) ((2 1) (3 0)) ((2 2) (1 1))
+    ((3 3) (1 3)) ((3 3) (6 0)) ((4 1) (1 0)) ((4 1) (7 0))
+    ((4 2) (3 1)) ((5 1) (0 0)) ((6 1) (5 0)) ((7 2) (6 0))
+    ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((4 1) (1 0)) ((4 1) (7 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul l x)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 262)
+  (parent 224)
+  (unrealized (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (gen) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (4 2)) ((1 2) (8 0)) ((2 1) (1 0)) ((2 1) (6 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (1 3)) ((4 3) (7 0))
+    ((5 1) (4 1)) ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul l x)) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 263)
+  (parent 225)
+  (unrealized (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (gen) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (4 2)) ((1 2) (8 0)) ((2 1) (1 0)) ((2 1) (6 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (1 3)) ((4 3) (7 0))
+    ((5 1) (4 1)) ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul l x)) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 264)
+  (parent 225)
+  (unrealized (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (1 3))
+    ((3 3) (7 0)) ((4 1) (3 1)) ((5 1) (1 0)) ((5 1) (8 0))
+    ((5 2) (4 0)) ((6 1) (0 0)) ((7 1) (6 0)) ((8 2) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)) ((5 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (7 0)
+    (ch-msg priv-stor-0 (cat pt-2 (pv self l-0))))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l-0)))
+  (label 265)
+  (parent 226)
+  (unrealized (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (one)) (chi x))
+  (deflistener (cat (exp (gen) y) (rec l-0)))
+  (deflistener l-0)
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul l x))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (8 0)) ((5 1) (1 3))
+    ((6 1) (5 0)) ((7 2) (6 0)) ((8 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (one)) (y l) (y x))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener (cat (exp (gen) y) (exp (gen) (mul l x))))
+    (hash (exp (gen) y) (exp (gen) (mul l x))) (0 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) y) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv (sig (body a (gen) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (rec l-0)))
+      (send (cat (exp (gen) y) (rec l-0)))) ((recv l-0) (send l-0))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) y) (exp (gen) (mul l x))))))
+  (label 266)
+  (parent 228)
+  (unrealized (8 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-0) (l l-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (7 0)) ((4 1) (1 3)) ((5 1) (1 0)) ((5 1) (8 0))
+    ((5 2) (3 1)) ((6 1) (0 0)) ((7 1) (6 0)) ((8 2) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)) ((5 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (7 0)
+    (ch-msg priv-stor-0 (cat pt-2 (pv self l-0))))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l-0)))
+  (label 267)
+  (parent 229)
+  (unrealized (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (beta expt) (x-0 l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul l l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) l-0))
+  (deflistener (cat (exp (gen) x-0) (mul (rec x-0) l l-0)))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor) (l l)
+    (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y x) (y (mul l l-0)) (y l-0) (x-0 beta)
+    (x-0 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 8 3 ltx-gen 2) l-1 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((recv (cat (exp (gen) x-0) (mul (rec x-0) l l-0)))
+      (send (cat (exp (gen) x-0) (mul (rec x-0) l l-0))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 268)
+  (parent 231)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (beta expt) (x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (exp (gen) x-0) (mul (rec x-0) l-0)))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0) (x-0 beta) (x-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (w (mul (rec x-0) l-0)) (x-1 x-0) (l-1 l-0)) (one)
+    (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (exp (gen) x-0) (mul (rec x-0) l-0)))
+      (send (cat (exp (gen) x-0) (mul (rec x-0) l-0))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 269)
+  (parent 231)
+  (unrealized (0 0) (4 1) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b b-0 self name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx) (beta expt)
+    (x-0 l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) x-0) (mul (rec x-0) l-0 l-1)))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)) (x-0 beta)
+    (x-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 2) l-1 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) x-0) (mul (rec x-0) l-0 l-1)))
+      (send (cat (exp (gen) x-0) (mul (rec x-0) l-0 l-1))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))))
+  (label 270)
+  (parent 231)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (beta w expt) (x-0 x-1 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w x-0 l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w x-0 l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w x-0)))
+  (deflistener (cat (exp (gen) x-1) (mul w x-0 (rec x-1) l-0)))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-1) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-1)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w x-0 l-0)) (x-1 beta)
+    (x-1 l-0) (l-0 (mul w x-0)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-0 (mul w x-0)) (mul w x-0)
+    (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y w x-0 l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w x-0 l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 l-0))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w x-0 l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 l-0))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w x-0)))
+      (send (cat (exp (gen) y) (mul w x-0))))
+    ((recv (cat (exp (gen) x-1) (mul w x-0 (rec x-1) l-0)))
+      (send (cat (exp (gen) x-1) (mul w x-0 (rec x-1) l-0))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-1)))))
+  (label 271)
+  (parent 231)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (beta w expt) (l-0 x-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w (rec l-0) l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y w (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w (rec l-0) l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w (rec l-0))))
+  (deflistener (cat (exp (gen) x-0) (mul w (rec l-0) (rec x-0) l-1)))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-1) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-1)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul w (rec l-0) l-1)) (x-0 beta)
+    (x-0 (mul w (rec l-0))) (x-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence x-0 (mul w (rec l-0)))
+    (mul w (rec l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w (rec l-0) l-1)) (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y w (rec l-0) l-1))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l-0) l-1))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l-0) l-1))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w (rec l-0))))
+      (send (cat (exp (gen) y) (mul w (rec l-0)))))
+    ((recv (cat (exp (gen) x-0) (mul w (rec l-0) (rec x-0) l-1)))
+      (send (cat (exp (gen) x-0) (mul w (rec l-0) (rec x-0) l-1))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 272)
+  (parent 231)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) l-0))
+  (deflistener (cat (exp (gen) x-0) (mul (rec x-0) l-0 l-0)))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y x) (y l) (y (mul l-0 l-0)) (x-0 beta)
+    (x-0 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 8 2 ltx-gen 2) l-1 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((recv (cat (exp (gen) x-0) (mul (rec x-0) l-0 l-0)))
+      (send (cat (exp (gen) x-0) (mul (rec x-0) l-0 l-0))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 273)
+  (parent 232)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (beta expt) (l l-0 x-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y x) (y l) (y l-0) (x-0 beta) (x-0 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (l-1 l-0) (w (mul l-0 (rec x-0))) (x-1 x-0)) (one)
+    (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (exp (gen) x-0) (mul l-0 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-0 (rec x-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 274)
+  (parent 232)
+  (unrealized (0 0) (4 1) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b b-0 self name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x y rndx) (beta expt)
+    (l l-0 x-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) x-0) (mul l-0 (rec x-0) l-1)))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y x) (y l) (y (mul l-0 l-1)) (x-0 beta)
+    (x-0 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 2) l-1 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) x-0) (mul l-0 (rec x-0) l-1)))
+      (send (cat (exp (gen) x-0) (mul l-0 (rec x-0) l-1))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))))
+  (label 275)
+  (parent 232)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (beta expt) (l rndx) (w expt) (l-0 l-1 x-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) w l-1)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-0) (eta (mul y (rec l) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul (rec l) w l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) w)))
+  (deflistener (cat (exp (gen) x-0) (mul (rec l) w l-1 (rec x-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l-0 l-1)
+  (uniq-gen x y x-0)
+  (absent (x l-0) (x l-1) (y x) (y (mul (rec l) w l-1)) (y l-0)
+    (x-0 beta) (x-0 (mul (rec l) w)) (x-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence x-0 (mul (rec l) w))
+    (mul (rec l) w) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) w l-1)) (exp (gen) (mul x l-0))))
+      (send
+        (hash (exp (gen) (mul y (rec l) w l-1))
+          (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) w))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w l-1))
+              (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) w l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w l-1))
+              (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w)))
+      (send (cat (exp (gen) y) (mul (rec l) w))))
+    ((recv (cat (exp (gen) x-0) (mul (rec l) w l-1 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul (rec l) w l-1 (rec x-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 276)
+  (parent 232)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (beta w expt) (x-0 l l-0 x-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w x-0 l-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w x-0 l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w x-0)))
+  (deflistener (cat (exp (gen) x-1) (mul w x-0 l-0 (rec x-1))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l) (x x-1) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-1)
+  (absent (x l) (x l-0) (y x) (y (mul w x-0 l-0)) (y l)
+    (l-0 (mul w x-0)) (x-1 beta) (x-1 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-0 (mul w x-0)) (mul w x-0)
+    (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y w x-0 l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul y w x-0 l-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 l-0))
+              (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w x-0 l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 l-0))
+              (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (mul w x-0)))
+      (send (cat (exp (gen) y) (mul w x-0))))
+    ((recv (cat (exp (gen) x-1) (mul w x-0 l-0 (rec x-1))))
+      (send (cat (exp (gen) x-1) (mul w x-0 l-0 (rec x-1)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-1)))))
+  (label 277)
+  (parent 232)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x y rndx) (beta expt)
+    (l l-0 x-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-1) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) x-0) (mul l-0 (rec x-0) l-1)))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen x y x-0)
+  (absent (x l-0) (x l-1) (y x) (y (mul l-0 l-1)) (y l-1) (x-0 beta)
+    (x-0 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l-1) (pv a-0 l))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 9 3 ltx-gen 2) l-2 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l-1))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1))
+              (exp (gen) (mul x l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1))
+              (exp (gen) (mul x l-1)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) x-0) (mul l-0 (rec x-0) l-1)))
+      (send (cat (exp (gen) x-0) (mul l-0 (rec x-0) l-1))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l)))))
+  (label 278)
+  (parent 233)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-1 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) x-0) (mul (rec x-0) l-1 l-1)))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul l-1 l-1)) (x-0 beta)
+    (x-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 9 2 ltx-gen 2) l-2 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-1 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) x-0) (mul (rec x-0) l-1 l-1)))
+      (send (cat (exp (gen) x-0) (mul (rec x-0) l-1 l-1))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-0)))))
+  (label 279)
+  (parent 233)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx) (beta expt)
+    (l-0 l-1 x-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-1) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-1) (y l) (y x) (y l-1) (x-0 beta) (x-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (l-2 l-1) (w (mul l-1 (rec x-0))) (x-1 x-0)) (one)
+    (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (exp (gen) x-0) (mul l-1 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul l-1 (rec x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-0)))))
+  (label 280)
+  (parent 233)
+  (unrealized (0 0) (4 1) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb na-0 data)
+    (a b a-0 b-0 self name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn) (l x y rndx)
+    (beta expt) (l-0 l-1 x-0 l-2 rndx))
+  (deflistener (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-1 l-2)) (chi x))
+  (deflistener (cat (exp (gen) y) l-2))
+  (deflistener (cat (exp (gen) x-0) (mul l-1 (rec x-0) l-2)))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-0))
+  (defstrand ltx-gen 2 (ignore ignore-2) (self self)
+    (priv-stor priv-stor-2) (l l-2))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)) ((8 1) (7 0)) ((9 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1 l-2)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul l-1 l-2)) (x-0 beta)
+    (x-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 2) l-2 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-1 l-2)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-2)) (send (cat (exp (gen) y) l-2)))
+    ((recv (cat (exp (gen) x-0) (mul l-1 (rec x-0) l-2)))
+      (send (cat (exp (gen) x-0) (mul l-1 (rec x-0) l-2))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-0))))
+    ((load priv-stor-2 (cat pt-5 ignore-2))
+      (stor priv-stor-2 (cat pt-6 (pv self l-2)))))
+  (label 281)
+  (parent 233)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx) (beta expt)
+    (l-0 rndx) (w expt) (l-1 l-2 x-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l-0) w l-2)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l) (eta (mul y (rec l-0) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul (rec l-0) w l-2)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) w)))
+  (deflistener (cat (exp (gen) x-0) (mul (rec l-0) w l-2 (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-1 l-2)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-2) (y l) (y x) (y (mul (rec l-0) w l-2)) (x-0 beta)
+    (x-0 (mul (rec l-0) w)) (x-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-2) (pv b l) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence x-0 (mul (rec l-0) w))
+    (mul (rec l-0) w) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l-0) w l-2)) (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y (rec l-0) w l-2))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) w))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w l-2))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l-0) w l-2)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w l-2))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) w)))
+      (send (cat (exp (gen) y) (mul (rec l-0) w))))
+    ((recv (cat (exp (gen) x-0) (mul (rec l-0) w l-2 (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul (rec l-0) w l-2 (rec x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
+  (label 282)
+  (parent 233)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx) (beta w expt)
+    (x-0 l-0 l-1 x-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w x-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y w x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w x-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w x-0)))
+  (deflistener (cat (exp (gen) x-1) (mul w x-0 l-1 (rec x-1))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-1) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen x y x-1)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul w x-0 l-1))
+    (l-1 (mul w x-0)) (x-1 beta) (x-1 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-1 (mul w x-0)) (mul w x-0)
+    (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y w x-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w x-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 l-1))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w x-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 l-1))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w x-0)))
+      (send (cat (exp (gen) y) (mul w x-0))))
+    ((recv (cat (exp (gen) x-1) (mul w x-0 l-1 (rec x-1))))
+      (send (cat (exp (gen) x-1) (mul w x-0 l-1 (rec x-1)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-1))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-0)))))
+  (label 283)
+  (parent 233)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (w expt) (l l-0 l-1 l-2 x rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w (rec l) l-1 x)) (exp (gen) (mul l-0 x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l-0) (eta (mul y w (rec l) l-1 (rec l-2) x)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul w (rec l) l-1 x)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w (rec l) l-1 (rec l-2) x)))
+  (deflistener (cat (exp (gen) x) (mul w (rec l) l-1)))
+  (precedes ((1 2) (6 0)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l-0 l-2)
+  (uniq-gen y x)
+  (absent (y (mul w (rec l) l-1 x)) (y l-0) (y x)
+    (x (mul w (rec l) l-1)) (x (mul w (rec l) l-1 (rec l-2) x)) (x l-0)
+    (x l-2))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-2) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence x (mul w (rec l) l-1))
+    (mul w (rec l) l-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w (rec l) l-1 x))
+         (exp (gen) (mul l-0 x))))
+      (send
+        (hash (exp (gen) (mul y w (rec l) l-1 x))
+          (exp (gen) (mul l-0 x)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w (rec l) l-1 (rec l-2) x))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l) l-1 x))
+              (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul w (rec l) l-1 x)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l) l-1 x))
+              (exp (gen) (mul l-0 x)))))))
+    ((recv (cat (exp (gen) y) (mul w (rec l) l-1 (rec l-2) x)))
+      (send (cat (exp (gen) y) (mul w (rec l) l-1 (rec l-2) x))))
+    ((recv (cat (exp (gen) x) (mul w (rec l) l-1)))
+      (send (cat (exp (gen) x) (mul w (rec l) l-1)))))
+  (label 284)
+  (parent 236)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (w expt) (l l-0 x l-1 x-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w (rec l) (rec x) x-0))
+      (exp (gen) (mul l-0 x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x-0) (beta l-0)
+    (eta (mul y w (rec l) (rec x) (rec l-1) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul w (rec l) (rec x) x-0)) (chi x-0))
+  (deflistener
+    (cat (exp (gen) y) (mul w (rec l) (rec x) (rec l-1) x-0)))
+  (deflistener (cat (exp (gen) x-0) (mul w (rec l) (rec x))))
+  (precedes ((1 2) (6 0)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l-0 l-1)
+  (uniq-gen y x-0)
+  (absent (y (mul w (rec l) (rec x) x-0)) (y l-0) (y x-0)
+    (l-1 (mul w (rec l) (rec x)))
+    (x-0 (mul w (rec l) (rec x) (rec l-1) x-0)) (x-0 l-0) (x-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-1 (mul w (rec l) (rec x)))
+    (mul w (rec l) (rec x)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w (rec l) (rec x) x-0))
+         (exp (gen) (mul l-0 x-0))))
+      (send
+        (hash (exp (gen) (mul y w (rec l) (rec x) x-0))
+          (exp (gen) (mul l-0 x-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul y w (rec l) (rec x) (rec l-1) x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l) (rec x) x-0))
+              (exp (gen) (mul l-0 x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul w (rec l) (rec x) x-0))
+            (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x-0)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l) (rec x) x-0))
+              (exp (gen) (mul l-0 x-0)))))))
+    ((recv (cat (exp (gen) y) (mul w (rec l) (rec x) (rec l-1) x-0)))
+      (send (cat (exp (gen) y) (mul w (rec l) (rec x) (rec l-1) x-0))))
+    ((recv (cat (exp (gen) x-0) (mul w (rec l) (rec x))))
+      (send (cat (exp (gen) x-0) (mul w (rec l) (rec x))))))
+  (label 285)
+  (parent 236)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (w expt) (l x l-0 l-1 x-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w x l-0 x-0)) (exp (gen) (mul l x-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x-0) (beta l) (eta (mul y w x l-0 (rec l-1) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w x l-0 x-0)) (chi x-0))
+  (deflistener (cat (exp (gen) y) (mul w x l-0 (rec l-1) x-0)))
+  (deflistener (cat (exp (gen) x-0) (mul w x l-0)))
+  (precedes ((1 2) (6 0)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-1)
+  (uniq-gen y x-0)
+  (absent (y (mul w x l-0 x-0)) (y l) (y x-0)
+    (l-1 (mul w x l-0 (rec l-1) x-0)) (x-0 (mul w x l-0)) (x-0 l)
+    (x-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence x-0 (mul w x l-0)) (mul w x l-0)
+    (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w x l-0 x-0)) (exp (gen) (mul l x-0))))
+      (send
+        (hash (exp (gen) (mul y w x l-0 x-0)) (exp (gen) (mul l x-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul y w x l-0 (rec l-1) x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x l-0 x-0))
+              (exp (gen) (mul l x-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w x l-0 x-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x-0)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x l-0 x-0))
+              (exp (gen) (mul l x-0)))))))
+    ((recv (cat (exp (gen) y) (mul w x l-0 (rec l-1) x-0)))
+      (send (cat (exp (gen) y) (mul w x l-0 (rec l-1) x-0))))
+    ((recv (cat (exp (gen) x-0) (mul w x l-0)))
+      (send (cat (exp (gen) x-0) (mul w x l-0)))))
+  (label 286)
+  (parent 237)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (w expt) (l x x-0 l-0 x-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w x (rec x-0) x-1))
+      (exp (gen) (mul l x-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x-1) (beta l) (eta (mul y w x (rec x-0) (rec l-0) x-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w x (rec x-0) x-1)) (chi x-1))
+  (deflistener (cat (exp (gen) y) (mul w x (rec x-0) (rec l-0) x-1)))
+  (deflistener (cat (exp (gen) x-1) (mul w x (rec x-0))))
+  (precedes ((1 2) (6 0)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x-1)
+  (absent (y (mul w x (rec x-0) x-1)) (y l) (y x-1)
+    (l-0 (mul w x (rec x-0))) (l-0 (mul w x (rec x-0) (rec l-0) x-1))
+    (x-1 l) (x-1 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-0 (mul w x (rec x-0)))
+    (mul w x (rec x-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w x (rec x-0) x-1))
+         (exp (gen) (mul l x-1))))
+      (send
+        (hash (exp (gen) (mul y w x (rec x-0) x-1))
+          (exp (gen) (mul l x-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x-1)))
+      (recv
+        (cat (exp (gen) (mul y w x (rec x-0) (rec l-0) x-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x (rec x-0) x-1))
+              (exp (gen) (mul l x-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w x (rec x-0) x-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x-1)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x (rec x-0) x-1))
+              (exp (gen) (mul l x-1)))))))
+    ((recv (cat (exp (gen) y) (mul w x (rec x-0) (rec l-0) x-1)))
+      (send (cat (exp (gen) y) (mul w x (rec x-0) (rec l-0) x-1))))
+    ((recv (cat (exp (gen) x-1) (mul w x (rec x-0))))
+      (send (cat (exp (gen) x-1) (mul w x (rec x-0))))))
+  (label 287)
+  (parent 237)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) l-0))
+  (deflistener (cat (gen) (mul l-0 l-0)))
+  (deflistener l-0)
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-0)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener l-0) (mul l-0 l-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((recv (cat (gen) (mul l-0 l-0))) (send (cat (gen) (mul l-0 l-0))))
+    ((recv l-0) (send l-0)))
+  (label 288)
+  (parent 239)
+  (unrealized (0 0) (7 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (gen) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (6 0)
+    (ch-msg priv-stor (cat pt (pv a l-0))))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0)))
+  (label 289)
+  (parent 240)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (gen) l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0) (l-0 (one)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 2 ltx-gen 2) l-1 (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0))))
+  (label 290)
+  (parent 242)
+  (unrealized (0 0) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha w) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w (rec l-0))))
+  (deflistener (cat (gen) w))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y w) (l-0 w)
+    (l-0 (mul w (rec l-0))))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-0 w) w (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv (sig (body a (exp (gen) w) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w (rec l-0))))
+      (send (cat (exp (gen) y) (mul w (rec l-0)))))
+    ((recv (cat (gen) w)) (send (cat (gen) w))))
+  (label 291)
+  (parent 242)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (gen) (mul w l-0)))
+  (deflistener l-0)
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w l-0)) (l-0 w))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener l-0) (mul w l-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (gen) (mul w l-0))) (send (cat (gen) (mul w l-0))))
+    ((recv l-0) (send l-0)))
+  (label 292)
+  (parent 242)
+  (unrealized (0 0) (7 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y rndx) (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha w) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w (rec l-0))))
+  (deflistener (cat (gen) w))
+  (deflistener l-0)
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (5 0)) ((8 2) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y w))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (7 0)
+    (ch-msg priv-stor (cat pt (pv a l-0))))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv (sig (body a (exp (gen) w) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w (rec l-0))))
+      (send (cat (exp (gen) y) (mul w (rec l-0)))))
+    ((recv (cat (gen) w)) (send (cat (gen) w))) ((recv l-0) (send l-0))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0)))
+  (label 293)
+  (parent 243)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x y rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul l-0 x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x) (beta l-0)
+    (eta (mul (rec l) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (one)) (chi x))
+  (deflistener (cat (exp (gen) y) (rec l)))
+  (deflistener (cat (exp (gen) l) (rec l)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul l-0 x))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (7 0)) ((4 1) (1 3)) ((5 1) (3 1)) ((6 1) (1 0))
+    ((6 2) (5 0)) ((7 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (one)) (y l-0) (y x))
+  (precur (4 0) (5 0))
+  (gen-st (pv b l-0) (pv self l))
+  (facts (neq b self) (neq self b) (undisclosed l-0))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 8 3 resp 4) (exp (gen) y-0) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) y) (exp (gen) (mul l-0 x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y))
+          (enc na nb self b
+            (hash (exp (gen) y) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body self (gen) (pubk "sig" self)) (privk "sig" self)))
+      (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) y) (exp (gen) (mul l-0 x)))))))
+    ((recv (cat (exp (gen) y) (rec l)))
+      (send (cat (exp (gen) y) (rec l))))
+    ((recv (cat (exp (gen) l) (rec l)))
+      (send (cat (exp (gen) l) (rec l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) y) (exp (gen) (mul l-0 x))))))
+  (label 294)
+  (parent 244)
+  (unrealized (1 3) (4 0) (5 0) (7 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (w expt) (l-0 rndx) (w-0 expt))
+  (deflistener (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta (mul y w)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha (mul w l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (exp (gen) l-0) w))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y w l-0 (rec w-0))) w-0))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (8 0)) ((4 1) (1 3)) ((5 1) (3 1)) ((6 1) (1 0))
+    ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w l-0)))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul y w l-0 (rec w-0))) w-0))
+    (exp (gen) (mul y w l-0)) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w))
+          (enc na nb self b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) (mul w l-0)) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (exp (gen) l-0) w)) (send (cat (exp (gen) l-0) w)))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y w l-0 (rec w-0))) w-0))
+      (send (cat (exp (gen) (mul y w l-0 (rec w-0))) w-0))))
+  (label 295)
+  (parent 244)
+  (unrealized (7 0) (8 0))
+  (comment "8 in cohort - 8 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (alpha chi expt) (y-0 l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul l l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) l-0))
+  (deflistener (cat (exp (gen) y-0) (mul (rec y-0) l l-0)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y x) (y (mul l l-0)) (y l-0) (y-0 alpha)
+    (y-0 chi) (y-0 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l) (pv b l-0))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 8 3 ltx-gen 2) l-1 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((recv (cat (exp (gen) y-0) (mul (rec y-0) l l-0)))
+      (send (cat (exp (gen) y-0) (mul (rec y-0) l l-0))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l))))))))
+  (label 296)
+  (parent 245)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (alpha chi expt) (y-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (exp (gen) y-0) (mul (rec y-0) l-0)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0) (y-0 alpha) (y-0 chi)
+    (y-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (w (mul (rec y-0) l-0)) (y-1 y-0) (l-1 l-0)) (one)
+    (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (exp (gen) y-0) (mul (rec y-0) l-0)))
+      (send (cat (exp (gen) y-0) (mul (rec y-0) l-0))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-0))))))))
+  (label 297)
+  (parent 245)
+  (unrealized (0 0) (4 1) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 self name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx)
+    (alpha chi expt) (y-0 l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) y-0) (mul (rec y-0) l-0 l-1)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)) (y-0 alpha)
+    (y-0 chi) (y-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 2) l-1 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) y-0) (mul (rec y-0) l-0 l-1)))
+      (send (cat (exp (gen) y-0) (mul (rec y-0) l-0 l-1))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-0)))))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))))
+  (label 298)
+  (parent 245)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (alpha chi w expt) (y-0 y-1 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w y-0 l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w y-0 l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w y-0)))
+  (deflistener (cat (exp (gen) y-1) (mul w y-0 (rec y-1) l-0)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-1)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w y-0 l-0)) (y-1 alpha)
+    (y-1 chi) (y-1 l-0) (l-0 (mul w y-0)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-0 (mul w y-0)) (mul w y-0)
+    (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y w y-0 l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w y-0 l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 l-0))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w y-0 l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 l-0))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w y-0)))
+      (send (cat (exp (gen) y) (mul w y-0))))
+    ((recv (cat (exp (gen) y-1) (mul w y-0 (rec y-1) l-0)))
+      (send (cat (exp (gen) y-1) (mul w y-0 (rec y-1) l-0))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi l-0))))))))
+  (label 299)
+  (parent 245)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (alpha chi w expt) (l-0 y-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w (rec l-0) l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y w (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w (rec l-0) l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w (rec l-0))))
+  (deflistener (cat (exp (gen) y-0) (mul w (rec l-0) (rec y-0) l-1)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-1)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul w (rec l-0) l-1))
+    (y-0 alpha) (y-0 chi) (y-0 (mul w (rec l-0))) (y-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence y-0 (mul w (rec l-0)))
+    (mul w (rec l-0)) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w (rec l-0) l-1)) (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y w (rec l-0) l-1))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l-0) l-1))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w (rec l-0) l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l-0) l-1))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w (rec l-0))))
+      (send (cat (exp (gen) y) (mul w (rec l-0)))))
+    ((recv (cat (exp (gen) y-0) (mul w (rec l-0) (rec y-0) l-1)))
+      (send (cat (exp (gen) y-0) (mul w (rec l-0) (rec y-0) l-1))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-1))))))))
+  (label 300)
+  (parent 245)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (alpha chi expt) (l y-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) l-0))
+  (deflistener (cat (exp (gen) y-0) (mul (rec y-0) l-0 l-0)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y x) (y l) (y (mul l-0 l-0)) (y-0 alpha)
+    (y-0 chi) (y-0 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 8 2 ltx-gen 2) l-1 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((recv (cat (exp (gen) y-0) (mul (rec y-0) l-0 l-0)))
+      (send (cat (exp (gen) y-0) (mul (rec y-0) l-0 l-0))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l))))))))
+  (label 301)
+  (parent 246)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (alpha chi expt) (l l-0 y-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y x) (y l) (y l-0) (y-0 alpha) (y-0 chi)
+    (y-0 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (l-1 l-0) (w (mul l-0 (rec y-0))) (y-1 y-0)) (one)
+    (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (exp (gen) y-0) (mul l-0 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-0 (rec y-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l))))))))
+  (label 302)
+  (parent 246)
+  (unrealized (0 0) (4 1) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 self name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x y rndx) (alpha chi expt)
+    (l l-0 y-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) y-0) (mul l-0 (rec y-0) l-1)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)) ((8 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y x) (y l) (y (mul l-0 l-1)) (y-0 alpha)
+    (y-0 chi) (y-0 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 2) l-1 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) y-0) (mul l-0 (rec y-0) l-1)))
+      (send (cat (exp (gen) y-0) (mul l-0 (rec y-0) l-1))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l)))))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))))
+  (label 303)
+  (parent 246)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (alpha chi expt) (l rndx) (w expt) (l-0 l-1 y-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) w l-1)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-0) (eta (mul y (rec l) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul (rec l) w l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) w)))
+  (deflistener (cat (exp (gen) y-0) (mul (rec l) w l-1 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l-0 l-1)
+  (uniq-gen x y y-0)
+  (absent (x l-0) (x l-1) (y x) (y (mul (rec l) w l-1)) (y l-0)
+    (y-0 alpha) (y-0 chi) (y-0 (mul (rec l) w)) (y-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence y-0 (mul (rec l) w))
+    (mul (rec l) w) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) w l-1)) (exp (gen) (mul x l-0))))
+      (send
+        (hash (exp (gen) (mul y (rec l) w l-1))
+          (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) w))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w l-1))
+              (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) w l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w l-1))
+              (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w)))
+      (send (cat (exp (gen) y) (mul (rec l) w))))
+    ((recv (cat (exp (gen) y-0) (mul (rec l) w l-1 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul (rec l) w l-1 (rec y-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-0))))))))
+  (label 304)
+  (parent 246)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (alpha chi w expt) (y-0 l l-0 y-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w y-0 l-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w y-0 l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w y-0)))
+  (deflistener (cat (exp (gen) y-1) (mul w y-0 l-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-1)
+  (absent (x l) (x l-0) (y x) (y (mul w y-0 l-0)) (y l)
+    (l-0 (mul w y-0)) (y-1 alpha) (y-1 chi) (y-1 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-0 (mul w y-0)) (mul w y-0)
+    (5 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y w y-0 l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul y w y-0 l-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 l-0))
+              (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w y-0 l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 l-0))
+              (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (mul w y-0)))
+      (send (cat (exp (gen) y) (mul w y-0))))
+    ((recv (cat (exp (gen) y-1) (mul w y-0 l-0 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul w y-0 l-0 (rec y-1)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi l))))))))
+  (label 305)
+  (parent 246)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (x y rndx) (alpha chi expt)
+    (l l-0 y-0 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l-1) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-1) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) y-0) (mul l-0 (rec y-0) l-1)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 3) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen x y y-0)
+  (absent (x l-0) (x l-1) (y x) (y (mul l-0 l-1)) (y l-1) (y-0 alpha)
+    (y-0 chi) (y-0 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l-1) (pv b-0 l))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 9 3 ltx-gen 2) l-2 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l-1))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1))
+              (exp (gen) (mul x l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1))
+              (exp (gen) (mul x l-1)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) y-0) (mul l-0 (rec y-0) l-1)))
+      (send (cat (exp (gen) y-0) (mul l-0 (rec y-0) l-1))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l)))))
+  (label 306)
+  (parent 247)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx)
+    (alpha chi expt) (l-0 y-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-1 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) y-0) (mul (rec y-0) l-1 l-1)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 3) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul l-1 l-1)) (y-0 alpha)
+    (y-0 chi) (y-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 9 2 ltx-gen 2) l-2 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-1 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) y-0) (mul (rec y-0) l-1 l-1)))
+      (send (cat (exp (gen) y-0) (mul (rec y-0) l-1 l-1))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0)))))
+  (label 307)
+  (parent 247)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx)
+    (alpha chi expt) (l-0 l-1 y-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-1) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 3) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-1) (y l) (y x) (y l-1) (y-0 alpha) (y-0 chi)
+    (y-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (l-2 l-1) (w (mul l-1 (rec y-0))) (y-1 y-0)) (one)
+    (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (exp (gen) y-0) (mul l-1 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul l-1 (rec y-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0)))))
+  (label 308)
+  (parent 247)
+  (unrealized (0 0) (4 1) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 self name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn) (l x y rndx)
+    (alpha chi expt) (l-0 l-1 y-0 l-2 rndx))
+  (deflistener (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-1 l-2)) (chi x))
+  (deflistener (cat (exp (gen) y) l-2))
+  (deflistener (cat (exp (gen) y-0) (mul l-1 (rec y-0) l-2)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-0))
+  (defstrand ltx-gen 2 (ignore ignore-2) (self self)
+    (priv-stor priv-stor-2) (l l-2))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 3) (6 0)) ((8 1) (7 0)) ((9 1) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1 l-2)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul l-1 l-2)) (y-0 alpha)
+    (y-0 chi) (y-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 2) l-2 (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-1 l-2)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-2)) (send (cat (exp (gen) y) l-2)))
+    ((recv (cat (exp (gen) y-0) (mul l-1 (rec y-0) l-2)))
+      (send (cat (exp (gen) y-0) (mul l-1 (rec y-0) l-2))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0))))
+    ((load priv-stor-2 (cat pt-5 ignore-2))
+      (stor priv-stor-2 (cat pt-6 (pv self l-2)))))
+  (label 309)
+  (parent 247)
+  (unrealized (0 0) (4 1) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx)
+    (alpha chi expt) (l-0 rndx) (w expt) (l-1 l-2 y-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l-0) w l-2)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l) (eta (mul y (rec l-0) w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul (rec l-0) w l-2)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) w)))
+  (deflistener (cat (exp (gen) y-0) (mul (rec l-0) w l-2 (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 3) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-1 l-2)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-2) (y l) (y x) (y (mul (rec l-0) w l-2))
+    (y-0 alpha) (y-0 chi) (y-0 (mul (rec l-0) w)) (y-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-2) (pv b l) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence y-0 (mul (rec l-0) w))
+    (mul (rec l-0) w) (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l-0) w l-2)) (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y (rec l-0) w l-2))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) w))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w l-2))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l-0) w l-2)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w l-2))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) w)))
+      (send (cat (exp (gen) y) (mul (rec l-0) w))))
+    ((recv (cat (exp (gen) y-0) (mul (rec l-0) w l-2 (rec y-0))))
+      (send (cat (exp (gen) y-0) (mul (rec l-0) w l-2 (rec y-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 310)
+  (parent 247)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx)
+    (alpha chi w expt) (y-0 l-0 l-1 y-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w y-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y w y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w y-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w y-0)))
+  (deflistener (cat (exp (gen) y-1) (mul w y-0 l-1 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y-1) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 3) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen x y y-1)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul w y-0 l-1))
+    (l-1 (mul w y-0)) (y-1 alpha) (y-1 chi) (y-1 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-1 (mul w y-0)) (mul w y-0)
+    (5 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y w y-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w y-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 l-1))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w y-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 l-1))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w y-0)))
+      (send (cat (exp (gen) y) (mul w y-0))))
+    ((recv (cat (exp (gen) y-1) (mul w y-0 l-1 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul w y-0 l-1 (rec y-1)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0)))))
+  (label 311)
+  (parent 247)
+  (unrealized (0 0) (4 1) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (x y l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) l))
+  (deflistener (cat (exp (gen) l) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((3 2) (6 0)) ((4 3) (0 0)) ((4 3) (5 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y x) (y l) (y (mul l l-0)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (6 0)
+    (ch-msg priv-stor (cat pt (pv a l-0))))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) l)) (send (cat (exp (gen) y) l)))
+    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0)))
+  (label 312)
+  (parent 248)
+  (unrealized (0 0) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y l rndx)
+    (w expt) (l-0 l-1 l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) w l-0 l-2))
+      (exp (gen) (mul x l-2))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-2) (eta (mul y (rec l) w l-0 (rec l-1) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-2))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-2) (y y) (alpha (mul (rec l) w l-0 l-2)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) w l-0 (rec l-1) l-2)))
+  (deflistener (cat (exp (gen) l-2) (mul (rec l) w l-0)))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((3 2) (6 0)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l-1 l-2)
+  (uniq-gen x y)
+  (absent (x l-1) (x l-2) (y x) (y (mul (rec l) w l-0 l-2)) (y l-2)
+    (l-2 (mul (rec l) w l-0)) (l-2 (mul (rec l) w l-0 (rec l-1) l-2)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-2))
+  (facts (neq b a) (neq a b) (undisclosed l-2))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-2 (mul (rec l) w l-0))
+    (mul (rec l) w l-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) w l-0 l-2))
+         (exp (gen) (mul x l-2))))
+      (send
+        (hash (exp (gen) (mul y (rec l) w l-0 l-2))
+          (exp (gen) (mul x l-2)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) w l-0 (rec l-1) l-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w l-0 l-2))
+              (exp (gen) (mul x l-2)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-2)))
+      (send
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-2)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) w l-0 l-2)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w l-0 l-2))
+              (exp (gen) (mul x l-2)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w l-0 (rec l-1) l-2)))
+      (send (cat (exp (gen) y) (mul (rec l) w l-0 (rec l-1) l-2))))
+    ((recv (cat (exp (gen) l-2) (mul (rec l) w l-0)))
+      (send (cat (exp (gen) l-2) (mul (rec l) w l-0)))))
+  (label 313)
+  (parent 252)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y l rndx)
+    (w expt) (l-0 l-1 l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) w (rec l-0) l-2))
+      (exp (gen) (mul x l-2))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-2)
+    (eta (mul y (rec l) w (rec l-0) (rec l-1) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-2))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-2) (y y) (alpha (mul (rec l) w (rec l-0) l-2)) (chi x))
+  (deflistener
+    (cat (exp (gen) y) (mul (rec l) w (rec l-0) (rec l-1) l-2)))
+  (deflistener (cat (exp (gen) l-2) (mul (rec l) w (rec l-0))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((3 2) (6 0)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l-1 l-2)
+  (uniq-gen x y)
+  (absent (x l-1) (x l-2) (y x) (y (mul (rec l) w (rec l-0) l-2))
+    (y l-2) (l-1 (mul (rec l) w (rec l-0)))
+    (l-2 (mul (rec l) w (rec l-0) (rec l-1) l-2)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-2))
+  (facts (neq b a) (neq a b) (undisclosed l-2))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-1 (mul (rec l) w (rec l-0)))
+    (mul (rec l) w (rec l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) w (rec l-0) l-2))
+         (exp (gen) (mul x l-2))))
+      (send
+        (hash (exp (gen) (mul y (rec l) w (rec l-0) l-2))
+          (exp (gen) (mul x l-2)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) w (rec l-0) (rec l-1) l-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w (rec l-0) l-2))
+              (exp (gen) (mul x l-2)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-2)))
+      (send
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-2)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul (rec l) w (rec l-0) l-2))
+            (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w (rec l-0) l-2))
+              (exp (gen) (mul x l-2)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w (rec l-0) (rec l-1) l-2)))
+      (send
+        (cat (exp (gen) y) (mul (rec l) w (rec l-0) (rec l-1) l-2))))
+    ((recv (cat (exp (gen) l-2) (mul (rec l) w (rec l-0))))
+      (send (cat (exp (gen) l-2) (mul (rec l) w (rec l-0))))))
+  (label 314)
+  (parent 252)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (x y l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) l))
+  (deflistener (cat (exp (gen) l) l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((3 2) (6 0)) ((4 3) (0 0)) ((4 3) (5 0))
+    ((5 1) (1 3)) ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y x) (y l) (y (mul l l-0)) (l-0 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 2 ltx-gen 2) l-1 (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) l)) (send (cat (exp (gen) y) l)))
+    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0))))
+  (label 315)
+  (parent 253)
+  (unrealized (0 0) (5 0) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (w expt) (l l-0 l-1 l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w l l-0 l-2)) (exp (gen) (mul x l-2))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-2) (eta (mul y w l l-0 (rec l-1) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-2))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-2) (y y) (alpha (mul w l l-0 l-2)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w l l-0 (rec l-1) l-2)))
+  (deflistener (cat (exp (gen) l-2) (mul w l l-0)))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((3 2) (6 0)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l-1 l-2)
+  (uniq-gen x y)
+  (absent (x l-1) (x l-2) (y x) (y (mul w l l-0 l-2)) (y l-2)
+    (l-1 (mul w l l-0 (rec l-1) l-2)) (l-2 (mul w l l-0)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-2))
+  (facts (neq b a) (neq a b) (undisclosed l-2))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-2 (mul w l l-0)) (mul w l l-0)
+    (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w l l-0 l-2)) (exp (gen) (mul x l-2))))
+      (send
+        (hash (exp (gen) (mul y w l l-0 l-2)) (exp (gen) (mul x l-2)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w l l-0 (rec l-1) l-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l l-0 l-2))
+              (exp (gen) (mul x l-2)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-2)))
+      (send
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-2)))
+      (recv
+        (sig (body a (exp (gen) (mul w l l-0 l-2)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l l-0 l-2))
+              (exp (gen) (mul x l-2)))))))
+    ((recv (cat (exp (gen) y) (mul w l l-0 (rec l-1) l-2)))
+      (send (cat (exp (gen) y) (mul w l l-0 (rec l-1) l-2))))
+    ((recv (cat (exp (gen) l-2) (mul w l l-0)))
+      (send (cat (exp (gen) l-2) (mul w l l-0)))))
+  (label 316)
+  (parent 253)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (w expt) (l l-0 l-1 l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w l (rec l-0) l-2))
+      (exp (gen) (mul x l-2))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-2) (eta (mul y w l (rec l-0) (rec l-1) l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-2))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-2) (y y) (alpha (mul w l (rec l-0) l-2)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w l (rec l-0) (rec l-1) l-2)))
+  (deflistener (cat (exp (gen) l-2) (mul w l (rec l-0))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((3 2) (6 0)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l-1 l-2)
+  (uniq-gen x y)
+  (absent (x l-1) (x l-2) (y x) (y (mul w l (rec l-0) l-2)) (y l-2)
+    (l-1 (mul w l (rec l-0))) (l-1 (mul w l (rec l-0) (rec l-1) l-2)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-2))
+  (facts (neq b a) (neq a b) (undisclosed l-2))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-1 (mul w l (rec l-0)))
+    (mul w l (rec l-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w l (rec l-0) l-2))
+         (exp (gen) (mul x l-2))))
+      (send
+        (hash (exp (gen) (mul y w l (rec l-0) l-2))
+          (exp (gen) (mul x l-2)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w l (rec l-0) (rec l-1) l-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l (rec l-0) l-2))
+              (exp (gen) (mul x l-2)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-2)))
+      (send
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-2)))
+      (recv
+        (sig (body a (exp (gen) (mul w l (rec l-0) l-2)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l (rec l-0) l-2))
+              (exp (gen) (mul x l-2)))))))
+    ((recv (cat (exp (gen) y) (mul w l (rec l-0) (rec l-1) l-2)))
+      (send (cat (exp (gen) y) (mul w l (rec l-0) (rec l-1) l-2))))
+    ((recv (cat (exp (gen) l-2) (mul w l (rec l-0))))
+      (send (cat (exp (gen) l-2) (mul w l (rec l-0))))))
+  (label 317)
+  (parent 253)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-0))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul l-0 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (6 0)
+    (ch-msg priv-stor (cat pt (pv a l-1))))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-1)))
+  (label 318)
+  (parent 258)
+  (unrealized (0 0) (5 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 rndx) (w expt)
+    (l-1 l-2 l-3 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l-0) w l-1 l-3))
+      (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l) (eta (mul y (rec l-0) w l-1 (rec l-2) l-3)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul (rec l-0) w l-1 l-3)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) w l-1 (rec l-2) l-3)))
+  (deflistener (cat (exp (gen) l-3) (mul (rec l-0) w l-1)))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-3))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-2 l-3)
+  (uniq-gen x y)
+  (absent (x l) (x l-2) (y l) (y x) (y (mul (rec l-0) w l-1 l-3))
+    (l-3 (mul (rec l-0) w l-1))
+    (l-3 (mul (rec l-0) w l-1 (rec l-2) l-3)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-2) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-3 (mul (rec l-0) w l-1))
+    (mul (rec l-0) w l-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l-0) w l-1 l-3))
+         (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y (rec l-0) w l-1 l-3))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) w l-1 (rec l-2) l-3))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w l-1 l-3))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul (rec l-0) w l-1 l-3)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w l-1 l-3))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) w l-1 (rec l-2) l-3)))
+      (send (cat (exp (gen) y) (mul (rec l-0) w l-1 (rec l-2) l-3))))
+    ((recv (cat (exp (gen) l-3) (mul (rec l-0) w l-1)))
+      (send (cat (exp (gen) l-3) (mul (rec l-0) w l-1))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-3)))
+      (send
+        (sig (body self (exp (gen) l-3) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 319)
+  (parent 259)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 rndx) (w expt)
+    (l-1 l-2 l-3 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l-0) w (rec l-1) l-3))
+      (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l)
+    (eta (mul y (rec l-0) w (rec l-1) (rec l-2) l-3)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul (rec l-0) w (rec l-1) l-3)) (chi x))
+  (deflistener
+    (cat (exp (gen) y) (mul (rec l-0) w (rec l-1) (rec l-2) l-3)))
+  (deflistener (cat (exp (gen) l-3) (mul (rec l-0) w (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-3))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-2 l-3)
+  (uniq-gen x y)
+  (absent (x l) (x l-2) (y l) (y x) (y (mul (rec l-0) w (rec l-1) l-3))
+    (l-2 (mul (rec l-0) w (rec l-1)))
+    (l-3 (mul (rec l-0) w (rec l-1) (rec l-2) l-3)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-2) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-2 (mul (rec l-0) w (rec l-1)))
+    (mul (rec l-0) w (rec l-1)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l-0) w (rec l-1) l-3))
+         (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y (rec l-0) w (rec l-1) l-3))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) w (rec l-1) (rec l-2) l-3))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w (rec l-1) l-3))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul (rec l-0) w (rec l-1) l-3))
+            (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w (rec l-1) l-3))
+              (exp (gen) (mul l x)))))))
+    ((recv
+       (cat (exp (gen) y) (mul (rec l-0) w (rec l-1) (rec l-2) l-3)))
+      (send
+        (cat (exp (gen) y) (mul (rec l-0) w (rec l-1) (rec l-2) l-3))))
+    ((recv (cat (exp (gen) l-3) (mul (rec l-0) w (rec l-1))))
+      (send (cat (exp (gen) l-3) (mul (rec l-0) w (rec l-1)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-3)))
+      (send
+        (sig (body self (exp (gen) l-3) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 320)
+  (parent 259)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-0))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul l-0 l-1)) (l-1 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 8 2 ltx-gen 2) l-2 (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 321)
+  (parent 260)
+  (unrealized (0 0) (5 0) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx) (w expt)
+    (l-0 l-1 l-2 l-3 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w l-0 l-1 l-3)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l) (eta (mul y w l-0 l-1 (rec l-2) l-3)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w l-0 l-1 l-3)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w l-0 l-1 (rec l-2) l-3)))
+  (deflistener (cat (exp (gen) l-3) (mul w l-0 l-1)))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-3))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-2 l-3)
+  (uniq-gen x y)
+  (absent (x l) (x l-2) (y l) (y x) (y (mul w l-0 l-1 l-3))
+    (l-2 (mul w l-0 l-1 (rec l-2) l-3)) (l-3 (mul w l-0 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-2) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-3 (mul w l-0 l-1))
+    (mul w l-0 l-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w l-0 l-1 l-3)) (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y w l-0 l-1 l-3)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w l-0 l-1 (rec l-2) l-3))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0 l-1 l-3))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w l-0 l-1 l-3)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0 l-1 l-3))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w l-0 l-1 (rec l-2) l-3)))
+      (send (cat (exp (gen) y) (mul w l-0 l-1 (rec l-2) l-3))))
+    ((recv (cat (exp (gen) l-3) (mul w l-0 l-1)))
+      (send (cat (exp (gen) l-3) (mul w l-0 l-1))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-3)))
+      (send
+        (sig (body self (exp (gen) l-3) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 322)
+  (parent 260)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx) (w expt)
+    (l-0 l-1 l-2 l-3 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w l-0 (rec l-1) l-3))
+      (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l) (eta (mul y w l-0 (rec l-1) (rec l-2) l-3)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w l-0 (rec l-1) l-3)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w l-0 (rec l-1) (rec l-2) l-3)))
+  (deflistener (cat (exp (gen) l-3) (mul w l-0 (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-3))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-2 l-3)
+  (uniq-gen x y)
+  (absent (x l) (x l-2) (y l) (y x) (y (mul w l-0 (rec l-1) l-3))
+    (l-2 (mul w l-0 (rec l-1)))
+    (l-2 (mul w l-0 (rec l-1) (rec l-2) l-3)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-2) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-2 (mul w l-0 (rec l-1)))
+    (mul w l-0 (rec l-1)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w l-0 (rec l-1) l-3))
+         (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y w l-0 (rec l-1) l-3))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w l-0 (rec l-1) (rec l-2) l-3))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0 (rec l-1) l-3))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul w l-0 (rec l-1) l-3)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0 (rec l-1) l-3))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w l-0 (rec l-1) (rec l-2) l-3)))
+      (send (cat (exp (gen) y) (mul w l-0 (rec l-1) (rec l-2) l-3))))
+    ((recv (cat (exp (gen) l-3) (mul w l-0 (rec l-1))))
+      (send (cat (exp (gen) l-3) (mul w l-0 (rec l-1)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-3)))
+      (send
+        (sig (body self (exp (gen) l-3) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 323)
+  (parent 260)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (3 2)) ((1 2) (9 0)) ((2 1) (3 0)) ((2 2) (1 1))
+    ((3 3) (1 3)) ((3 3) (7 0)) ((4 1) (3 1)) ((5 1) (1 0))
+    ((5 1) (8 0)) ((5 2) (4 0)) ((6 1) (0 0)) ((7 1) (6 0))
+    ((8 2) (7 0)) ((9 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)) ((5 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul l x)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 324)
+  (parent 265)
+  (unrealized (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) l-0) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (3 2)) ((1 2) (9 0)) ((2 1) (3 0)) ((2 2) (1 1))
+    ((3 3) (1 3)) ((3 3) (7 0)) ((4 1) (3 1)) ((5 1) (1 0))
+    ((5 1) (8 0)) ((5 2) (4 0)) ((6 1) (0 0)) ((7 1) (6 0))
+    ((8 2) (7 0)) ((9 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)) ((5 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul l x)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) l-0) (one)))
+      (send (cat (exp (gen) l-0) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 325)
+  (parent 265)
+  (unrealized (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (one)) (chi x))
+  (deflistener (cat (exp (gen) y) (rec l-0)))
+  (deflistener l-0)
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (4 2)) ((1 2) (9 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (8 0))
+    ((5 1) (1 3)) ((6 1) (5 0)) ((7 2) (6 0)) ((8 1) (0 0))
+    ((9 1) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (one)) (y l) (y x))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul l x)) (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) y) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv (sig (body a (gen) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (rec l-0)))
+      (send (cat (exp (gen) y) (rec l-0)))) ((recv l-0) (send l-0))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) y) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 326)
+  (parent 266)
+  (unrealized (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (one)) (chi x))
+  (deflistener (cat (exp (gen) y) (rec l-0)))
+  (deflistener l-0)
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (4 2)) ((1 2) (9 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (8 0))
+    ((5 1) (1 3)) ((6 1) (5 0)) ((7 2) (6 0)) ((8 1) (0 0))
+    ((9 1) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (one)) (y l) (y x))
+  (precur (5 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul l x)) (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) y) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0)))
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv (sig (body a (gen) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b (hash (exp (gen) y) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (rec l-0)))
+      (send (cat (exp (gen) y) (rec l-0)))) ((recv l-0) (send l-0))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) y) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 327)
+  (parent 266)
+  (unrealized (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (3 2)) ((1 2) (9 0)) ((2 1) (3 0)) ((2 2) (1 1))
+    ((3 3) (4 0)) ((3 3) (7 0)) ((4 1) (1 3)) ((5 1) (1 0))
+    ((5 1) (8 0)) ((5 2) (3 1)) ((6 1) (0 0)) ((7 1) (6 0))
+    ((8 2) (7 0)) ((9 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)) ((5 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul l x)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 328)
+  (parent 267)
+  (unrealized (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) y) l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (3 2)) ((1 2) (9 0)) ((2 1) (3 0)) ((2 2) (1 1))
+    ((3 3) (4 0)) ((3 3) (7 0)) ((4 1) (1 3)) ((5 1) (1 0))
+    ((5 1) (8 0)) ((5 2) (3 1)) ((6 1) (0 0)) ((7 1) (6 0))
+    ((8 2) (7 0)) ((9 1) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (4 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((5 1) (1 0)) ((5 1) (8 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul l x)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 329)
+  (parent 267)
+  (unrealized (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (beta w expt) (x-0 x-1 x-2 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w x-0 (rec x-1) x-2))
+      (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w x-0 (rec x-1) x-2 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w x-0 (rec x-1) x-2)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w x-0 (rec x-1) x-2 (rec l-0))))
+  (deflistener (cat (exp (gen) x-2) (mul w x-0 (rec x-1))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-2) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-2)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w x-0 (rec x-1) x-2))
+    (x-2 beta) (x-2 l-0) (l-0 (mul w x-0 (rec x-1)))
+    (l-0 (mul w x-0 (rec x-1) x-2 (rec l-0))))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-0 (mul w x-0 (rec x-1)))
+    (mul w x-0 (rec x-1)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w x-0 (rec x-1) x-2))
+         (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y w x-0 (rec x-1) x-2))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w x-0 (rec x-1) x-2 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 (rec x-1) x-2))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul w x-0 (rec x-1) x-2)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 (rec x-1) x-2))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w x-0 (rec x-1) x-2 (rec l-0))))
+      (send (cat (exp (gen) y) (mul w x-0 (rec x-1) x-2 (rec l-0)))))
+    ((recv (cat (exp (gen) x-2) (mul w x-0 (rec x-1))))
+      (send (cat (exp (gen) x-2) (mul w x-0 (rec x-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-2)))))
+  (label 330)
+  (parent 271)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (beta w expt) (x-0 l-0 x-1 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w x-0 l-0 x-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y w x-0 l-0 x-1 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w x-0 l-0 x-1)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w x-0 l-0 x-1 (rec l-1))))
+  (deflistener (cat (exp (gen) x-1) (mul w x-0 l-0)))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-1) (x x-1) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-1)
+  (uniq-gen x y x-1)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul w x-0 l-0 x-1)) (x-1 beta)
+    (x-1 (mul w x-0 l-0)) (x-1 l-1) (l-1 (mul w x-0 l-0 x-1 (rec l-1))))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence x-1 (mul w x-0 l-0))
+    (mul w x-0 l-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w x-0 l-0 x-1)) (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y w x-0 l-0 x-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w x-0 l-0 x-1 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 l-0 x-1))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w x-0 l-0 x-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 l-0 x-1))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w x-0 l-0 x-1 (rec l-1))))
+      (send (cat (exp (gen) y) (mul w x-0 l-0 x-1 (rec l-1)))))
+    ((recv (cat (exp (gen) x-1) (mul w x-0 l-0)))
+      (send (cat (exp (gen) x-1) (mul w x-0 l-0))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-1)))))
+  (label 331)
+  (parent 271)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (beta w expt) (l-0 x-0 x-1 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w (rec l-0) (rec x-0) x-1))
+      (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l)
+    (eta (mul y w (rec l-0) (rec x-0) x-1 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w (rec l-0) (rec x-0) x-1)) (chi x))
+  (deflistener
+    (cat (exp (gen) y) (mul w (rec l-0) (rec x-0) x-1 (rec l-1))))
+  (deflistener (cat (exp (gen) x-1) (mul w (rec l-0) (rec x-0))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-1) (x x-1) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-1)
+  (uniq-gen x y x-1)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul w (rec l-0) (rec x-0) x-1))
+    (x-1 beta) (x-1 (mul w (rec l-0) (rec x-0) x-1 (rec l-1))) (x-1 l-1)
+    (l-1 (mul w (rec l-0) (rec x-0))))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-1 (mul w (rec l-0) (rec x-0)))
+    (mul w (rec l-0) (rec x-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w (rec l-0) (rec x-0) x-1))
+         (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y w (rec l-0) (rec x-0) x-1))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w (rec l-0) (rec x-0) x-1 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l-0) (rec x-0) x-1))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul w (rec l-0) (rec x-0) x-1))
+            (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l-0) (rec x-0) x-1))
+              (exp (gen) (mul l x)))))))
+    ((recv
+       (cat (exp (gen) y) (mul w (rec l-0) (rec x-0) x-1 (rec l-1))))
+      (send
+        (cat (exp (gen) y) (mul w (rec l-0) (rec x-0) x-1 (rec l-1)))))
+    ((recv (cat (exp (gen) x-1) (mul w (rec l-0) (rec x-0))))
+      (send (cat (exp (gen) x-1) (mul w (rec l-0) (rec x-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-1)))))
+  (label 332)
+  (parent 272)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (beta w expt) (l-0 l-1 x-0 l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w (rec l-0) l-1 x-0))
+      (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l) (eta (mul y w (rec l-0) l-1 x-0 (rec l-2))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w (rec l-0) l-1 x-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w (rec l-0) l-1 x-0 (rec l-2))))
+  (deflistener (cat (exp (gen) x-0) (mul w (rec l-0) l-1)))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor)
+    (l l-2) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-2)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-2) (y l) (y x) (y (mul w (rec l-0) l-1 x-0))
+    (x-0 beta) (x-0 (mul w (rec l-0) l-1))
+    (x-0 (mul w (rec l-0) l-1 x-0 (rec l-2))) (x-0 l-2))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-2) (pv b l))
+  (facts (neq a b-0) (neq b-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence x-0 (mul w (rec l-0) l-1))
+    (mul w (rec l-0) l-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w (rec l-0) l-1 x-0))
+         (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y w (rec l-0) l-1 x-0))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w (rec l-0) l-1 x-0 (rec l-2)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l-0) l-1 x-0))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul w (rec l-0) l-1 x-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l-0) l-1 x-0))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w (rec l-0) l-1 x-0 (rec l-2))))
+      (send (cat (exp (gen) y) (mul w (rec l-0) l-1 x-0 (rec l-2)))))
+    ((recv (cat (exp (gen) x-0) (mul w (rec l-0) l-1)))
+      (send (cat (exp (gen) x-0) (mul w (rec l-0) l-1))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))))
+  (label 333)
+  (parent 272)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (beta expt) (l rndx) (w expt) (l-0 l-1 l-2 x-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) w l-1 x-0))
+      (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l-0) (eta (mul y (rec l) w l-1 (rec l-2) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul (rec l) w l-1 x-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) w l-1 (rec l-2) x-0)))
+  (deflistener (cat (exp (gen) x-0) (mul (rec l) w l-1)))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l-0 l-2)
+  (uniq-gen x y x-0)
+  (absent (x l-0) (x l-2) (y x) (y (mul (rec l) w l-1 x-0)) (y l-0)
+    (x-0 beta) (x-0 (mul (rec l) w l-1))
+    (x-0 (mul (rec l) w l-1 (rec l-2) x-0)) (x-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-2) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence x-0 (mul (rec l) w l-1))
+    (mul (rec l) w l-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) w l-1 x-0))
+         (exp (gen) (mul x l-0))))
+      (send
+        (hash (exp (gen) (mul y (rec l) w l-1 x-0))
+          (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) w l-1 (rec l-2) x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w l-1 x-0))
+              (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) w l-1 x-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w l-1 x-0))
+              (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w l-1 (rec l-2) x-0)))
+      (send (cat (exp (gen) y) (mul (rec l) w l-1 (rec l-2) x-0))))
+    ((recv (cat (exp (gen) x-0) (mul (rec l) w l-1)))
+      (send (cat (exp (gen) x-0) (mul (rec l) w l-1))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 334)
+  (parent 276)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (beta expt) (l rndx) (w expt) (l-0 x-0 l-1 x-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) w (rec x-0) x-1))
+      (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-0)
+    (eta (mul y (rec l) w (rec x-0) (rec l-1) x-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul (rec l) w (rec x-0) x-1)) (chi x))
+  (deflistener
+    (cat (exp (gen) y) (mul (rec l) w (rec x-0) (rec l-1) x-1)))
+  (deflistener (cat (exp (gen) x-1) (mul (rec l) w (rec x-0))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-1) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l-0 l-1)
+  (uniq-gen x y x-1)
+  (absent (x l-0) (x l-1) (y x) (y (mul (rec l) w (rec x-0) x-1))
+    (y l-0) (l-1 (mul (rec l) w (rec x-0))) (x-1 beta)
+    (x-1 (mul (rec l) w (rec x-0) (rec l-1) x-1)) (x-1 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-1 (mul (rec l) w (rec x-0)))
+    (mul (rec l) w (rec x-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) w (rec x-0) x-1))
+         (exp (gen) (mul x l-0))))
+      (send
+        (hash (exp (gen) (mul y (rec l) w (rec x-0) x-1))
+          (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) w (rec x-0) (rec l-1) x-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w (rec x-0) x-1))
+              (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul (rec l) w (rec x-0) x-1))
+            (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w (rec x-0) x-1))
+              (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w (rec x-0) (rec l-1) x-1)))
+      (send
+        (cat (exp (gen) y) (mul (rec l) w (rec x-0) (rec l-1) x-1))))
+    ((recv (cat (exp (gen) x-1) (mul (rec l) w (rec x-0))))
+      (send (cat (exp (gen) x-1) (mul (rec l) w (rec x-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-1)))))
+  (label 335)
+  (parent 276)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (beta expt) (l x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y x-0 l-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul x-0 l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) x-0))
+  (deflistener (cat (exp (gen) x-0) l-0))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l) (x x-0) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 1) (7 0)) ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y x) (y l) (y (mul x-0 l-0)) (x-0 beta) (x-0 l)
+    (l-0 x-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 8 2 ltx-gen 2) l-1 (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y x-0 l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul y x-0 l-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y x-0 l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul x-0 l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y x-0 l-0)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) x-0)) (send (cat (exp (gen) y) x-0)))
+    ((recv (cat (exp (gen) x-0) l-0)) (send (cat (exp (gen) x-0) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0)))))
+  (label 336)
+  (parent 277)
+  (unrealized (0 0) (5 0) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (beta w expt) (x-0 l l-0 l-1 x-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w x-0 l-0 x-1)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y w x-0 l-0 (rec l-1) x-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w x-0 l-0 x-1)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w x-0 l-0 (rec l-1) x-1)))
+  (deflistener (cat (exp (gen) x-1) (mul w x-0 l-0)))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l) (x x-1) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-1)
+  (uniq-gen x y x-1)
+  (absent (x l) (x l-1) (y x) (y (mul w x-0 l-0 x-1)) (y l)
+    (l-1 (mul w x-0 l-0 (rec l-1) x-1)) (x-1 beta) (x-1 (mul w x-0 l-0))
+    (x-1 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence x-1 (mul w x-0 l-0))
+    (mul w x-0 l-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w x-0 l-0 x-1)) (exp (gen) (mul x l))))
+      (send
+        (hash (exp (gen) (mul y w x-0 l-0 x-1)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w x-0 l-0 (rec l-1) x-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 l-0 x-1))
+              (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w x-0 l-0 x-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 l-0 x-1))
+              (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (mul w x-0 l-0 (rec l-1) x-1)))
+      (send (cat (exp (gen) y) (mul w x-0 l-0 (rec l-1) x-1))))
+    ((recv (cat (exp (gen) x-1) (mul w x-0 l-0)))
+      (send (cat (exp (gen) x-1) (mul w x-0 l-0))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-1)))))
+  (label 337)
+  (parent 277)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (beta w expt) (x-0 l x-1 l-0 x-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w x-0 (rec x-1) x-2))
+      (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w x-0 (rec x-1) (rec l-0) x-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w x-0 (rec x-1) x-2)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w x-0 (rec x-1) (rec l-0) x-2)))
+  (deflistener (cat (exp (gen) x-2) (mul w x-0 (rec x-1))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l) (x x-2) (beta beta))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-2)
+  (absent (x l) (x l-0) (y x) (y (mul w x-0 (rec x-1) x-2)) (y l)
+    (l-0 (mul w x-0 (rec x-1)))
+    (l-0 (mul w x-0 (rec x-1) (rec l-0) x-2)) (x-2 beta) (x-2 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-0 (mul w x-0 (rec x-1)))
+    (mul w x-0 (rec x-1)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w x-0 (rec x-1) x-2))
+         (exp (gen) (mul x l))))
+      (send
+        (hash (exp (gen) (mul y w x-0 (rec x-1) x-2))
+          (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w x-0 (rec x-1) (rec l-0) x-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 (rec x-1) x-2))
+              (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul w x-0 (rec x-1) x-2)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 (rec x-1) x-2))
+              (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (mul w x-0 (rec x-1) (rec l-0) x-2)))
+      (send (cat (exp (gen) y) (mul w x-0 (rec x-1) (rec l-0) x-2))))
+    ((recv (cat (exp (gen) x-2) (mul w x-0 (rec x-1))))
+      (send (cat (exp (gen) x-2) (mul w x-0 (rec x-1)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-2)))))
+  (label 338)
+  (parent 277)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx) (beta expt)
+    (l-0 rndx) (w expt) (l-1 l-2 l-3 x-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l-0) w l-2 x-0))
+      (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-3) (x x) (beta l) (eta (mul y (rec l-0) w l-2 (rec l-3) x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-3))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul (rec l-0) w l-2 x-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) w l-2 (rec l-3) x-0)))
+  (deflistener (cat (exp (gen) x-0) (mul (rec l-0) w l-2)))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-1 l-3)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-3) (y l) (y x) (y (mul (rec l-0) w l-2 x-0))
+    (x-0 beta) (x-0 (mul (rec l-0) w l-2))
+    (x-0 (mul (rec l-0) w l-2 (rec l-3) x-0)) (x-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-3) (pv b l) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence x-0 (mul (rec l-0) w l-2))
+    (mul (rec l-0) w l-2) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l-0) w l-2 x-0))
+         (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y (rec l-0) w l-2 x-0))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-3)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) w l-2 (rec l-3) x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w l-2 x-0))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-3))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul (rec l-0) w l-2 x-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w l-2 x-0))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) w l-2 (rec l-3) x-0)))
+      (send (cat (exp (gen) y) (mul (rec l-0) w l-2 (rec l-3) x-0))))
+    ((recv (cat (exp (gen) x-0) (mul (rec l-0) w l-2)))
+      (send (cat (exp (gen) x-0) (mul (rec l-0) w l-2))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
+  (label 339)
+  (parent 282)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx) (beta expt)
+    (l-0 rndx) (w expt) (l-1 x-0 l-2 x-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l-0) w (rec x-0) x-1))
+      (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l)
+    (eta (mul y (rec l-0) w (rec x-0) (rec l-2) x-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul (rec l-0) w (rec x-0) x-1)) (chi x))
+  (deflistener
+    (cat (exp (gen) y) (mul (rec l-0) w (rec x-0) (rec l-2) x-1)))
+  (deflistener (cat (exp (gen) x-1) (mul (rec l-0) w (rec x-0))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-1) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-1 l-2)
+  (uniq-gen x y x-1)
+  (absent (x l) (x l-2) (y l) (y x) (y (mul (rec l-0) w (rec x-0) x-1))
+    (l-2 (mul (rec l-0) w (rec x-0))) (x-1 beta)
+    (x-1 (mul (rec l-0) w (rec x-0) (rec l-2) x-1)) (x-1 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-2) (pv b l) (pv a-0 l-1))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-2 (mul (rec l-0) w (rec x-0)))
+    (mul (rec l-0) w (rec x-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l-0) w (rec x-0) x-1))
+         (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y (rec l-0) w (rec x-0) x-1))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) w (rec x-0) (rec l-2) x-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w (rec x-0) x-1))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul (rec l-0) w (rec x-0) x-1))
+            (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w (rec x-0) x-1))
+              (exp (gen) (mul l x)))))))
+    ((recv
+       (cat (exp (gen) y) (mul (rec l-0) w (rec x-0) (rec l-2) x-1)))
+      (send
+        (cat (exp (gen) y) (mul (rec l-0) w (rec x-0) (rec l-2) x-1))))
+    ((recv (cat (exp (gen) x-1) (mul (rec l-0) w (rec x-0))))
+      (send (cat (exp (gen) x-1) (mul (rec l-0) w (rec x-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-1))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-1)))))
+  (label 340)
+  (parent 282)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y x-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul x-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) x-0))
+  (deflistener (cat (exp (gen) x-0) l-1))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul x-0 l-1)) (x-0 beta)
+    (x-0 l-0) (l-1 x-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 9 2 ltx-gen 2) l-2 (6 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y x-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y x-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y x-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul x-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y x-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) x-0)) (send (cat (exp (gen) y) x-0)))
+    ((recv (cat (exp (gen) x-0) l-1)) (send (cat (exp (gen) x-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-0)))))
+  (label 341)
+  (parent 283)
+  (unrealized (0 0) (5 0) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx) (beta w expt)
+    (x-0 l-0 l-1 l-2 x-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w x-0 l-1 x-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l) (eta (mul y w x-0 l-1 (rec l-2) x-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w x-0 l-1 x-1)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w x-0 l-1 (rec l-2) x-1)))
+  (deflistener (cat (exp (gen) x-1) (mul w x-0 l-1)))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-1) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-2)
+  (uniq-gen x y x-1)
+  (absent (x l) (x l-2) (y l) (y x) (y (mul w x-0 l-1 x-1))
+    (l-2 (mul w x-0 l-1 (rec l-2) x-1)) (x-1 beta) (x-1 (mul w x-0 l-1))
+    (x-1 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-2) (pv b l) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence x-1 (mul w x-0 l-1))
+    (mul w x-0 l-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w x-0 l-1 x-1)) (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y w x-0 l-1 x-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w x-0 l-1 (rec l-2) x-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 l-1 x-1))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w x-0 l-1 x-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 l-1 x-1))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w x-0 l-1 (rec l-2) x-1)))
+      (send (cat (exp (gen) y) (mul w x-0 l-1 (rec l-2) x-1))))
+    ((recv (cat (exp (gen) x-1) (mul w x-0 l-1)))
+      (send (cat (exp (gen) x-1) (mul w x-0 l-1))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-1))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-0)))))
+  (label 342)
+  (parent 283)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx) (beta w expt)
+    (x-0 l-0 x-1 l-1 x-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w x-0 (rec x-1) x-2))
+      (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y w x-0 (rec x-1) (rec l-1) x-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w x-0 (rec x-1) x-2)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w x-0 (rec x-1) (rec l-1) x-2)))
+  (deflistener (cat (exp (gen) x-2) (mul w x-0 (rec x-1))))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-2) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 2) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen x y x-2)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul w x-0 (rec x-1) x-2))
+    (l-1 (mul w x-0 (rec x-1)))
+    (l-1 (mul w x-0 (rec x-1) (rec l-1) x-2)) (x-2 beta) (x-2 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-1 (mul w x-0 (rec x-1)))
+    (mul w x-0 (rec x-1)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w x-0 (rec x-1) x-2))
+         (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y w x-0 (rec x-1) x-2))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w x-0 (rec x-1) (rec l-1) x-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 (rec x-1) x-2))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul w x-0 (rec x-1) x-2)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w x-0 (rec x-1) x-2))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w x-0 (rec x-1) (rec l-1) x-2)))
+      (send (cat (exp (gen) y) (mul w x-0 (rec x-1) (rec l-1) x-2))))
+    ((recv (cat (exp (gen) x-2) (mul w x-0 (rec x-1))))
+      (send (cat (exp (gen) x-2) (mul w x-0 (rec x-1)))))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-2))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-0)))))
+  (label 343)
+  (parent 283)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) l-0))
+  (deflistener (cat (gen) (mul l-0 l-0)))
+  (deflistener l-0)
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (6 0)) ((8 2) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-0)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (7 0)
+    (ch-msg priv-stor (cat pt (pv a l-0))))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((recv (cat (gen) (mul l-0 l-0))) (send (cat (gen) (mul l-0 l-0))))
+    ((recv l-0) (send l-0))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0)))
+  (label 344)
+  (parent 288)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (gen) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (8 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))) (0 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))))
+  (label 345)
+  (parent 289)
+  (unrealized (8 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (gen) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0) (l-0 (one)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (6 0)
+    (ch-msg priv-stor (cat pt (pv a l-0))))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0)))
+  (label 346)
+  (parent 290)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y rndx) (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (gen) (mul w l-0)))
+  (deflistener l-0)
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (6 0)) ((8 2) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w l-0)) (l-0 w))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (7 0)
+    (ch-msg priv-stor (cat pt (pv a l-0))))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (gen) (mul w l-0))) (send (cat (gen) (mul w l-0))))
+    ((recv l-0) (send l-0))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0)))
+  (label 347)
+  (parent 292)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y rndx) (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha w) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w (rec l-0))))
+  (deflistener (cat (gen) w))
+  (deflistener l-0)
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (9 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (5 0)) ((8 2) (7 0)) ((9 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y w))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener (cat (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+    (hash (exp (gen) (mul y w)) (exp (gen) (mul l x))) (0 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv (sig (body a (exp (gen) w) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w (rec l-0))))
+      (send (cat (exp (gen) y) (mul w (rec l-0)))))
+    ((recv (cat (gen) w)) (send (cat (gen) w))) ((recv l-0) (send l-0))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y w)) (exp (gen) (mul l x))))))
+  (label 348)
+  (parent 293)
+  (unrealized (9 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x y rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul l-0 x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x) (beta l-0)
+    (eta (mul (rec l) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (one)) (chi x))
+  (deflistener (cat (exp (gen) y) (rec l)))
+  (deflistener (cat (exp (gen) l) (rec l)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (3 2)) ((1 2) (8 0)) ((2 1) (3 0)) ((2 2) (1 1))
+    ((3 3) (4 0)) ((3 3) (7 0)) ((4 1) (1 3)) ((5 1) (3 1))
+    ((6 1) (1 0)) ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (one)) (y l-0) (y x))
+  (precur (4 0) (5 0))
+  (gen-st (pv b l-0) (pv self l))
+  (facts (neq b self) (neq self b) (undisclosed l-0))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul l-0 x)) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) y) (exp (gen) (mul l-0 x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y))
+          (enc na nb self b
+            (hash (exp (gen) y) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body self (gen) (pubk "sig" self)) (privk "sig" self)))
+      (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) y) (exp (gen) (mul l-0 x)))))))
+    ((recv (cat (exp (gen) y) (rec l)))
+      (send (cat (exp (gen) y) (rec l))))
+    ((recv (cat (exp (gen) l) (rec l)))
+      (send (cat (exp (gen) l) (rec l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) y) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 349)
+  (parent 294)
+  (unrealized (1 3) (4 0) (5 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l l-0 x y rndx))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul l-0 x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x) (beta l-0)
+    (eta (mul (rec l) y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (one)) (chi x))
+  (deflistener (cat (exp (gen) y) (rec l)))
+  (deflistener (cat (exp (gen) l) (rec l)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (3 2)) ((1 2) (8 0)) ((2 1) (3 0)) ((2 2) (1 1))
+    ((3 3) (4 0)) ((3 3) (7 0)) ((4 1) (1 3)) ((5 1) (3 1))
+    ((6 1) (1 0)) ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y (one)) (y l-0) (y x))
+  (precur (4 0) (5 0))
+  (gen-st (pv b l-0) (pv self l))
+  (facts (neq b self) (neq self b) (undisclosed l-0))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul l-0 x)) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) y) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) y) (exp (gen) (mul l-0 x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y))
+          (enc na nb self b
+            (hash (exp (gen) y) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body self (gen) (pubk "sig" self)) (privk "sig" self)))
+      (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) y) (exp (gen) (mul l-0 x)))))))
+    ((recv (cat (exp (gen) y) (rec l)))
+      (send (cat (exp (gen) y) (rec l))))
+    ((recv (cat (exp (gen) l) (rec l)))
+      (send (cat (exp (gen) l) (rec l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) y) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 350)
+  (parent 294)
+  (unrealized (1 3) (4 0) (5 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l l-0 rndx)
+    (w expt) (x y rndx))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul l-0 x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x) (beta l-0)
+    (eta (mul (rec l) w y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha w) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) w)))
+  (deflistener (cat (exp (gen) l) (mul (rec l) w)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) y) w))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (8 0)) ((4 1) (1 3)) ((5 1) (3 1)) ((6 1) (1 0))
+    ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l-0) (y w) (y x))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l-0) (pv self l))
+  (facts (neq b self) (neq self b) (undisclosed l-0))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 9 3 resp 4) (exp (gen) y-0) (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul l-0 x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y))
+          (enc na nb self b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body self (exp (gen) w) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul l-0 x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w)))
+      (send (cat (exp (gen) y) (mul (rec l) w))))
+    ((recv (cat (exp (gen) l) (mul (rec l) w)))
+      (send (cat (exp (gen) l) (mul (rec l) w))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
+  (label 351)
+  (parent 295)
+  (unrealized (1 3) (4 0) (5 0) (7 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self a b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x l-0 rndx) (beta expt)
+    (l-1 rndx) (w expt) (x-0 y x-1 rndx))
+  (deflistener (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta l)
+    (eta (mul (rec l-1) w x-0 y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha (mul w x-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-1) w x-0)))
+  (deflistener (cat (exp (gen) l-1) (mul (rec l-1) w x-0)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-1))
+  (deflistener (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) x-1) (mul w x-0 y (rec x-1))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-1) (beta beta))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (8 0)) ((4 1) (1 3)) ((5 1) (3 1)) ((6 1) (1 0))
+    ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)) ((9 2) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-1)
+  (uniq-gen x y x-1)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul w x-0)) (x-1 l-0)
+    (x-1 beta))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l) (pv self l-1) (pv a l-0))
+  (facts (neq a b-0) (neq b-0 a) (neq b self) (neq self b)
+    (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-1) (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) w x-0 y))
+          (enc na nb self b
+            (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) (mul w x-0)) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-1) w x-0)))
+      (send (cat (exp (gen) y) (mul (rec l-1) w x-0))))
+    ((recv (cat (exp (gen) l-1) (mul (rec l-1) w x-0)))
+      (send (cat (exp (gen) l-1) (mul (rec l-1) w x-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) x-1) (mul w x-0 y (rec x-1))))
+      (send (cat (exp (gen) x-1) (mul w x-0 y (rec x-1)))))
+    ((load priv-stor-1 (cat pt-3 (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-1)))))
+  (label 352)
+  (parent 295)
+  (unrealized (1 3) (4 0) (5 0) (7 0) (8 0) (9 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x l-0 rndx)
+    (w expt) (y rndx))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l)
+    (eta (mul (rec l-0) w y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha w) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) w)))
+  (deflistener (cat (exp (gen) l-0) (mul (rec l-0) w)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul l x))))
+  (deflistener (cat (gen) (mul w y)))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (8 0)) ((4 1) (1 3)) ((5 1) (3 1)) ((6 1) (1 0))
+    ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y w))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (y-0 y) (w-0 (mul (rec l-0) w)) (l-1 l-0)
+      (w-1 (mul w y)) (y-1 y) (w (mul w y))) (gen) (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w y))
+          (enc na nb self b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) w) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) w)))
+      (send (cat (exp (gen) y) (mul (rec l-0) w))))
+    ((recv (cat (exp (gen) l-0) (mul (rec l-0) w)))
+      (send (cat (exp (gen) l-0) (mul (rec l-0) w))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul l x)))))
+    ((recv (cat (gen) (mul w y))) (send (cat (gen) (mul w y)))))
+  (label 353)
+  (parent 295)
+  (unrealized (1 3) (4 0) (5 0) (7 0) (8 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (w expt)
+    (l l-0 x y x-0 rndx))
+  (deflistener (hash (exp (gen) (mul w x y)) (exp (gen) (mul l-0 x-0))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x-0) (beta l-0)
+    (eta (mul w (rec l) x y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (mul w x)) (chi x-0))
+  (deflistener (cat (exp (gen) y) (mul w (rec l) x)))
+  (deflistener (cat (exp (gen) l) (mul w (rec l) x)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) (mul w x y)) (exp (gen) (mul l-0 x-0))))
+  (deflistener (cat (exp (gen) x-0) (mul w x y (rec x-0))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (8 0)) ((4 1) (1 3)) ((5 1) (3 1)) ((6 1) (1 0))
+    ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x-0)
+  (absent (y (mul w x)) (y l-0) (y x-0) (x-0 l) (x-0 l-0))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l-0) (pv self l))
+  (facts (neq b self) (neq self b) (undisclosed l-0))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 9 1 init 3) (exp (gen) x-1) (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul w x y)) (exp (gen) (mul l-0 x-0))))
+      (send (hash (exp (gen) (mul w x y)) (exp (gen) (mul l-0 x-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul w (rec l) x y))
+          (enc na nb self b
+            (hash (exp (gen) (mul w x y)) (exp (gen) (mul l-0 x-0)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body self (exp (gen) (mul w x)) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x-0)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul w x y)) (exp (gen) (mul l-0 x-0)))))))
+    ((recv (cat (exp (gen) y) (mul w (rec l) x)))
+      (send (cat (exp (gen) y) (mul w (rec l) x))))
+    ((recv (cat (exp (gen) l) (mul w (rec l) x)))
+      (send (cat (exp (gen) l) (mul w (rec l) x))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul w x y)) (exp (gen) (mul l-0 x-0))))
+      (send (cat (exp (gen) (mul w x y)) (exp (gen) (mul l-0 x-0)))))
+    ((recv (cat (exp (gen) x-0) (mul w x y (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul w x y (rec x-0))))))
+  (label 354)
+  (parent 295)
+  (unrealized (1 3) (4 0) (5 0) (7 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x l rndx)
+    (w expt) (l-0 y l-1 rndx))
+  (deflistener (hash (exp (gen) (mul w l-0 y)) (exp (gen) (mul x l-1))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x) (beta l-1)
+    (eta (mul (rec l) w l-0 y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha (mul w l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) w l-0)))
+  (deflistener (cat (exp (gen) l) (mul (rec l) w l-0)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) (mul w l-0 y)) (exp (gen) (mul x l-1))))
+  (deflistener (cat (exp (gen) l-1) (mul w l-0 y (rec l-1))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (8 0)) ((4 1) (1 3)) ((5 1) (3 1)) ((6 1) (1 0))
+    ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y x) (y (mul w l-0)) (y l-1))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l-1) (pv self l))
+  (facts (neq b self) (neq self b) (undisclosed l-1))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 9 2 ltx-gen 3) (exp (gen) l-2) (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul w l-0 y)) (exp (gen) (mul x l-1))))
+      (send (hash (exp (gen) (mul w l-0 y)) (exp (gen) (mul x l-1)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w l-0 y))
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0 y)) (exp (gen) (mul x l-1)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-1)))
+      (recv
+        (sig (body self (exp (gen) (mul w l-0)) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0 y)) (exp (gen) (mul x l-1)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w l-0)))
+      (send (cat (exp (gen) y) (mul (rec l) w l-0))))
+    ((recv (cat (exp (gen) l) (mul (rec l) w l-0)))
+      (send (cat (exp (gen) l) (mul (rec l) w l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul w l-0 y)) (exp (gen) (mul x l-1))))
+      (send (cat (exp (gen) (mul w l-0 y)) (exp (gen) (mul x l-1)))))
+    ((recv (cat (exp (gen) l-1) (mul w l-0 y (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul w l-0 y (rec l-1))))))
+  (label 355)
+  (parent 295)
+  (unrealized (1 3) (4 0) (5 0) (7 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data)
+    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x l-0 rndx)
+    (alpha chi expt) (l-1 rndx) (w expt) (y y-0 y-1 rndx))
+  (deflistener (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta l)
+    (eta (mul (rec l-1) w y y-0)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y-0) (alpha (mul w y)) (chi x))
+  (deflistener (cat (exp (gen) y-0) (mul (rec l-1) w y)))
+  (deflistener (cat (exp (gen) l-1) (mul (rec l-1) w y)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-1))
+  (deflistener (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) y-1) (mul w y y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (8 0)) ((4 1) (1 3)) ((5 1) (3 1)) ((6 1) (1 0))
+    ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)) ((9 3) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-1)
+  (uniq-gen x y-0 y-1)
+  (absent (x l) (x l-1) (y-0 l) (y-0 x) (y-0 (mul w y)) (y-1 l-0)
+    (y-1 alpha) (y-1 chi))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l) (pv self l-1) (pv b-0 l-0))
+  (facts (neq b-0 a) (neq a b-0) (neq b self) (neq self b)
+    (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y-1) (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) w y y-0))
+          (enc na nb self b
+            (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) (mul w y)) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb self b
+            (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y-0) (mul (rec l-1) w y)))
+      (send (cat (exp (gen) y-0) (mul (rec l-1) w y))))
+    ((recv (cat (exp (gen) l-1) (mul (rec l-1) w y)))
+      (send (cat (exp (gen) l-1) (mul (rec l-1) w y))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) y-1) (mul w y y-0 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul w y y-0 (rec y-1)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na-0 a b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul l-0 chi))))))))
+  (label 356)
+  (parent 295)
+  (unrealized (1 3) (4 0) (5 0) (7 0) (8 0) (9 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x rndx)
+    (w expt) (l-0 y l-1 rndx))
+  (deflistener (hash (exp (gen) (mul w l-0 y)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta l)
+    (eta (mul w l-0 y (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha (mul w l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w l-0 (rec l-1))))
+  (deflistener (cat (exp (gen) l-1) (mul w l-0 (rec l-1))))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-1))
+  (deflistener (cat (exp (gen) (mul w l-0 y)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) l-1) (mul w l-0 y (rec l-1))))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (8 0)) ((4 1) (1 3)) ((5 1) (3 1)) ((6 1) (1 0))
+    ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul w l-0)))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l) (pv self l-1))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 9 6 ltx-gen 3) (exp (gen) l-2) (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul w l-0 y)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul w l-0 y)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w l-0 y (rec l-1)))
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0 y)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) (mul w l-0)) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-0 y)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w l-0 (rec l-1))))
+      (send (cat (exp (gen) y) (mul w l-0 (rec l-1)))))
+    ((recv (cat (exp (gen) l-1) (mul w l-0 (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul w l-0 (rec l-1)))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul w l-0 y)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul w l-0 y)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) l-1) (mul w l-0 y (rec l-1))))
+      (send (cat (exp (gen) l-1) (mul w l-0 y (rec l-1))))))
+  (label 357)
+  (parent 295)
+  (unrealized (1 3) (4 0) (5 0) (7 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data)
+    (b self self-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x l-0 rndx) (w expt)
+    (l-1 y l-2 rndx))
+  (deflistener (hash (exp (gen) (mul w l-1 y)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l)
+    (eta (mul (rec l-0) w l-1 y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha (mul w l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) w l-1)))
+  (deflistener (cat (exp (gen) l-0) (mul (rec l-0) w l-1)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul w l-1 y)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) l-2) (mul w l-1 y (rec l-2))))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self-0)
+    (priv-stor priv-stor-1) (l l-2))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (8 0)) ((4 1) (1 3)) ((5 1) (3 1)) ((6 1) (1 0))
+    ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)) ((9 2) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-2)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w l-1)))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-2) (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul w l-1 y)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul w l-1 y)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w l-1 y))
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-1 y)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) (mul w l-1)) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul w l-1 y)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) w l-1)))
+      (send (cat (exp (gen) y) (mul (rec l-0) w l-1))))
+    ((recv (cat (exp (gen) l-0) (mul (rec l-0) w l-1)))
+      (send (cat (exp (gen) l-0) (mul (rec l-0) w l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul w l-1 y)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul w l-1 y)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) l-2) (mul w l-1 y (rec l-2))))
+      (send (cat (exp (gen) l-2) (mul w l-1 y (rec l-2)))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self-0 l-2)))
+      (send
+        (sig (body self-0 (exp (gen) l-2) (pubk "sig" self-0))
+          (privk "sig" self-0)))))
+  (label 358)
+  (parent 295)
+  (unrealized (1 3) (4 0) (5 0) (7 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (alpha chi w expt) (y-0 y-1 y-2 l-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w y-0 (rec y-1) y-2))
+      (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w y-0 (rec y-1) y-2 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w y-0 (rec y-1) y-2)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w y-0 (rec y-1) y-2 (rec l-0))))
+  (deflistener (cat (exp (gen) y-2) (mul w y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-0) (y y-2) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-2)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w y-0 (rec y-1) y-2))
+    (y-2 alpha) (y-2 chi) (y-2 l-0) (l-0 (mul w y-0 (rec y-1)))
+    (l-0 (mul w y-0 (rec y-1) y-2 (rec l-0))))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-0 (mul w y-0 (rec y-1)))
+    (mul w y-0 (rec y-1)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w y-0 (rec y-1) y-2))
+         (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y w y-0 (rec y-1) y-2))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w y-0 (rec y-1) y-2 (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 (rec y-1) y-2))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul w y-0 (rec y-1) y-2)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 (rec y-1) y-2))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w y-0 (rec y-1) y-2 (rec l-0))))
+      (send (cat (exp (gen) y) (mul w y-0 (rec y-1) y-2 (rec l-0)))))
+    ((recv (cat (exp (gen) y-2) (mul w y-0 (rec y-1))))
+      (send (cat (exp (gen) y-2) (mul w y-0 (rec y-1)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-2)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-2))
+              (exp (gen) (mul chi l-0))))))))
+  (label 359)
+  (parent 299)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (alpha chi w expt) (y-0 l-0 y-1 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w y-0 l-0 y-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y w y-0 l-0 y-1 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w y-0 l-0 y-1)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w y-0 l-0 y-1 (rec l-1))))
+  (deflistener (cat (exp (gen) y-1) (mul w y-0 l-0)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-1) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-1)
+  (uniq-gen x y y-1)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul w y-0 l-0 y-1)) (y-1 alpha)
+    (y-1 chi) (y-1 (mul w y-0 l-0)) (y-1 l-1)
+    (l-1 (mul w y-0 l-0 y-1 (rec l-1))))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence y-1 (mul w y-0 l-0))
+    (mul w y-0 l-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w y-0 l-0 y-1)) (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y w y-0 l-0 y-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w y-0 l-0 y-1 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 l-0 y-1))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w y-0 l-0 y-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 l-0 y-1))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w y-0 l-0 y-1 (rec l-1))))
+      (send (cat (exp (gen) y) (mul w y-0 l-0 y-1 (rec l-1)))))
+    ((recv (cat (exp (gen) y-1) (mul w y-0 l-0)))
+      (send (cat (exp (gen) y-1) (mul w y-0 l-0))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi l-1))))))))
+  (label 360)
+  (parent 299)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (alpha chi w expt) (l-0 y-0 y-1 l-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w (rec l-0) (rec y-0) y-1))
+      (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l)
+    (eta (mul y w (rec l-0) (rec y-0) y-1 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w (rec l-0) (rec y-0) y-1)) (chi x))
+  (deflistener
+    (cat (exp (gen) y) (mul w (rec l-0) (rec y-0) y-1 (rec l-1))))
+  (deflistener (cat (exp (gen) y-1) (mul w (rec l-0) (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-1) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-1)
+  (uniq-gen x y y-1)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul w (rec l-0) (rec y-0) y-1))
+    (y-1 alpha) (y-1 chi)
+    (y-1 (mul w (rec l-0) (rec y-0) y-1 (rec l-1))) (y-1 l-1)
+    (l-1 (mul w (rec l-0) (rec y-0))))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-1 (mul w (rec l-0) (rec y-0)))
+    (mul w (rec l-0) (rec y-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w (rec l-0) (rec y-0) y-1))
+         (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y w (rec l-0) (rec y-0) y-1))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w (rec l-0) (rec y-0) y-1 (rec l-1)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l-0) (rec y-0) y-1))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul w (rec l-0) (rec y-0) y-1))
+            (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l-0) (rec y-0) y-1))
+              (exp (gen) (mul l x)))))))
+    ((recv
+       (cat (exp (gen) y) (mul w (rec l-0) (rec y-0) y-1 (rec l-1))))
+      (send
+        (cat (exp (gen) y) (mul w (rec l-0) (rec y-0) y-1 (rec l-1)))))
+    ((recv (cat (exp (gen) y-1) (mul w (rec l-0) (rec y-0))))
+      (send (cat (exp (gen) y-1) (mul w (rec l-0) (rec y-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi l-1))))))))
+  (label 361)
+  (parent 300)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x y rndx)
+    (alpha chi w expt) (l-0 l-1 y-0 l-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w (rec l-0) l-1 y-0))
+      (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l) (eta (mul y w (rec l-0) l-1 y-0 (rec l-2))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w (rec l-0) l-1 y-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w (rec l-0) l-1 y-0 (rec l-2))))
+  (deflistener (cat (exp (gen) y-0) (mul w (rec l-0) l-1)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b a)
+    (priv-stor priv-stor) (l l-2) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-2)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-2) (y l) (y x) (y (mul w (rec l-0) l-1 y-0))
+    (y-0 alpha) (y-0 chi) (y-0 (mul w (rec l-0) l-1))
+    (y-0 (mul w (rec l-0) l-1 y-0 (rec l-2))) (y-0 l-2))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-2) (pv b l))
+  (facts (neq a a-0) (neq a-0 a) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence y-0 (mul w (rec l-0) l-1))
+    (mul w (rec l-0) l-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w (rec l-0) l-1 y-0))
+         (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y w (rec l-0) l-1 y-0))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w (rec l-0) l-1 y-0 (rec l-2)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l-0) l-1 y-0))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul w (rec l-0) l-1 y-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w (rec l-0) l-1 y-0))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w (rec l-0) l-1 y-0 (rec l-2))))
+      (send (cat (exp (gen) y) (mul w (rec l-0) l-1 y-0 (rec l-2)))))
+    ((recv (cat (exp (gen) y-0) (mul w (rec l-0) l-1)))
+      (send (cat (exp (gen) y-0) (mul w (rec l-0) l-1))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 a
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-2))))))))
+  (label 362)
+  (parent 300)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (alpha chi expt) (l rndx) (w expt) (l-0 l-1 l-2 y-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) w l-1 y-0))
+      (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l-0) (eta (mul y (rec l) w l-1 (rec l-2) y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul (rec l) w l-1 y-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) w l-1 (rec l-2) y-0)))
+  (deflistener (cat (exp (gen) y-0) (mul (rec l) w l-1)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l-0 l-2)
+  (uniq-gen x y y-0)
+  (absent (x l-0) (x l-2) (y x) (y (mul (rec l) w l-1 y-0)) (y l-0)
+    (y-0 alpha) (y-0 chi) (y-0 (mul (rec l) w l-1))
+    (y-0 (mul (rec l) w l-1 (rec l-2) y-0)) (y-0 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-2) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence y-0 (mul (rec l) w l-1))
+    (mul (rec l) w l-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) w l-1 y-0))
+         (exp (gen) (mul x l-0))))
+      (send
+        (hash (exp (gen) (mul y (rec l) w l-1 y-0))
+          (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) w l-1 (rec l-2) y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w l-1 y-0))
+              (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul (rec l) w l-1 y-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w l-1 y-0))
+              (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w l-1 (rec l-2) y-0)))
+      (send (cat (exp (gen) y) (mul (rec l) w l-1 (rec l-2) y-0))))
+    ((recv (cat (exp (gen) y-0) (mul (rec l) w l-1)))
+      (send (cat (exp (gen) y-0) (mul (rec l) w l-1))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-0))))))))
+  (label 363)
+  (parent 304)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (alpha chi expt) (l rndx) (w expt) (l-0 y-0 l-1 y-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l) w (rec y-0) y-1))
+      (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l-0)
+    (eta (mul y (rec l) w (rec y-0) (rec l-1) y-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul (rec l) w (rec y-0) y-1)) (chi x))
+  (deflistener
+    (cat (exp (gen) y) (mul (rec l) w (rec y-0) (rec l-1) y-1)))
+  (deflistener (cat (exp (gen) y-1) (mul (rec l) w (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l-0) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l-0 l-1)
+  (uniq-gen x y y-1)
+  (absent (x l-0) (x l-1) (y x) (y (mul (rec l) w (rec y-0) y-1))
+    (y l-0) (l-1 (mul (rec l) w (rec y-0))) (y-1 alpha) (y-1 chi)
+    (y-1 (mul (rec l) w (rec y-0) (rec l-1) y-1)) (y-1 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-1 (mul (rec l) w (rec y-0)))
+    (mul (rec l) w (rec y-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l) w (rec y-0) y-1))
+         (exp (gen) (mul x l-0))))
+      (send
+        (hash (exp (gen) (mul y (rec l) w (rec y-0) y-1))
+          (exp (gen) (mul x l-0)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l) w (rec y-0) (rec l-1) y-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w (rec y-0) y-1))
+              (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul (rec l) w (rec y-0) y-1))
+            (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l) w (rec y-0) y-1))
+              (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w (rec y-0) (rec l-1) y-1)))
+      (send
+        (cat (exp (gen) y) (mul (rec l) w (rec y-0) (rec l-1) y-1))))
+    ((recv (cat (exp (gen) y-1) (mul (rec l) w (rec y-0))))
+      (send (cat (exp (gen) y-1) (mul (rec l) w (rec y-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi l-0))))))))
+  (label 364)
+  (parent 304)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (alpha chi expt) (l y-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y y-0 l-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul y-0 l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) y-0))
+  (deflistener (cat (exp (gen) y-0) l-0))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l) (y y-0) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 1) (7 0)) ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y x) (y l) (y (mul y-0 l-0)) (y-0 alpha)
+    (y-0 chi) (y-0 l) (l-0 y-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 8 2 ltx-gen 2) l-1 (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y y-0 l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul y y-0 l-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y y-0 l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul y-0 l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y y-0 l-0)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) y-0)) (send (cat (exp (gen) y) y-0)))
+    ((recv (cat (exp (gen) y-0) l-0)) (send (cat (exp (gen) y-0) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l))))))))
+  (label 365)
+  (parent 305)
+  (unrealized (0 0) (5 0) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (alpha chi w expt) (y-0 l l-0 l-1 y-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w y-0 l-0 y-1)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y w y-0 l-0 (rec l-1) y-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w y-0 l-0 y-1)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w y-0 l-0 (rec l-1) y-1)))
+  (deflistener (cat (exp (gen) y-1) (mul w y-0 l-0)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-1)
+  (uniq-gen x y y-1)
+  (absent (x l) (x l-1) (y x) (y (mul w y-0 l-0 y-1)) (y l)
+    (l-1 (mul w y-0 l-0 (rec l-1) y-1)) (y-1 alpha) (y-1 chi)
+    (y-1 (mul w y-0 l-0)) (y-1 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence y-1 (mul w y-0 l-0))
+    (mul w y-0 l-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w y-0 l-0 y-1)) (exp (gen) (mul x l))))
+      (send
+        (hash (exp (gen) (mul y w y-0 l-0 y-1)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w y-0 l-0 (rec l-1) y-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 l-0 y-1))
+              (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w y-0 l-0 y-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 l-0 y-1))
+              (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (mul w y-0 l-0 (rec l-1) y-1)))
+      (send (cat (exp (gen) y) (mul w y-0 l-0 (rec l-1) y-1))))
+    ((recv (cat (exp (gen) y-1) (mul w y-0 l-0)))
+      (send (cat (exp (gen) y-1) (mul w y-0 l-0))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi l))))))))
+  (label 366)
+  (parent 305)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x y rndx)
+    (alpha chi w expt) (y-0 l y-1 l-0 y-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w y-0 (rec y-1) y-2))
+      (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w y-0 (rec y-1) (rec l-0) y-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w y-0 (rec y-1) y-2)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w y-0 (rec y-1) (rec l-0) y-2)))
+  (deflistener (cat (exp (gen) y-2) (mul w y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l) (y y-2) (alpha alpha) (chi chi))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-2)
+  (absent (x l) (x l-0) (y x) (y (mul w y-0 (rec y-1) y-2)) (y l)
+    (l-0 (mul w y-0 (rec y-1)))
+    (l-0 (mul w y-0 (rec y-1) (rec l-0) y-2)) (y-2 alpha) (y-2 chi)
+    (y-2 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-0 (mul w y-0 (rec y-1)))
+    (mul w y-0 (rec y-1)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w y-0 (rec y-1) y-2))
+         (exp (gen) (mul x l))))
+      (send
+        (hash (exp (gen) (mul y w y-0 (rec y-1) y-2))
+          (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w y-0 (rec y-1) (rec l-0) y-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 (rec y-1) y-2))
+              (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul w y-0 (rec y-1) y-2)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 (rec y-1) y-2))
+              (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (mul w y-0 (rec y-1) (rec l-0) y-2)))
+      (send (cat (exp (gen) y) (mul w y-0 (rec y-1) (rec l-0) y-2))))
+    ((recv (cat (exp (gen) y-2) (mul w y-0 (rec y-1))))
+      (send (cat (exp (gen) y-2) (mul w y-0 (rec y-1)))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-2)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-2))
+              (exp (gen) (mul chi l))))))))
+  (label 367)
+  (parent 305)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx)
+    (alpha chi expt) (l-0 rndx) (w expt) (l-1 l-2 l-3 y-0 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l-0) w l-2 y-0))
+      (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-3) (x x) (beta l) (eta (mul y (rec l-0) w l-2 (rec l-3) y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-3))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul (rec l-0) w l-2 y-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) w l-2 (rec l-3) y-0)))
+  (deflistener (cat (exp (gen) y-0) (mul (rec l-0) w l-2)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 3) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-1 l-3)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-3) (y l) (y x) (y (mul (rec l-0) w l-2 y-0))
+    (y-0 alpha) (y-0 chi) (y-0 (mul (rec l-0) w l-2))
+    (y-0 (mul (rec l-0) w l-2 (rec l-3) y-0)) (y-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-3) (pv b l) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence y-0 (mul (rec l-0) w l-2))
+    (mul (rec l-0) w l-2) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l-0) w l-2 y-0))
+         (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y (rec l-0) w l-2 y-0))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-3)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) w l-2 (rec l-3) y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w l-2 y-0))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-3))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul (rec l-0) w l-2 y-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w l-2 y-0))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) w l-2 (rec l-3) y-0)))
+      (send (cat (exp (gen) y) (mul (rec l-0) w l-2 (rec l-3) y-0))))
+    ((recv (cat (exp (gen) y-0) (mul (rec l-0) w l-2)))
+      (send (cat (exp (gen) y-0) (mul (rec l-0) w l-2))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 368)
+  (parent 310)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx)
+    (alpha chi expt) (l-0 rndx) (w expt) (l-1 y-0 l-2 y-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y (rec l-0) w (rec y-0) y-1))
+      (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l)
+    (eta (mul y (rec l-0) w (rec y-0) (rec l-2) y-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul (rec l-0) w (rec y-0) y-1)) (chi x))
+  (deflistener
+    (cat (exp (gen) y) (mul (rec l-0) w (rec y-0) (rec l-2) y-1)))
+  (deflistener (cat (exp (gen) y-1) (mul (rec l-0) w (rec y-0))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y-1) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 3) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-1 l-2)
+  (uniq-gen x y y-1)
+  (absent (x l) (x l-2) (y l) (y x) (y (mul (rec l-0) w (rec y-0) y-1))
+    (l-2 (mul (rec l-0) w (rec y-0))) (y-1 alpha) (y-1 chi)
+    (y-1 (mul (rec l-0) w (rec y-0) (rec l-2) y-1)) (y-1 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-2) (pv b l) (pv b-0 l-1))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-2 (mul (rec l-0) w (rec y-0)))
+    (mul (rec l-0) w (rec y-0)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y (rec l-0) w (rec y-0) y-1))
+         (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y (rec l-0) w (rec y-0) y-1))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y (rec l-0) w (rec y-0) (rec l-2) y-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w (rec y-0) y-1))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul (rec l-0) w (rec y-0) y-1))
+            (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y (rec l-0) w (rec y-0) y-1))
+              (exp (gen) (mul l x)))))))
+    ((recv
+       (cat (exp (gen) y) (mul (rec l-0) w (rec y-0) (rec l-2) y-1)))
+      (send
+        (cat (exp (gen) y) (mul (rec l-0) w (rec y-0) (rec l-2) y-1))))
+    ((recv (cat (exp (gen) y-1) (mul (rec l-0) w (rec y-0))))
+      (send (cat (exp (gen) y-1) (mul (rec l-0) w (rec y-0)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 369)
+  (parent 310)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx)
+    (alpha chi expt) (l-0 y-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y y-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul y-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) y-0))
+  (deflistener (cat (exp (gen) y-0) l-1))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (6 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul y-0 l-1)) (y-0 alpha)
+    (y-0 chi) (y-0 l-0) (l-1 y-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 9 2 ltx-gen 2) l-2 (6 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y y-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y y-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y y-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul y-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y y-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) y-0)) (send (cat (exp (gen) y) y-0)))
+    ((recv (cat (exp (gen) y-0) l-1)) (send (cat (exp (gen) y-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0)))))
+  (label 370)
+  (parent 311)
+  (unrealized (0 0) (5 0) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx)
+    (alpha chi w expt) (y-0 l-0 l-1 l-2 y-1 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w y-0 l-1 y-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (x x) (beta l) (eta (mul y w y-0 l-1 (rec l-2) y-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-2))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w y-0 l-1 y-1)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w y-0 l-1 (rec l-2) y-1)))
+  (deflistener (cat (exp (gen) y-1) (mul w y-0 l-1)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y-1) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 3) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-2)
+  (uniq-gen x y y-1)
+  (absent (x l) (x l-2) (y l) (y x) (y (mul w y-0 l-1 y-1))
+    (l-2 (mul w y-0 l-1 (rec l-2) y-1)) (y-1 alpha) (y-1 chi)
+    (y-1 (mul w y-0 l-1)) (y-1 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-2) (pv b l) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence y-1 (mul w y-0 l-1))
+    (mul w y-0 l-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w y-0 l-1 y-1)) (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y w y-0 l-1 y-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-2)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w y-0 l-1 (rec l-2) y-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 l-1 y-1))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-2))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w y-0 l-1 y-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 l-1 y-1))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w y-0 l-1 (rec l-2) y-1)))
+      (send (cat (exp (gen) y) (mul w y-0 l-1 (rec l-2) y-1))))
+    ((recv (cat (exp (gen) y-1) (mul w y-0 l-1)))
+      (send (cat (exp (gen) y-1) (mul w y-0 l-1))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0)))))
+  (label 371)
+  (parent 311)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx)
+    (alpha chi w expt) (y-0 l-0 y-1 l-1 y-2 rndx))
+  (deflistener
+    (hash (exp (gen) (mul y w y-0 (rec y-1) y-2))
+      (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y w y-0 (rec y-1) (rec l-1) y-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w y-0 (rec y-1) y-2)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w y-0 (rec y-1) (rec l-1) y-2)))
+  (deflistener (cat (exp (gen) y-2) (mul w y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y-2) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((3 1) (4 0)) ((3 2) (1 1))
+    ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3)) ((6 1) (4 1))
+    ((7 3) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen x y y-2)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul w y-0 (rec y-1) y-2))
+    (l-1 (mul w y-0 (rec y-1)))
+    (l-1 (mul w y-0 (rec y-1) (rec l-1) y-2)) (y-2 alpha) (y-2 chi)
+    (y-2 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-1 (mul w y-0 (rec y-1)))
+    (mul w y-0 (rec y-1)) (6 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv
+       (hash (exp (gen) (mul y w y-0 (rec y-1) y-2))
+         (exp (gen) (mul l x))))
+      (send
+        (hash (exp (gen) (mul y w y-0 (rec y-1) y-2))
+          (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w y-0 (rec y-1) (rec l-1) y-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 (rec y-1) y-2))
+              (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul w y-0 (rec y-1) y-2)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w y-0 (rec y-1) y-2))
+              (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w y-0 (rec y-1) (rec l-1) y-2)))
+      (send (cat (exp (gen) y) (mul w y-0 (rec y-1) (rec l-1) y-2))))
+    ((recv (cat (exp (gen) y-2) (mul w y-0 (rec y-1))))
+      (send (cat (exp (gen) y-2) (mul w y-0 (rec y-1)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-2)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-2))
+              (exp (gen) (mul chi l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0)))))
+  (label 372)
+  (parent 311)
+  (unrealized (0 0) (1 3) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (x y l l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) l))
+  (deflistener (cat (exp (gen) l) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((3 2) (6 0)) ((4 3) (0 0)) ((4 3) (5 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y x) (y l) (y (mul l l-0)) (l-0 l))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (6 0)
+    (ch-msg priv-stor (cat pt (pv a l-0))))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) l)) (send (cat (exp (gen) y) l)))
+    ((recv (cat (exp (gen) l) l-0)) (send (cat (exp (gen) l) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0)))
+  (label 373)
+  (parent 315)
+  (unrealized (0 0) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 gen-st-ltx-disclose-0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (5 0)
+    (ch-msg priv-stor-1 (cat pt-4 (pv self l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1)))
+  (label 374)
+  (parent 318)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-0))
+  (deflistener (cat (exp (gen) l-0) l-1))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul l-0 l-1)) (l-1 l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (6 0)
+    (ch-msg priv-stor (cat pt (pv a l-1))))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((recv (cat (exp (gen) l-0) l-1)) (send (cat (exp (gen) l-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-1)))
+  (label 375)
+  (parent 321)
+  (unrealized (0 0) (5 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (a b b-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (x y rndx) (beta expt) (l x-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y x-0 l-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul x-0 l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) x-0))
+  (deflistener (cat (exp (gen) x-0) l-0))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor-0)
+    (l l) (x x-0) (beta beta))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 1) (7 0)) ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-0) (y x) (y l) (y (mul x-0 l-0)) (x-0 beta) (x-0 l)
+    (l-0 x-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b b-0) (neq b-0 b) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (6 0)
+    (ch-msg priv-stor (cat pt (pv a l-0))))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y x-0 l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul y x-0 l-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y x-0 l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul x-0 l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y x-0 l-0)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) x-0)) (send (cat (exp (gen) y) x-0)))
+    ((recv (cat (exp (gen) x-0) l-0)) (send (cat (exp (gen) x-0) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-0))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0)))
+  (label 376)
+  (parent 336)
+  (unrealized (0 0) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx) (beta expt)
+    (l-0 x-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y x-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y x-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul x-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) x-0))
+  (deflistener (cat (exp (gen) x-0) l-1))
+  (defstrand init 3 (na na-0) (a a-0) (b b-0) (priv-stor priv-stor-1)
+    (l l-0) (x x-0) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a-0)
+    (priv-stor priv-stor-1) (l l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (7 0)) ((9 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen x y x-0)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul x-0 l-1)) (x-0 beta)
+    (x-0 l-0) (l-1 x-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l) (pv a-0 l-0))
+  (facts (neq a-0 b-0) (neq b-0 a-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (6 0)
+    (ch-msg priv-stor (cat pt (pv a l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y x-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y x-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y x-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y x-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul x-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y x-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) x-0)) (send (cat (exp (gen) y) x-0)))
+    ((recv (cat (exp (gen) x-0) l-1)) (send (cat (exp (gen) x-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv a-0 l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a-0 b-0 (exp (gen) x-0))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a-0 l-0))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-1)))
+  (label 377)
+  (parent 341)
+  (unrealized (0 0) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) l-0))
+  (deflistener (cat (gen) (mul l-0 l-0)))
+  (deflistener l-0)
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (9 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (6 0)) ((8 2) (7 0)) ((9 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-0)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+    (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))) (0 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((recv (cat (gen) (mul l-0 l-0))) (send (cat (gen) (mul l-0 l-0))))
+    ((recv l-0) (send l-0))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))))
+  (label 378)
+  (parent 344)
+  (unrealized (9 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (gen) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (4 2)) ((1 2) (9 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (8 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (0 0))
+    ((9 1) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul l x)) (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 379)
+  (parent 345)
+  (unrealized (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (gen) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (4 2)) ((1 2) (9 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (8 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (0 0))
+    ((9 1) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul l x)) (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 380)
+  (parent 345)
+  (unrealized (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (gen) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (8 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0) (l-0 (one)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+    (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))) (0 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))))
+  (label 381)
+  (parent 346)
+  (unrealized (8 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y rndx) (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (gen) (mul w l-0)))
+  (deflistener l-0)
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (9 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (6 0)) ((8 2) (7 0)) ((9 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w l-0)) (l-0 w))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+    (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))) (0 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (gen) (mul w l-0))) (send (cat (gen) (mul w l-0))))
+    ((recv l-0) (send l-0))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))))
+  (label 382)
+  (parent 347)
+  (unrealized (9 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y rndx) (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha w) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w (rec l-0))))
+  (deflistener (cat (gen) w))
+  (deflistener l-0)
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (4 2)) ((1 2) (10 0)) ((2 1) (1 0)) ((2 1) (8 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (9 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (0 0)) ((10 1) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y w))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul l x)) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv (hash (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv (sig (body a (exp (gen) w) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w (rec l-0))))
+      (send (cat (exp (gen) y) (mul w (rec l-0)))))
+    ((recv (cat (gen) w)) (send (cat (gen) w))) ((recv l-0) (send l-0))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y w)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 383)
+  (parent 348)
+  (unrealized (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y rndx) (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha w) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w (rec l-0))))
+  (deflistener (cat (gen) w))
+  (deflistener l-0)
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (4 2)) ((1 2) (10 0)) ((2 1) (1 0)) ((2 1) (8 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (9 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 1) (5 0)) ((8 2) (7 0))
+    ((9 1) (0 0)) ((10 1) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y w))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul l x)) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv (hash (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w (rec l-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv (sig (body a (exp (gen) w) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w (rec l-0))))
+      (send (cat (exp (gen) y) (mul w (rec l-0)))))
+    ((recv (cat (gen) w)) (send (cat (gen) w))) ((recv l-0) (send l-0))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y w)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y w)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 384)
+  (parent 348)
+  (unrealized (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l l-0 rndx)
+    (w expt) (x y rndx))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul l-0 x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x) (beta l-0)
+    (eta (mul (rec l) w y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha w) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) w)))
+  (deflistener (cat (exp (gen) l) (mul (rec l) w)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (exp (gen) l-0) x))
+  (precedes ((1 2) (3 2)) ((1 2) (9 0)) ((2 1) (3 0)) ((2 2) (1 1))
+    ((3 3) (4 0)) ((3 3) (8 0)) ((4 1) (1 3)) ((5 1) (3 1))
+    ((6 1) (1 0)) ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0))
+    ((9 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l-0) (y w) (y x))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l-0) (pv self l))
+  (facts (neq b self) (neq self b) (undisclosed l-0))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-0) x))
+    (exp (gen) (mul l-0 x)) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul l-0 x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y))
+          (enc na nb self b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body self (exp (gen) w) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul l-0 x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w)))
+      (send (cat (exp (gen) y) (mul (rec l) w))))
+    ((recv (cat (exp (gen) l) (mul (rec l) w)))
+      (send (cat (exp (gen) l) (mul (rec l) w))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (exp (gen) l-0) x)) (send (cat (exp (gen) l-0) x))))
+  (label 385)
+  (parent 351)
+  (unrealized (1 3) (4 0) (5 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l l-0 rndx)
+    (w expt) (x y rndx))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul l-0 x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x) (beta l-0)
+    (eta (mul (rec l) w y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha w) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) w)))
+  (deflistener (cat (exp (gen) l) (mul (rec l) w)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul l-0 x))))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (exp (gen) x) l-0))
+  (precedes ((1 2) (3 2)) ((1 2) (9 0)) ((2 1) (3 0)) ((2 2) (1 1))
+    ((3 3) (4 0)) ((3 3) (8 0)) ((4 1) (1 3)) ((5 1) (3 1))
+    ((6 1) (1 0)) ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0))
+    ((9 1) (7 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l-0) (y w) (y x))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l-0) (pv self l))
+  (facts (neq b self) (neq self b) (undisclosed l-0))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l-0))
+    (exp (gen) (mul l-0 x)) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul l-0 x))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul l-0 x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y))
+          (enc na nb self b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul l-0 x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body self (exp (gen) w) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul l-0 x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w)))
+      (send (cat (exp (gen) y) (mul (rec l) w))))
+    ((recv (cat (exp (gen) l) (mul (rec l) w)))
+      (send (cat (exp (gen) l) (mul (rec l) w))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul l-0 x))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul l-0 x)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (exp (gen) x) l-0)) (send (cat (exp (gen) x) l-0))))
+  (label 386)
+  (parent 351)
+  (unrealized (1 3) (4 0) (5 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (beta expt) (l rndx) (w expt) (x-0 y x-1 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x) (beta l-0)
+    (eta (mul (rec l) w x-0 y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (mul w x-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l) w x-0)))
+  (deflistener (cat (exp (gen) l) (mul (rec l) w x-0)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) x-1) (mul w x-0 y (rec x-1))))
+  (defstrand init 3 (na na-0) (a b) (b b-0) (priv-stor priv-stor)
+    (l l-0) (x x-1) (beta beta))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 1) (9 0)) ((2 2) (1 1))
+    ((3 3) (4 0)) ((3 3) (8 0)) ((4 1) (1 3)) ((5 1) (3 1))
+    ((6 1) (1 0)) ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0))
+    ((9 2) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-1)
+  (absent (x l) (x l-0) (y x) (y (mul w x-0)) (y l-0) (x-1 beta)
+    (x-1 l-0))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l-0) (pv self l))
+  (facts (neq b b-0) (neq b-0 b) (neq b self) (neq self b)
+    (undisclosed l-0))
+  (leads-to ((2 1) (3 0)) ((2 1) (9 0)) ((6 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 10 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w x-0 y))
+          (enc na nb self b
+            (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body self (exp (gen) (mul w x-0)) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w x-0)))
+      (send (cat (exp (gen) y) (mul (rec l) w x-0))))
+    ((recv (cat (exp (gen) l) (mul (rec l) w x-0)))
+      (send (cat (exp (gen) l) (mul (rec l) w x-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) x-1) (mul w x-0 y (rec x-1))))
+      (send (cat (exp (gen) x-1) (mul w x-0 y (rec x-1)))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 b b-0 (exp (gen) x-1)))))
+  (label 387)
+  (parent 352)
+  (unrealized (1 3) (4 0) (5 0) (7 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 data) (b self b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x rndx)
+    (beta w expt) (x-0 y x-1 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l)
+    (eta (mul w x-0 y (rec l-0))))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha (mul w x-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul w x-0 (rec l-0))))
+  (deflistener (cat (exp (gen) l-0) (mul w x-0 (rec l-0))))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) x-1) (mul w x-0 y (rec x-1))))
+  (defstrand init 3 (na na-0) (a self) (b b-0) (priv-stor priv-stor-0)
+    (l l-0) (x x-1) (beta beta))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (8 0)) ((4 1) (1 3)) ((5 1) (3 1)) ((6 1) (1 0))
+    ((6 1) (9 0)) ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0))
+    ((9 2) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0)
+  (uniq-gen x y x-1)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w x-0)) (x-1 beta)
+    (x-1 l-0))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq self b-0) (neq b-0 self) (neq b self) (neq self b)
+    (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)) ((6 1) (9 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 10 6 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w x-0 y (rec l-0)))
+          (enc na nb self b
+            (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) (mul w x-0)) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul w x-0 (rec l-0))))
+      (send (cat (exp (gen) y) (mul w x-0 (rec l-0)))))
+    ((recv (cat (exp (gen) l-0) (mul w x-0 (rec l-0))))
+      (send (cat (exp (gen) l-0) (mul w x-0 (rec l-0)))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) x-1) (mul w x-0 y (rec x-1))))
+      (send (cat (exp (gen) x-1) (mul w x-0 y (rec x-1)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0)))
+      (send (cat na-0 self b-0 (exp (gen) x-1)))))
+  (label 388)
+  (parent 352)
+  (unrealized (1 3) (4 0) (5 0) (7 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 data)
+    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x rndx) (beta expt)
+    (l-0 rndx) (w expt) (x-0 y x-1 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l)
+    (eta (mul (rec l-0) w x-0 y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha (mul w x-0)) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) w x-0)))
+  (deflistener (cat (exp (gen) l-0) (mul (rec l-0) w x-0)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) x-1) (mul w x-0 y (rec x-1))))
+  (defstrand init 3 (na na-0) (a a) (b b-0) (priv-stor priv-stor-1)
+    (l l-1) (x x-1) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (8 0)) ((4 1) (1 3)) ((5 1) (3 1)) ((6 1) (1 0))
+    ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)) ((9 2) (8 0))
+    ((10 1) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb na-0 l l-0 l-1)
+  (uniq-gen x y x-1)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w x-0)) (x-1 beta)
+    (x-1 l-1))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l) (pv self l-0) (pv a l-1))
+  (facts (neq a b-0) (neq b-0 a) (neq b self) (neq self b)
+    (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)) ((10 1) (9 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv a l-1))) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w x-0 y))
+          (enc na nb self b
+            (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) (mul w x-0)) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) w x-0)))
+      (send (cat (exp (gen) y) (mul (rec l-0) w x-0))))
+    ((recv (cat (exp (gen) l-0) (mul (rec l-0) w x-0)))
+      (send (cat (exp (gen) l-0) (mul (rec l-0) w x-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) x-1) (mul w x-0 y (rec x-1))))
+      (send (cat (exp (gen) x-1) (mul w x-0 y (rec x-1)))))
+    ((load priv-stor-1 (cat pt-3 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-1))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv a l-1)))))
+  (label 389)
+  (parent 352)
+  (unrealized (1 3) (4 0) (5 0) (7 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b self name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x l-0 rndx)
+    (w expt) (y rndx))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l)
+    (eta (mul (rec l-0) w y)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha w) (chi x))
+  (deflistener (cat (exp (gen) y) (mul (rec l-0) w)))
+  (deflistener (cat (exp (gen) l-0) (mul (rec l-0) w)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul l x))))
+  (deflistener (cat (gen) (mul w y)))
+  (deflistener y)
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (9 0)) ((4 1) (1 3)) ((5 1) (3 1)) ((6 1) (1 0))
+    ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)) ((9 1) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y w))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq b self) (neq self b) (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener y) (mul w y) (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w y))
+          (enc na nb self b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) w) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb self b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (mul (rec l-0) w)))
+      (send (cat (exp (gen) y) (mul (rec l-0) w))))
+    ((recv (cat (exp (gen) l-0) (mul (rec l-0) w)))
+      (send (cat (exp (gen) l-0) (mul (rec l-0) w))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul l x)))))
+    ((recv (cat (gen) (mul w y))) (send (cat (gen) (mul w y))))
+    ((recv y) (send y)))
+  (label 390)
+  (parent 353)
+  (unrealized (1 3) (4 0) (5 0) (7 0) (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (x rndx)
+    (alpha chi expt) (l rndx) (w expt) (y y-0 y-1 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul x l-0))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l) (x x) (beta l-0)
+    (eta (mul (rec l) w y y-0)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l-0) (y y-0) (alpha (mul w y)) (chi x))
+  (deflistener (cat (exp (gen) y-0) (mul (rec l) w y)))
+  (deflistener (cat (exp (gen) l) (mul (rec l) w y)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l))
+  (deflistener (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul x l-0))))
+  (deflistener (cat (exp (gen) y-1) (mul w y y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b)
+    (priv-stor priv-stor) (l l-0) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 1) (9 0)) ((2 2) (1 1))
+    ((3 3) (4 0)) ((3 3) (8 0)) ((4 1) (1 3)) ((5 1) (3 1))
+    ((6 1) (1 0)) ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0))
+    ((9 3) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y-0 y-1)
+  (absent (x l) (x l-0) (y-0 x) (y-0 (mul w y)) (y-0 l-0) (y-1 alpha)
+    (y-1 chi) (y-1 l-0))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l-0) (pv self l))
+  (facts (neq b a) (neq a b) (neq b self) (neq self b)
+    (undisclosed l-0))
+  (leads-to ((2 1) (3 0)) ((2 1) (9 0)) ((6 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 10 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul x l-0))))
+      (send (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul x l-0)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y y-0))
+          (enc na nb self b
+            (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body self (exp (gen) (mul w y)) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb self b
+            (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul x l-0)))))))
+    ((recv (cat (exp (gen) y-0) (mul (rec l) w y)))
+      (send (cat (exp (gen) y-0) (mul (rec l) w y))))
+    ((recv (cat (exp (gen) l) (mul (rec l) w y)))
+      (send (cat (exp (gen) l) (mul (rec l) w y))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l)))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul x l-0))))
+      (send (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul x l-0)))))
+    ((recv (cat (exp (gen) y-1) (mul w y y-0 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul w y y-0 (rec y-1)))))
+    ((load priv-stor (cat pt-0 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na-0 a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a b
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi l-0))))))))
+  (label 391)
+  (parent 356)
+  (unrealized (1 3) (4 0) (5 0) (7 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (b self a name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (l x rndx)
+    (alpha chi w expt) (y y-0 y-1 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l)
+    (eta (mul w y y-0 (rec l-0))))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y-0) (alpha (mul w y)) (chi x))
+  (deflistener (cat (exp (gen) y-0) (mul w y (rec l-0))))
+  (deflistener (cat (exp (gen) l-0) (mul w y (rec l-0))))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) y-1) (mul w y y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b self)
+    (priv-stor priv-stor-0) (l l-0) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (8 0)) ((4 1) (1 3)) ((5 1) (3 1)) ((6 1) (1 0))
+    ((6 1) (9 0)) ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0))
+    ((9 3) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y-0 y-1)
+  (absent (x l) (x l-0) (y-0 l) (y-0 x) (y-0 (mul w y)) (y-1 alpha)
+    (y-1 chi) (y-1 l-0))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l) (pv self l-0))
+  (facts (neq self a) (neq a self) (neq b self) (neq self b)
+    (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)) ((6 1) (9 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 10 6 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y y-0 (rec l-0)))
+          (enc na nb self b
+            (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) (mul w y)) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb self b
+            (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y-0) (mul w y (rec l-0))))
+      (send (cat (exp (gen) y-0) (mul w y (rec l-0)))))
+    ((recv (cat (exp (gen) l-0) (mul w y (rec l-0))))
+      (send (cat (exp (gen) l-0) (mul w y (rec l-0)))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) y-1) (mul w y y-0 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul w y y-0 (rec y-1)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na-0 a self (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a self
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi l-0))))))))
+  (label 392)
+  (parent 356)
+  (unrealized (1 3) (4 0) (5 0) (7 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (b self a b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x rndx) (alpha chi expt)
+    (l-0 rndx) (w expt) (y y-0 y-1 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a self) (b b)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta l)
+    (eta (mul (rec l-0) w y y-0)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand resp 4 (na na) (nb nb) (a self) (b b) (priv-stor priv-stor)
+    (l l) (y y-0) (alpha (mul w y)) (chi x))
+  (deflistener (cat (exp (gen) y-0) (mul (rec l-0) w y)))
+  (deflistener (cat (exp (gen) l-0) (mul (rec l-0) w y)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (deflistener (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) y-1) (mul w y y-0 (rec y-1))))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-1) (l l-1) (y y-1) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (3 2)) ((2 1) (3 0)) ((2 2) (1 1)) ((3 3) (4 0))
+    ((3 3) (8 0)) ((4 1) (1 3)) ((5 1) (3 1)) ((6 1) (1 0))
+    ((6 2) (5 0)) ((7 1) (0 0)) ((8 1) (7 0)) ((9 3) (8 0))
+    ((10 1) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen x y-0 y-1)
+  (absent (x l) (x l-0) (y-0 l) (y-0 x) (y-0 (mul w y)) (y-1 alpha)
+    (y-1 chi) (y-1 l-1))
+  (precur (4 0) (5 0) (8 0))
+  (gen-st (pv b l) (pv self l-0) (pv b-0 l-1))
+  (facts (neq b-0 a) (neq a b-0) (neq b self) (neq self b)
+    (undisclosed l))
+  (leads-to ((2 1) (3 0)) ((6 1) (1 0)) ((10 1) (9 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b-0 l-1))) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na self b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) w y y-0))
+          (enc na nb self b
+            (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body self (exp (gen) (mul w y)) (pubk "sig" self))
+          (privk "sig" self))) (recv (cat na self b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb self b
+            (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y-0) (mul (rec l-0) w y)))
+      (send (cat (exp (gen) y-0) (mul (rec l-0) w y))))
+    ((recv (cat (exp (gen) l-0) (mul (rec l-0) w y)))
+      (send (cat (exp (gen) l-0) (mul (rec l-0) w y))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self))))
+    ((recv (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) y-1) (mul w y y-0 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul w y y-0 (rec y-1)))))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-1)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na-0 a b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-1)))))
+  (label 393)
+  (parent 356)
+  (unrealized (1 3) (4 0) (5 0) (7 0) (8 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data) (a b a-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (x y rndx) (alpha chi expt) (l y-0 l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y y-0 l-0)) (exp (gen) (mul x l))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul y-0 l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) y-0))
+  (deflistener (cat (exp (gen) y-0) l-0))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b)
+    (priv-stor priv-stor-0) (l l) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 1) (7 0)) ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 3) (6 0)) ((8 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-0) (y x) (y l) (y (mul y-0 l-0)) (y-0 alpha)
+    (y-0 chi) (y-0 l) (l-0 y-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a-0) (neq a-0 b) (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((3 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-0 (6 0)
+    (ch-msg priv-stor (cat pt (pv a l-0))))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((recv (hash (exp (gen) (mul y y-0 l-0)) (exp (gen) (mul x l))))
+      (send (hash (exp (gen) (mul y y-0 l-0)) (exp (gen) (mul x l)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y y-0 l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul y-0 l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y y-0 l-0)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) y-0)) (send (cat (exp (gen) y) y-0)))
+    ((recv (cat (exp (gen) y-0) l-0)) (send (cat (exp (gen) y-0) l-0)))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l)))))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0)))
+  (label 394)
+  (parent 365)
+  (unrealized (0 0) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y rndx)
+    (alpha chi expt) (l-0 y-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y y-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (x x) (beta l) (eta (mul y y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul y-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) y-0))
+  (deflistener (cat (exp (gen) y-0) l-1))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a-0) (b b-0)
+    (priv-stor priv-stor-1) (l l-0) (y y-0) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b-0)
+    (priv-stor priv-stor-1) (l l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (9 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 3) (6 0)) ((8 1) (7 0)) ((9 2) (6 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb nb-0 l l-0 l-1)
+  (uniq-gen x y y-0)
+  (absent (x l) (x l-1) (y l) (y x) (y (mul y-0 l-1)) (y-0 alpha)
+    (y-0 chi) (y-0 l-0) (l-1 y-0))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-1) (pv b l) (pv b-0 l-0))
+  (facts (neq b-0 a-0) (neq a-0 b-0) (neq b a) (neq a b)
+    (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (9 0)) ((3 1) (4 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (6 0)
+    (ch-msg priv-stor (cat pt (pv a l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y y-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y y-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y y-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y y-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-1))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul y-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y y-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) y-0)) (send (cat (exp (gen) y) y-0)))
+    ((recv (cat (exp (gen) y-0) l-1)) (send (cat (exp (gen) y-0) l-1)))
+    ((load priv-stor-1 (cat pt-3 (pv b-0 l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na-0 a-0 b-0 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na-0 nb-0 a-0 b-0
+            (hash (exp (gen) (mul alpha y-0))
+              (exp (gen) (mul chi l-0)))))))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-3 (pv b-0 l-0))))
+    ((load priv-stor (cat pt (pv a l-1)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-1)))
+  (label 395)
+  (parent 370)
+  (unrealized (0 0) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (10 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)) ((10 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+    (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))) (0 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))))
+  (label 396)
+  (parent 374)
+  (unrealized (10 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (0 0)) ((4 3) (5 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)) (l-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 gen-st-ltx-disclose-0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-1 (5 0)
+    (ch-msg priv-stor-1 (cat pt-4 (pv self l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1)))
+  (label 397)
+  (parent 375)
+  (unrealized (0 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) l-0))
+  (deflistener (cat (gen) (mul l-0 l-0)))
+  (deflistener l-0)
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (4 2)) ((1 2) (10 0)) ((2 1) (1 0)) ((2 1) (8 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (9 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 1) (6 0)) ((8 2) (7 0))
+    ((9 1) (0 0)) ((10 1) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-0)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul l x)) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((recv (cat (gen) (mul l-0 l-0))) (send (cat (gen) (mul l-0 l-0))))
+    ((recv l-0) (send l-0))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 398)
+  (parent 378)
+  (unrealized (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) l-0))
+  (deflistener (cat (gen) (mul l-0 l-0)))
+  (deflistener l-0)
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (4 2)) ((1 2) (10 0)) ((2 1) (1 0)) ((2 1) (8 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (9 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 1) (6 0)) ((8 2) (7 0))
+    ((9 1) (0 0)) ((10 1) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-0)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul l x)) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((recv (cat (gen) (mul l-0 l-0))) (send (cat (gen) (mul l-0 l-0))))
+    ((recv l-0) (send l-0))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 399)
+  (parent 378)
+  (unrealized (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (gen) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (4 2)) ((1 2) (9 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (8 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (0 0))
+    ((9 1) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0) (l-0 (one)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul l x)) (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 400)
+  (parent 381)
+  (unrealized (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha l-0) (chi x))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (cat (gen) l-0))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (4 2)) ((1 2) (9 0)) ((2 1) (1 0)) ((2 1) (7 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (8 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 2) (6 0)) ((8 1) (0 0))
+    ((9 1) (8 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y l-0) (l-0 (one)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul l x)) (8 0))
+  (strand-map 0 1 2 3 4 5 6 7 8)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (cat (gen) l-0)) (send (cat (gen) l-0)))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 401)
+  (parent 381)
+  (unrealized (9 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y rndx) (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (gen) (mul w l-0)))
+  (deflistener l-0)
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (4 2)) ((1 2) (10 0)) ((2 1) (1 0)) ((2 1) (8 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (9 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 1) (6 0)) ((8 2) (7 0))
+    ((9 1) (0 0)) ((10 1) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w l-0)) (l-0 w))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul l x)) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (gen) (mul w l-0))) (send (cat (gen) (mul w l-0))))
+    ((recv l-0) (send l-0))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 402)
+  (parent 382)
+  (unrealized (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (a b name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (priv-stor priv-stor-0 locn)
+    (l x y rndx) (w expt) (l-0 rndx))
+  (deflistener (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y w)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul w l-0)) (chi x))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener (cat (gen) (mul w l-0)))
+  (deflistener l-0)
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (deflistener (cat (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (4 2)) ((1 2) (10 0)) ((2 1) (1 0)) ((2 1) (8 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (9 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 1) (6 0)) ((8 2) (7 0))
+    ((9 1) (0 0)) ((10 1) (9 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul w l-0)) (l-0 w))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul l x)) (9 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y w))
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul w l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (cat (gen) (mul w l-0))) (send (cat (gen) (mul w l-0))))
+    ((recv l-0) (send l-0))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-3 "nil")) (send l-0))
+    ((recv (cat (exp (gen) (mul y w l-0)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y w l-0)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 403)
+  (parent 382)
+  (unrealized (10 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-0)) l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (11 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)) ((10 1) (0 0)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul y l-0)) l-1))
+    (exp (gen) (mul y l-0 l-1)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-0)) l-1))
+      (send (cat (exp (gen) (mul y l-0)) l-1))))
+  (label 404)
+  (parent 396)
+  (seen 408)
+  (seen-ops
+    (408
+      (operation nonce-test (added-strand ltx-disclose 3) l-1 (11 0)
+        (ch-msg priv-stor-1 (cat pt-4 (pv self l-1))))
+      (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)))
+  (unrealized (10 0) (11 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-1)) l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (11 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)) ((10 1) (0 0)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul y l-1)) l-0))
+    (exp (gen) (mul y l-0 l-1)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-1)) l-0))
+      (send (cat (exp (gen) (mul y l-1)) l-0))))
+  (label 405)
+  (parent 396)
+  (unrealized (10 0) (11 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) y))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (11 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)) ((10 1) (0 0)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l-0 l-1)) y))
+    (exp (gen) (mul y l-0 l-1)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) y))
+      (send (cat (exp (gen) (mul l-0 l-1)) y))))
+  (label 406)
+  (parent 396)
+  (unrealized (10 0) (11 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (10 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)) ((10 1) (0 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)) (l-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+    (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))) (0 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))))
+  (label 407)
+  (parent 397)
+  (unrealized (10 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-0)) l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (11 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)) ((9 2) (11 0)) ((10 1) (0 0)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 12 9 ltx-disclose 3) l-1 (11 0)
+    (ch-msg priv-stor-1 (cat pt-4 (pv self l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-0)) l-1))
+      (send (cat (exp (gen) (mul y l-0)) l-1))))
+  (label 408)
+  (parent 404)
+  (unrealized (10 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-1)) l-0))
+  (deflistener (cat (exp (gen) y) l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (12 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)) ((10 1) (0 0)) ((11 1) (10 0)) ((12 1) (11 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) y) l-1))
+    (exp (gen) (mul y l-1)) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-1)) l-0))
+      (send (cat (exp (gen) (mul y l-1)) l-0)))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1))))
+  (label 409)
+  (parent 405)
+  (seen 416)
+  (seen-ops
+    (416
+      (operation nonce-test (added-strand ltx-disclose 3) l-1 (12 0)
+        (ch-msg priv-stor-1 (cat pt-4 (pv self l-1))))
+      (strand-map 0 1 2 3 4 5 6 7 8 9 10 11 12)))
+  (unrealized (10 0) (12 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-1)) l-0))
+  (deflistener (cat (exp (gen) l-1) y))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (12 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)) ((10 1) (0 0)) ((11 1) (10 0)) ((12 1) (11 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-1) y))
+    (exp (gen) (mul y l-1)) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-1)) l-0))
+      (send (cat (exp (gen) (mul y l-1)) l-0)))
+    ((recv (cat (exp (gen) l-1) y)) (send (cat (exp (gen) l-1) y))))
+  (label 410)
+  (parent 405)
+  (unrealized (10 0) (12 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-0)) l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (11 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)) ((10 1) (0 0)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)) (l-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul y l-0)) l-1))
+    (exp (gen) (mul y l-0 l-1)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-0)) l-1))
+      (send (cat (exp (gen) (mul y l-0)) l-1))))
+  (label 411)
+  (parent 407)
+  (seen 417)
+  (seen-ops
+    (417
+      (operation nonce-test (added-strand ltx-disclose 3) l-1 (11 0)
+        (ch-msg priv-stor-1 (cat pt-4 (pv self l-1))))
+      (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)))
+  (unrealized (10 0) (11 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-1)) l-0))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (11 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)) ((10 1) (0 0)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)) (l-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul y l-1)) l-0))
+    (exp (gen) (mul y l-0 l-1)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-1)) l-0))
+      (send (cat (exp (gen) (mul y l-1)) l-0))))
+  (label 412)
+  (parent 407)
+  (unrealized (10 0) (11 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul l-0 l-1)) y))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (11 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)) ((10 1) (0 0)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)) (l-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l-0 l-1)) y))
+    (exp (gen) (mul y l-0 l-1)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul l-0 l-1)) y))
+      (send (cat (exp (gen) (mul l-0 l-1)) y))))
+  (label 413)
+  (parent 407)
+  (unrealized (10 0) (11 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-0)) l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (4 2)) ((1 2) (12 0)) ((2 1) (1 0)) ((2 1) (8 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (11 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0))
+    ((8 2) (6 0)) ((9 2) (5 0)) ((9 2) (11 0)) ((10 1) (0 0))
+    ((11 1) (10 0)) ((12 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul l x)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-0)) l-1))
+      (send (cat (exp (gen) (mul y l-0)) l-1)))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 414)
+  (parent 408)
+  (unrealized (12 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-0)) l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (4 2)) ((1 2) (12 0)) ((2 1) (1 0)) ((2 1) (8 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (11 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0))
+    ((8 2) (6 0)) ((9 2) (5 0)) ((9 2) (11 0)) ((10 1) (0 0))
+    ((11 1) (10 0)) ((12 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul l x)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-0)) l-1))
+      (send (cat (exp (gen) (mul y l-0)) l-1)))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 415)
+  (parent 408)
+  (unrealized (12 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-1)) l-0))
+  (deflistener (cat (exp (gen) y) l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (12 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)) ((9 2) (12 0)) ((10 1) (0 0)) ((11 1) (10 0))
+    ((12 1) (11 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 13 9 ltx-disclose 3) l-1 (12 0)
+    (ch-msg priv-stor-1 (cat pt-4 (pv self l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11 12)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-1)) l-0))
+      (send (cat (exp (gen) (mul y l-1)) l-0)))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1))))
+  (label 416)
+  (parent 409)
+  (unrealized (10 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-0)) l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (11 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)) ((9 2) (11 0)) ((10 1) (0 0)) ((11 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)) (l-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 12 9 ltx-disclose 3) l-1 (11 0)
+    (ch-msg priv-stor-1 (cat pt-4 (pv self l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-0)) l-1))
+      (send (cat (exp (gen) (mul y l-0)) l-1))))
+  (label 417)
+  (parent 411)
+  (unrealized (10 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-1)) l-0))
+  (deflistener (cat (exp (gen) y) l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (12 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)) ((10 1) (0 0)) ((11 1) (10 0)) ((12 1) (11 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)) (l-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) y) l-1))
+    (exp (gen) (mul y l-1)) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-1)) l-0))
+      (send (cat (exp (gen) (mul y l-1)) l-0)))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1))))
+  (label 418)
+  (parent 412)
+  (seen 424)
+  (seen-ops
+    (424
+      (operation nonce-test (added-strand ltx-disclose 3) l-1 (12 0)
+        (ch-msg priv-stor-1 (cat pt-4 (pv self l-1))))
+      (strand-map 0 1 2 3 4 5 6 7 8 9 10 11 12)))
+  (unrealized (10 0) (12 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-1)) l-0))
+  (deflistener (cat (exp (gen) l-1) y))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (12 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)) ((10 1) (0 0)) ((11 1) (10 0)) ((12 1) (11 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)) (l-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l-1) y))
+    (exp (gen) (mul y l-1)) (11 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-1)) l-0))
+      (send (cat (exp (gen) (mul y l-1)) l-0)))
+    ((recv (cat (exp (gen) l-1) y)) (send (cat (exp (gen) l-1) y))))
+  (label 419)
+  (parent 412)
+  (unrealized (10 0) (12 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-1)) l-0))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (4 2)) ((1 2) (13 0)) ((2 1) (1 0)) ((2 1) (8 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (12 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0))
+    ((8 2) (6 0)) ((9 2) (5 0)) ((9 2) (12 0)) ((10 1) (0 0))
+    ((11 1) (10 0)) ((12 1) (11 0)) ((13 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul l x)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11 12)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-1)) l-0))
+      (send (cat (exp (gen) (mul y l-1)) l-0)))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 420)
+  (parent 416)
+  (unrealized (13 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-1)) l-0))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (4 2)) ((1 2) (13 0)) ((2 1) (1 0)) ((2 1) (8 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (12 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0))
+    ((8 2) (6 0)) ((9 2) (5 0)) ((9 2) (12 0)) ((10 1) (0 0))
+    ((11 1) (10 0)) ((12 1) (11 0)) ((13 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul l x)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11 12)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-1)) l-0))
+      (send (cat (exp (gen) (mul y l-1)) l-0)))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 421)
+  (parent 416)
+  (unrealized (13 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-0)) l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (4 2)) ((1 2) (12 0)) ((2 1) (1 0)) ((2 1) (8 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (11 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0))
+    ((8 2) (6 0)) ((9 2) (5 0)) ((9 2) (11 0)) ((10 1) (0 0))
+    ((11 1) (10 0)) ((12 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)) (l-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul l x)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-0)) l-1))
+      (send (cat (exp (gen) (mul y l-0)) l-1)))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 422)
+  (parent 417)
+  (unrealized (12 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-0)) l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (4 2)) ((1 2) (12 0)) ((2 1) (1 0)) ((2 1) (8 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (11 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0))
+    ((8 2) (6 0)) ((9 2) (5 0)) ((9 2) (11 0)) ((10 1) (0 0))
+    ((11 1) (10 0)) ((12 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)) (l-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul l x)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-0)) l-1))
+      (send (cat (exp (gen) (mul y l-0)) l-1)))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 423)
+  (parent 417)
+  (unrealized (12 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-1)) l-0))
+  (deflistener (cat (exp (gen) y) l-1))
+  (precedes ((1 2) (4 2)) ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0))
+    ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (12 0)) ((5 1) (1 3))
+    ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0)) ((8 2) (6 0))
+    ((9 2) (5 0)) ((9 2) (12 0)) ((10 1) (0 0)) ((11 1) (10 0))
+    ((12 1) (11 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)) (l-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 13 9 ltx-disclose 3) l-1 (12 0)
+    (ch-msg priv-stor-1 (cat pt-4 (pv self l-1))))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11 12)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-1)) l-0))
+      (send (cat (exp (gen) (mul y l-1)) l-0)))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1))))
+  (label 424)
+  (parent 418)
+  (unrealized (10 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-1)) l-0))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l) x))
+  (precedes ((1 2) (4 2)) ((1 2) (13 0)) ((2 1) (1 0)) ((2 1) (8 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (12 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0))
+    ((8 2) (6 0)) ((9 2) (5 0)) ((9 2) (12 0)) ((10 1) (0 0))
+    ((11 1) (10 0)) ((12 1) (11 0)) ((13 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)) (l-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) x))
+    (exp (gen) (mul l x)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11 12)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-1)) l-0))
+      (send (cat (exp (gen) (mul y l-1)) l-0)))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l) x)) (send (cat (exp (gen) l) x))))
+  (label 425)
+  (parent 424)
+  (unrealized (13 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (a b self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l x y l-0 l-1 rndx))
+  (deflistener (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (x x) (beta l) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi x))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) l-1) l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self a) (priv-stor priv-stor) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+  (deflistener (cat (exp (gen) (mul y l-1)) l-0))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener (cat (exp (gen) x) l))
+  (precedes ((1 2) (4 2)) ((1 2) (13 0)) ((2 1) (1 0)) ((2 1) (8 0))
+    ((3 1) (4 0)) ((3 2) (1 1)) ((4 3) (5 0)) ((4 3) (12 0))
+    ((5 1) (1 3)) ((6 1) (4 1)) ((7 1) (9 0)) ((7 2) (6 0))
+    ((8 2) (6 0)) ((9 2) (5 0)) ((9 2) (12 0)) ((10 1) (0 0))
+    ((11 1) (10 0)) ((12 1) (11 0)) ((13 1) (10 0)))
+  (non-orig (privk "sig" b))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen x y)
+  (absent (x l) (x l-0) (y l) (y x) (y (mul l-0 l-1)) (l-0 l-1))
+  (precur (5 0) (6 0))
+  (gen-st (pv a l-0) (pv b l) (pv self l-1))
+  (facts (neq b a) (neq a b) (undisclosed l))
+  (leads-to ((2 1) (1 0)) ((2 1) (8 0)) ((3 1) (4 0)) ((7 1) (9 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) x) l))
+    (exp (gen) (mul l x)) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10 11 12)
+  (traces
+    ((recv (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l-0))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-2 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) l-1) l-0)) (send (cat (exp (gen) l-1) l-0)))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv self l-1)))
+      (send
+        (sig (body self (exp (gen) l-1) (pubk "sig" self))
+          (privk "sig" self))))
+    ((load priv-stor (cat pt (pv a l-0)))
+      (stor priv-stor (cat pt-5 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-6 "nil")) (send l-1))
+    ((recv (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x))))
+      (send (cat (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul l x)))))
+    ((recv (cat (exp (gen) (mul y l-1)) l-0))
+      (send (cat (exp (gen) (mul y l-1)) l-0)))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (cat (exp (gen) x) l)) (send (cat (exp (gen) x) l))))
+  (label 426)
+  (parent 424)
+  (unrealized (13 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
diff --git a/tst/dhcr_umx_implicit_auth.scm b/tst/dhcr_umx_implicit_auth.scm
new file mode 100644
--- /dev/null
+++ b/tst/dhcr_umx_implicit_auth.scm
@@ -0,0 +1,160 @@
+;;; Unified Model  This version used in the paper, tooldev/dh/conf_dh/dh_ebn.tex
+
+;;; This file models the "Unified Model" method of determining a fresh
+;;; key from long-term and ephemeral Diffie-Hellman exponents.  We use
+;;; self-signed certificates to link names to long-term public values.
+
+;;; This file contains the criss-crossed version, in which the each
+;;; ephemeral is mixed with the peer's static exponent.  Only the key
+;;; derivation macros differ from the version in dhcr_um.scm
+
+;;; A role is provided to expose the long term exponent.  The latter
+;;; step is used to test the notion of forward security, assuming that
+;;; it happens *after* the session which agrees the key in question.  
+
+;;; This file considers a single goal statement.  It asserts the
+;;; implicit authentication claim, namely that if *anyone* shares a
+;;; key with me, then that party and I agree on each others'
+;;; identities and long term values.  This assumes that the values
+;;; remain undisclosed.
+
+;;; CPSA4 revisions:
+;;;
+;;; 1.  Self certify my public value in ltx-gen,
+;;;     and assume signing keys non.
+;;; 2.  Deposit private value in state and retrieve
+;;;	it at the beginning of each init or resp run.
+;;; 3.  Discard the private value from state before
+;;;	disclosing it, when testing forward secrecy.
+
+(herald "DHCR: unified model (UM) with criss-cross key derivation"
+	(bound 30)
+	(limit 4000)
+	(algebra diffie-hellman))
+
+(defmacro (kcfa ltxa gbeta x hy)
+  (hash (exp hy ltxa) (exp gbeta x)))
+
+(defmacro (kcfb ltxb galpha y hx)
+  (hash (exp galpha y) (exp hx ltxb)))
+
+(defprotocol dhcr-umx diffie-hellman
+  (defrole init
+    (vars (l x rndx) (beta eta expt) (a b name) (na nb data) (priv-stor locn))
+    (trace
+     (load priv-stor (pv a l))
+     (recv (sig (body b (exp (gen) beta) (pubk "sig" b))
+		(privk "sig" b)))
+     (send (cat na a b (exp (gen) x)))
+     (recv (cat (exp (gen) eta)
+		(enc na nb a b
+		     (kcfa l (exp (gen) beta)
+			   x (exp (gen) eta)))))
+     (send nb)
+     )
+    (uniq-gen x)
+    (uniq-orig na)
+    (facts (neq a b))
+    ;; (facts (neq (exp (gen) eta) (gen)))
+    (gen-st (pv a l)))
+
+  (defrole resp
+    (vars (l y rndx) (alpha chi expt) (a b name) (na nb data) (priv-stor locn))
+    (trace
+     (load priv-stor (pv b l))
+     (recv (sig (body a (exp (gen) alpha) (pubk "sig" a))
+		(privk "sig" a)))
+     (recv (cat na a b (exp (gen) chi)))
+     (send (cat (exp (gen) y)
+		(enc na nb a b
+		     (kcfb l (exp (gen) alpha)
+			   y (exp (gen) chi)))))
+     (recv nb)
+     (send "done")
+     )
+    (uniq-gen y)
+    (uniq-orig nb)
+    (facts (neq a b))
+    ;;    (facts (neq (exp (gen) chi) (gen)))
+    (gen-st (pv b l)))
+
+  (defrole ltx-gen
+    (vars (self name) (l rndx)
+	  (priv-stor locn) (ignore mesg))
+    (trace
+     (load priv-stor ignore)
+     (stor priv-stor (pv self l))
+     (send (sig (body self (exp (gen) l) (pubk "sig" self))
+		(privk "sig" self))))
+    (uniq-orig l))
+
+  (defrole ltx-disclose
+    (vars (self name) (l rndx)
+	  (priv-stor locn) (ignore mesg))
+    (trace
+     (load priv-stor (pv self l))
+     (stor priv-stor "nil")
+     (send l))
+    (gen-st (pv self l)))
+
+  (defrule undisclosed-not-disclosed
+    (forall
+     ((z strd) (l rndx))
+     (implies
+      (and (fact undisclosed l)
+	  (p "ltx-disclose" z 2)
+	  (p "ltx-disclose" "l" z l))
+      (false))))
+
+  (defrule eq-means-=
+    (forall
+     ((v1 v2 mesg))
+     (implies
+      (fact eq v1 v2)
+      (= v1 v2))))
+
+  (lang (sig sign)
+	(body (tuple 3))
+	(pv (tuple 2))))
+ 
+;; Implicit authentication
+
+(defgoal dhcr-umx
+  (forall
+   ((zi zr strd) (ltxa ltxb x y rndx) (eta chi beta alpha expt)
+    (a b a-0 b-0 name))
+   (implies
+    (and
+     (p "init" zi 4)
+     (p "init" "l" zi ltxa)
+     (p "init" "beta" zi beta)
+     (p "init" "x" zi x)
+     (p "init" "eta" zi eta)
+     (p "init" "a" zi a)
+     (p "init" "b" zi b-0)
+     
+     (p "resp" zr 4)
+     (p "resp" "l" zr ltxb)
+     (p "resp" "alpha" zr alpha)
+     (p "resp" "y" zr y)
+     (p "resp" "chi" zr chi)     
+     (p "resp" "a" zr a-0)
+     (p "resp" "b" zr b)
+     (fact eq
+	   (kcfa ltxa (exp (gen) beta)
+		 x (exp (gen) eta))
+	   (kcfb ltxb (exp (gen) alpha)
+		 y (exp (gen) chi)))
+     (non (privk "sig" b))
+     (non (privk "sig" a))
+     (fact neq ltxa ltxb)
+     (fact undisclosed ltxa)
+     (fact undisclosed beta)
+     (fact undisclosed ltxb)
+     (fact undisclosed alpha))
+    (and
+     (= a-0 a)
+     (= b-0 b)
+     (= beta ltxb)
+     (= alpha ltxa)))))
+
diff --git a/tst/dhcr_umx_implicit_auth.tst b/tst/dhcr_umx_implicit_auth.tst
new file mode 100644
--- /dev/null
+++ b/tst/dhcr_umx_implicit_auth.tst
@@ -0,0 +1,5707 @@
+(herald "DHCR: unified model (UM) with criss-cross key derivation"
+  (bound 30) (limit 4000) (algebra diffie-hellman))
+
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/dhcr_umx_implicit_auth.scm")
+(comment "Step count limited to 4000")
+(comment "Strand count bounded at 30")
+
+(defprotocol dhcr-umx diffie-hellman
+  (defrole init
+    (vars (l x rndx) (beta eta expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv a l))
+      (recv
+        (sig (body b (exp (gen) beta) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na nb a b
+            (hash (exp (gen) (mul l eta)) (exp (gen) (mul x beta))))))
+      (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x l) (x beta))
+    (facts (neq a b))
+    (gen-st (pv a l)))
+  (defrole resp
+    (vars (l y rndx) (alpha chi expt) (a b name) (na nb data)
+      (priv-stor locn))
+    (trace (load priv-stor (pv b l))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y alpha)) (exp (gen) (mul l chi))))))
+      (recv nb) (send "done"))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y l) (y alpha) (y chi))
+    (facts (neq a b))
+    (gen-st (pv b l)))
+  (defrole ltx-gen
+    (vars (self name) (l rndx) (priv-stor locn) (ignore mesg))
+    (trace (load priv-stor ignore) (stor priv-stor (pv self l))
+      (send
+        (sig (body self (exp (gen) l) (pubk "sig" self))
+          (privk "sig" self))))
+    (uniq-orig l))
+  (defrole ltx-disclose
+    (vars (self name) (l rndx) (priv-stor locn))
+    (trace (load priv-stor (pv self l)) (stor priv-stor "nil") (send l))
+    (gen-st (pv self l)))
+  (defrule undisclosed-not-disclosed
+    (forall ((z strd) (l rndx))
+      (implies
+        (and (fact undisclosed l) (p "ltx-disclose" z (idx 2))
+          (p "ltx-disclose" "l" z l))
+        (false))))
+  (defrule eq-means-=
+    (forall ((v1 v2 mesg)) (implies (fact eq v1 v2) (= v1 v2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "init" z (idx 2)) (p "init" "a" z a) (p "init" "b" z b))
+        (fact neq a b))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "resp" z (idx 2)) (p "resp" "a" z a) (p "resp" "b" z b))
+        (fact neq a b))))
+  (defgenrule trRl_ltx-gen-at-1
+    (forall ((z strd))
+      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 1)))))
+  (defgenrule trRl_ltx-gen-at-0
+    (forall ((z strd))
+      (implies (p "ltx-gen" z (idx 2)) (trans z (idx 0)))))
+  (defgenrule trRl_ltx-disclose-at-1
+    (forall ((z strd))
+      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 1)))))
+  (defgenrule trRl_ltx-disclose-at-0
+    (forall ((z strd))
+      (implies (p "ltx-disclose" z (idx 2)) (trans z (idx 0)))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (a name) (l rndx))
+      (implies
+        (and (p "init" z (idx 1)) (p "init" "l" z l) (p "init" "a" z a))
+        (gen-st (pv a l)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (b name) (l rndx))
+      (implies
+        (and (p "resp" z (idx 1)) (p "resp" "l" z l) (p "resp" "b" z b))
+        (gen-st (pv b l)))))
+  (defgenrule gen-st-ltx-disclose-0
+    (forall ((z strd) (self name) (l rndx))
+      (implies
+        (and (p "ltx-disclose" z (idx 1)) (p "ltx-disclose" "l" z l)
+          (p "ltx-disclose" "self" z self)) (gen-st (pv self l)))))
+  (lang (sig sign) (body (tuple 3)) (pv (tuple 2))))
+
+(defskeleton dhcr-umx
+  (vars (na nb na-0 nb-0 data) (a b a-0 b-0 name) (pt pt-0 pval)
+    (priv-stor priv-stor-0 locn) (ltxa ltxb x y rndx)
+    (eta chi beta alpha expt))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l ltxb) (y y) (alpha alpha) (chi chi))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l ltxa) (x x) (beta beta) (eta eta))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0)
+  (uniq-gen x y)
+  (absent (x ltxa) (x beta) (y ltxb) (y chi) (y alpha))
+  (facts
+    (eq (hash (exp (gen) (mul ltxa eta)) (exp (gen) (mul x beta)))
+      (hash (exp (gen) (mul y alpha)) (exp (gen) (mul ltxb chi))))
+    (neq ltxa ltxb) (undisclosed ltxa) (undisclosed beta)
+    (undisclosed ltxb) (undisclosed alpha))
+  (goals
+    (forall
+      ((zi zr strd) (ltxa ltxb x y rndx) (eta chi beta alpha expt)
+        (a b a-0 b-0 name))
+      (implies
+        (and (p "init" zi 4) (p "init" "l" zi ltxa)
+          (p "init" "beta" zi beta) (p "init" "x" zi x)
+          (p "init" "eta" zi eta) (p "init" "a" zi a)
+          (p "init" "b" zi b-0) (p "resp" zr 4) (p "resp" "l" zr ltxb)
+          (p "resp" "alpha" zr alpha) (p "resp" "y" zr y)
+          (p "resp" "chi" zr chi) (p "resp" "a" zr a-0)
+          (p "resp" "b" zr b)
+          (fact eq
+            (hash (exp (exp (gen) eta) ltxa) (exp (exp (gen) beta) x))
+            (hash (exp (exp (gen) alpha) y) (exp (exp (gen) chi) ltxb)))
+          (non (privk "sig" b)) (non (privk "sig" a))
+          (fact neq ltxa ltxb) (fact undisclosed ltxa)
+          (fact undisclosed beta) (fact undisclosed ltxb)
+          (fact undisclosed alpha))
+        (and (= a-0 a) (= b-0 b) (= beta ltxb) (= alpha ltxa)))))
+  (traces
+    ((load priv-stor (cat pt (pv b ltxb)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0))) (recv (cat na a-0 b (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul y alpha))
+              (exp (gen) (mul ltxb chi)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a ltxa)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) eta)
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul ltxa eta))
+              (exp (gen) (mul x beta))))))))
+  (label 0)
+  (realized)
+  (origs (na-0 (1 2)) (nb (0 3)))
+  (ugens (x (1 2)) (y (0 3)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhcr-umx
+  (vars (na nb na-0 nb-0 data) (a b a-0 b-0 name) (pt pt-0 pval)
+    (priv-stor priv-stor-0 locn) (ltxa y rndx) (alpha expt)
+    (ltxb x rndx) (beta expt))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l ltxb) (y y) (alpha alpha) (chi (mul (rec ltxb) x beta)))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l ltxa) (x x) (beta beta)
+    (eta (mul (rec ltxa) y alpha)))
+  (precedes ((0 3) (1 3)) ((1 2) (0 2)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0)
+  (uniq-gen y x)
+  (absent (y alpha) (y (mul (rec ltxb) x beta)) (y ltxb) (x ltxa)
+    (x beta))
+  (gen-st (pv a ltxa) (pv b ltxb))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x beta)))
+      (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x beta))))
+    (neq ltxa ltxb) (undisclosed ltxa) (undisclosed beta)
+    (undisclosed ltxb) (undisclosed alpha))
+  (rule eq-means-= fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0)
+  (traces
+    ((load priv-stor (cat pt (pv b ltxb)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul (rec ltxb) x beta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul y alpha))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a ltxa)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec ltxa) y alpha))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul y alpha))
+              (exp (gen) (mul x beta))))))))
+  (label 1)
+  (parent 0)
+  (unrealized (0 0) (1 0))
+  (origs (na-0 (1 2)) (nb (0 3)))
+  (ugens (x (1 2)) (y (0 3)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (alpha expt) (ltxb x rndx) (beta expt) (l rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l ltxb) (y y) (alpha alpha) (chi (mul (rec ltxb) x beta)))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l) (x x) (beta beta)
+    (eta (mul y alpha (rec l))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (precedes ((0 3) (1 3)) ((1 2) (0 2)) ((2 1) (1 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l)
+  (uniq-gen y x)
+  (absent (y alpha) (y (mul (rec ltxb) x beta)) (y ltxb) (x beta) (x l))
+  (gen-st (pv a l) (pv b ltxb))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x beta)))
+      (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x beta))))
+    (neq l ltxb) (undisclosed l) (undisclosed beta) (undisclosed ltxb)
+    (undisclosed alpha))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-0 (cat pt-0 (pv a l))) (1 0))
+  (strand-map 0 1)
+  (traces
+    ((load priv-stor (cat pt (pv b ltxb)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul (rec ltxb) x beta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul y alpha))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y alpha (rec l)))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul y alpha))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l)))))
+  (label 2)
+  (parent 1)
+  (unrealized (0 0) (1 3))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (l rndx) (chi expt)
+    (l-0 y x l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha l) (chi (mul chi l-0 x (rec l-1))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l) (x x) (beta (mul chi l-0)) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (precedes ((0 3) (1 3)) ((1 2) (0 2)) ((2 1) (1 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l)
+  (uniq-gen y x)
+  (absent (y l) (y (mul chi l-0 x (rec l-1))) (y l-1) (x l)
+    (x (mul chi l-0)))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))
+      (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+    (neq l l-1) (undisclosed l) (undisclosed (mul chi l-0))
+    (undisclosed l-1))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 3 0 resp 4) (exp (gen) y-0) (1 3))
+  (strand-map 0 1 2)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) l) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l-0 x (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l-0)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l)))))
+  (label 3)
+  (parent 2)
+  (unrealized (0 0) (0 1) (1 3))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (y rndx)
+    (alpha expt) (ltxb x rndx) (beta expt) (l rndx) (w expt))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l ltxb) (y y) (alpha alpha) (chi (mul (rec ltxb) x beta)))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l) (x x) (beta beta)
+    (eta (mul y alpha (rec l))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (cat (exp (gen) (mul y alpha (rec l) (rec w))) w))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l)
+  (uniq-gen y x)
+  (absent (y alpha) (y (mul (rec ltxb) x beta)) (y ltxb) (x beta) (x l))
+  (precur (3 0))
+  (gen-st (pv a l) (pv b ltxb))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x beta)))
+      (hash (exp (gen) (mul y alpha)) (exp (gen) (mul x beta))))
+    (neq l ltxb) (undisclosed l) (undisclosed beta) (undisclosed ltxb)
+    (undisclosed alpha))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul y alpha (rec l) (rec w))) w))
+    (exp (gen) (mul y alpha (rec l))) (1 3))
+  (strand-map 0 1 2)
+  (traces
+    ((load priv-stor (cat pt (pv b ltxb)))
+      (recv
+        (sig (body a-0 (exp (gen) alpha) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul (rec ltxb) x beta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul y alpha))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y alpha (rec l)))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul y alpha))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (cat (exp (gen) (mul y alpha (rec l) (rec w))) w))
+      (send (cat (exp (gen) (mul y alpha (rec l) (rec w))) w))))
+  (label 4)
+  (parent 2)
+  (unrealized (0 0) (3 0))
+  (comment "7 in cohort - 7 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb data) (b a name) (pt pt-0 pt-1 pval)
+    (priv-stor priv-stor-0 locn) (l rndx) (chi expt) (l-0 y x l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha l) (chi (mul chi l-0 x (rec l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (x x) (beta (mul chi l-0)) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (precedes ((0 3) (1 3)) ((1 2) (0 2)) ((2 1) (1 0)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l)
+  (uniq-gen y x)
+  (absent (y l) (y (mul chi l-0 x (rec l-1))) (y l-1) (x l)
+    (x (mul chi l-0)))
+  (gen-st (pv b l-1) (pv a l))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))
+      (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+    (neq l l-1) (undisclosed l) (undisclosed (mul chi l-0))
+    (undisclosed l-1))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (displaced 3 0 resp 4)
+    (enc na-0 nb-0 a-0 b-0
+      (hash (exp (gen) (mul l y-0)) (exp (gen) (mul l-2 chi)))) (1 3))
+  (strand-map 0 1 2)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul chi l-0 x (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b (exp (gen) (mul chi l-0)) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l)))))
+  (label 5)
+  (parent 3)
+  (unrealized (0 0) (0 1) (1 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (l rndx) (chi expt)
+    (l-0 y x l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha l) (chi (mul chi l-0 x (rec l-1))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l) (x x) (beta (mul chi l-0)) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l)
+  (uniq-gen y x)
+  (absent (y l) (y (mul chi l-0 x (rec l-1))) (y l-1) (x l)
+    (x (mul chi l-0)))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))
+      (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+    (neq l l-1) (undisclosed l) (undisclosed (mul chi l-0))
+    (undisclosed l-1))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+    (enc na-0 nb-0 a b-0
+      (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))) (1 3))
+  (strand-map 0 1 2)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) l) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l-0 x (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l-0)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+      (send (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))))
+  (label 6)
+  (parent 3)
+  (unrealized (0 0) (0 1) (3 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 na-1 data)
+    (a b a-0 b-0 a-1 b-1 name) (pt pt-0 pt-1 pt-2 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (ltxb x rndx) (beta expt)
+    (l rndx) (beta-0 expt) (l-0 rndx) (w expt) (x-0 y l-1 x-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l ltxb) (y y) (alpha (mul l-0 w x-0))
+    (chi (mul (rec ltxb) x beta)))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta beta)
+    (eta (mul l-0 w x-0 y (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener
+    (cat (exp (gen) x-1) (mul l-0 w x-0 y (rec l-1) (rec x-1))))
+  (defstrand init 3 (na na-1) (a a-1) (b b-1) (priv-stor priv-stor-1)
+    (l l) (x x-1) (beta beta-0))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 2) (3 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 na-1 l-1)
+  (uniq-gen x y x-1)
+  (absent (x beta) (x l-1) (y (mul (rec ltxb) x beta)) (y ltxb)
+    (y (mul l-0 w x-0)) (x-1 l) (x-1 beta-0))
+  (precur (3 0))
+  (gen-st (pv a l-1) (pv b ltxb) (pv a-1 l))
+  (facts (neq a-1 b-1) (neq a b-0) (neq b a-0) (neq b-1 a-1) (neq b-0 a)
+    (neq a-0 b)
+    (eq (hash (exp (gen) (mul l-0 w x-0 y)) (exp (gen) (mul x beta)))
+      (hash (exp (gen) (mul l-0 w x-0 y)) (exp (gen) (mul x beta))))
+    (neq l-1 ltxb) (undisclosed l-1) (undisclosed beta)
+    (undisclosed ltxb) (undisclosed (mul l-0 w x-0)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-1) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b ltxb)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul l-0 w x-0)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul (rec ltxb) x beta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul l-0 w x-0 y))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l-0 w x-0 y (rec l-1)))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l-0 w x-0 y))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) x-1) (mul l-0 w x-0 y (rec l-1) (rec x-1))))
+      (send
+        (cat (exp (gen) x-1) (mul l-0 w x-0 y (rec l-1) (rec x-1)))))
+    ((load priv-stor-1 (cat pt-2 (pv a-1 l)))
+      (recv
+        (sig (body b-1 (exp (gen) beta-0) (pubk "sig" b-1))
+          (privk "sig" b-1)))
+      (send (cat na-1 a-1 b-1 (exp (gen) x-1)))))
+  (label 7)
+  (parent 4)
+  (unrealized (0 0) (1 3) (3 0) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (ltxb rndx)
+    (w expt) (l rndx) (beta expt) (x y l-0 x-0 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l ltxb) (y y) (alpha (mul w l x)) (chi (mul (rec ltxb) beta x-0)))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-0) (x x-0) (beta beta)
+    (eta (mul w l x y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-0))
+  (deflistener (cat (exp (gen) x-0) (mul w l x y (rec l-0) (rec x-0))))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l-0)
+  (uniq-gen y x-0)
+  (absent (y (mul (rec ltxb) beta x-0)) (y ltxb) (y (mul w l x))
+    (x-0 beta) (x-0 l-0))
+  (precur (3 0))
+  (gen-st (pv a l-0) (pv b ltxb))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul w l x y)) (exp (gen) (mul beta x-0)))
+      (hash (exp (gen) (mul w l x y)) (exp (gen) (mul beta x-0))))
+    (neq l-0 ltxb) (undisclosed l-0) (undisclosed beta)
+    (undisclosed ltxb) (undisclosed (mul w l x)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 4 1 init 3) (exp (gen) x-1) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b ltxb)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul w l x)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul (rec ltxb) beta x-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul w l x y))
+              (exp (gen) (mul beta x-0)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul w l x y (rec l-0)))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul w l x y))
+              (exp (gen) (mul beta x-0)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-0))))
+    ((recv (cat (exp (gen) x-0) (mul w l x y (rec l-0) (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul w l x y (rec l-0) (rec x-0))))))
+  (label 8)
+  (parent 4)
+  (unrealized (0 0) (1 3) (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (ltxb x rndx)
+    (beta expt) (l rndx) (w expt) (y l-0 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l ltxb) (y y) (alpha (mul l w)) (chi (mul (rec ltxb) x beta)))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta beta)
+    (eta (mul l w y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-0))
+  (deflistener (cat (gen) (mul l w y (rec l-0))))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l-0)
+  (uniq-gen x y)
+  (absent (x beta) (x l-0) (y (mul (rec ltxb) x beta)) (y ltxb)
+    (y (mul l w)))
+  (precur (3 0))
+  (gen-st (pv a l-0) (pv b ltxb))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul l w y)) (exp (gen) (mul x beta)))
+      (hash (exp (gen) (mul l w y)) (exp (gen) (mul x beta))))
+    (neq l-0 ltxb) (undisclosed l-0) (undisclosed beta)
+    (undisclosed ltxb) (undisclosed (mul l w)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (y-0 y) (alpha (mul l w)) (l-1 l-0)
+      (w-0 (mul l w y (rec l-0))) (y-1 y) (l l-0)
+      (w (mul l w y (rec l-0)))) (gen) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b ltxb)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul l w)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul (rec ltxb) x beta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul l w y)) (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l w y (rec l-0)))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l w y)) (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-0))))
+    ((recv (cat (gen) (mul l w y (rec l-0))))
+      (send (cat (gen) (mul l w y (rec l-0))))))
+  (label 9)
+  (parent 4)
+  (unrealized (0 0) (1 3) (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 na-1 nb-1 data)
+    (a b a-0 b-0 a-1 b-1 name) (pt pt-0 pt-1 pt-2 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (ltxb x rndx) (beta expt)
+    (l rndx) (alpha chi expt) (l-0 rndx) (w expt) (y y-0 l-1 y-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l ltxb) (y y-0) (alpha (mul l-0 w y))
+    (chi (mul (rec ltxb) x beta)))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta beta)
+    (eta (mul l-0 w y y-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener
+    (cat (exp (gen) y-1) (mul l-0 w y y-0 (rec l-1) (rec y-1))))
+  (defstrand resp 4 (na na-1) (nb nb-1) (a a-1) (b b-1)
+    (priv-stor priv-stor-1) (l l) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 3) (3 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 nb-1 l-1)
+  (uniq-gen x y-0 y-1)
+  (absent (x beta) (x l-1) (y-0 (mul (rec ltxb) x beta)) (y-0 ltxb)
+    (y-0 (mul l-0 w y)) (y-1 l) (y-1 alpha) (y-1 chi))
+  (precur (3 0))
+  (gen-st (pv a l-1) (pv b ltxb) (pv b-1 l))
+  (facts (neq b-1 a-1) (neq a b-0) (neq b a-0) (neq a-1 b-1) (neq b-0 a)
+    (neq a-0 b)
+    (eq (hash (exp (gen) (mul l-0 w y y-0)) (exp (gen) (mul x beta)))
+      (hash (exp (gen) (mul l-0 w y y-0)) (exp (gen) (mul x beta))))
+    (neq l-1 ltxb) (undisclosed l-1) (undisclosed beta)
+    (undisclosed ltxb) (undisclosed (mul l-0 w y)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y-1) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b ltxb)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul l-0 w y)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul (rec ltxb) x beta))))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul l-0 w y y-0))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l-0 w y y-0 (rec l-1)))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l-0 w y y-0))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y-1) (mul l-0 w y y-0 (rec l-1) (rec y-1))))
+      (send
+        (cat (exp (gen) y-1) (mul l-0 w y y-0 (rec l-1) (rec y-1)))))
+    ((load priv-stor-1 (cat pt-2 (pv b-1 l)))
+      (recv
+        (sig (body a-1 (exp (gen) alpha) (pubk "sig" a-1))
+          (privk "sig" a-1))) (recv (cat na-1 a-1 b-1 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-1 nb-1 a-1 b-1
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul l chi))))))))
+  (label 10)
+  (parent 4)
+  (unrealized (0 0) (1 3) (3 0) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (l rndx)
+    (w chi expt) (l-0 y x l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha (mul l w)) (chi (mul chi l-0 x (rec l-1))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l) (x x) (beta (mul chi l-0))
+    (eta (mul w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (cat (exp (gen) y) w))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l)
+  (uniq-gen y x)
+  (absent (y (mul l w)) (y (mul chi l-0 x (rec l-1))) (y l-1) (x l)
+    (x (mul chi l-0)))
+  (precur (3 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x)))
+      (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))
+    (neq l l-1) (undisclosed l) (undisclosed (mul chi l-0))
+    (undisclosed l-1) (undisclosed (mul l w)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 4 0 resp 4) (exp (gen) y-0) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul l w)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l-0 x (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul l w y))
+              (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l-0)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l w y))
+              (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
+  (label 11)
+  (parent 4)
+  (unrealized (0 0) (0 1) (1 3))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (b a b-0 self name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (ltxb x rndx)
+    (beta w expt) (l y l-0 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l ltxb) (y y) (alpha (mul w l l)) (chi (mul (rec ltxb) x beta)))
+  (defstrand init 4 (na na-0) (nb nb-0) (a self) (b b-0)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta beta)
+    (eta (mul w l l y (rec l-0))))
+  (deflistener (cat (exp (gen) l-0) (mul w l l y (rec l-0) (rec l-0))))
+  (defstrand ltx-gen 3 (ignore ignore) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 3) (2 0)) ((1 2) (0 2)) ((2 1) (1 3)) ((3 1) (1 0))
+    ((3 2) (2 0)))
+  (non-orig (privk "sig" b) (privk "sig" self))
+  (uniq-orig nb na-0 l-0)
+  (uniq-gen x y)
+  (absent (x beta) (x l-0) (y (mul (rec ltxb) x beta)) (y ltxb)
+    (y (mul w l l)))
+  (precur (2 0))
+  (gen-st (pv b ltxb) (pv self l-0))
+  (facts (neq self b-0) (neq b a) (neq b-0 self) (neq a b)
+    (eq (hash (exp (gen) (mul w l l y)) (exp (gen) (mul x beta)))
+      (hash (exp (gen) (mul w l l y)) (exp (gen) (mul x beta))))
+    (neq l-0 ltxb) (undisclosed l-0) (undisclosed beta)
+    (undisclosed ltxb) (undisclosed (mul w l l)))
+  (leads-to ((3 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 2 4 ltx-gen 3) (exp (gen) l-1) (3 0))
+  (strand-map 0 1 3 2)
+  (traces
+    ((load priv-stor (cat pt (pv b ltxb)))
+      (recv
+        (sig (body a (exp (gen) (mul w l l)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul (rec ltxb) x beta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul w l l y))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-1 (pv self l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 self b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w l l y (rec l-0)))
+          (enc na-0 nb-0 self b-0
+            (hash (exp (gen) (mul w l l y))
+              (exp (gen) (mul x beta)))))))
+    ((recv (cat (exp (gen) l-0) (mul w l l y (rec l-0) (rec l-0))))
+      (send (cat (exp (gen) l-0) (mul w l l y (rec l-0) (rec l-0)))))
+    ((load priv-stor-0 (cat pt-0 ignore))
+      (stor priv-stor-0 (cat pt-1 (pv self l-0)))
+      (send
+        (sig (body self (exp (gen) l-0) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 12)
+  (parent 4)
+  (unrealized (0 0) (1 3) (2 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 self name) (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (ltxb x rndx) (beta expt)
+    (l rndx) (w expt) (l-0 y l-1 l-2 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l ltxb) (y y) (alpha (mul l w l-0)) (chi (mul (rec ltxb) x beta)))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta beta)
+    (eta (mul l w l-0 y (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener
+    (cat (exp (gen) l-2) (mul l w l-0 y (rec l-1) (rec l-2))))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-1) (l l-2))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 2) (3 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l-1 l-2)
+  (uniq-gen x y)
+  (absent (x beta) (x l-1) (y (mul (rec ltxb) x beta)) (y ltxb)
+    (y (mul l w l-0)))
+  (precur (3 0))
+  (gen-st (pv a l-1) (pv b ltxb))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul l w l-0 y)) (exp (gen) (mul x beta)))
+      (hash (exp (gen) (mul l w l-0 y)) (exp (gen) (mul x beta))))
+    (neq l-1 ltxb) (undisclosed l-1) (undisclosed beta)
+    (undisclosed ltxb) (undisclosed (mul l w l-0)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-2) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b ltxb)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul l w l-0)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul (rec ltxb) x beta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul l w l-0 y))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l w l-0 y (rec l-1)))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l w l-0 y))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) l-2) (mul l w l-0 y (rec l-1) (rec l-2))))
+      (send (cat (exp (gen) l-2) (mul l w l-0 y (rec l-1) (rec l-2)))))
+    ((load priv-stor-1 (cat pt-2 ignore-0))
+      (stor priv-stor-1 (cat pt-3 (pv self l-2)))
+      (send
+        (sig (body self (exp (gen) l-2) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 13)
+  (parent 4)
+  (unrealized (0 0) (1 3) (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l y x l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l) (chi (mul x (rec l-0) l-1)))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (x x) (beta l-1) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 3) (1 3)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 2) (1 1)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-1)
+  (uniq-gen y x)
+  (absent (y l) (y (mul x (rec l-0) l-1)) (y l-0) (x l) (x l-1))
+  (gen-st (pv b l-0) (pv a l))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul l y)) (exp (gen) (mul x l-1)))
+      (hash (exp (gen) (mul l y)) (exp (gen) (mul x l-1)))) (neq l l-0)
+    (undisclosed l) (undisclosed l-1) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand ltx-gen 3)
+    (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)) (1 1))
+  (strand-map 0 1 2)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l-0) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul x l-1)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul x l-1)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((load priv-stor-1 (cat pt-2 ignore-0))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))))
+  (label 14)
+  (parent 5)
+  (unrealized (0 0) (0 1) (0 2))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (l rndx) (chi expt)
+    (l-0 y x l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha l) (chi (mul chi l-0 x (rec l-1))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l) (x x) (beta (mul chi l-0)) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+  (deflistener (cat (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+  (precedes ((0 3) (4 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 1) (3 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l)
+  (uniq-gen y x)
+  (absent (y l) (y (mul chi l-0 x (rec l-1))) (y l-1) (x l)
+    (x (mul chi l-0)))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))
+      (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+    (neq l l-1) (undisclosed l) (undisclosed (mul chi l-0))
+    (undisclosed l-1))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+    (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) l) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l-0 x (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l-0)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+      (send (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))))
+    ((recv (cat (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+      (send (cat (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))))
+  (label 15)
+  (parent 6)
+  (unrealized (0 0) (0 1) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 na-1 data) (a b a-0 b-0 b-1 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (ltxb x rndx)
+    (beta beta-0 expt) (l rndx) (w expt) (x-0 y x-1 l-0 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l ltxb) (y y) (alpha (mul l w x-0)) (chi (mul (rec ltxb) x beta)))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta beta)
+    (eta (mul l w x-0 y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-0))
+  (deflistener
+    (cat (exp (gen) x-1) (mul l w x-0 y (rec x-1) (rec l-0))))
+  (defstrand init 3 (na na-1) (a a) (b b-1) (priv-stor priv-stor-0)
+    (l l-0) (x x-1) (beta beta-0))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((3 1) (1 3)) ((4 2) (3 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 na-1 l-0)
+  (uniq-gen x y x-1)
+  (absent (x beta) (x l-0) (y (mul (rec ltxb) x beta)) (y ltxb)
+    (y (mul l w x-0)) (x-1 beta-0) (x-1 l-0))
+  (precur (3 0))
+  (gen-st (pv a l-0) (pv b ltxb))
+  (facts (neq a b-1) (neq a b-0) (neq b a-0) (neq b-1 a) (neq b-0 a)
+    (neq a-0 b)
+    (eq (hash (exp (gen) (mul l w x-0 y)) (exp (gen) (mul x beta)))
+      (hash (exp (gen) (mul l w x-0 y)) (exp (gen) (mul x beta))))
+    (neq l-0 ltxb) (undisclosed l-0) (undisclosed beta)
+    (undisclosed ltxb) (undisclosed (mul l w x-0)))
+  (leads-to ((2 1) (1 0)) ((2 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 5 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-2 (pv a-1 l-1))) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b ltxb)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul l w x-0)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul (rec ltxb) x beta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul l w x-0 y))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l w x-0 y (rec l-0)))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l w x-0 y))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-0))))
+    ((recv (cat (exp (gen) x-1) (mul l w x-0 y (rec x-1) (rec l-0))))
+      (send (cat (exp (gen) x-1) (mul l w x-0 y (rec x-1) (rec l-0)))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-0)))
+      (recv
+        (sig (body b-1 (exp (gen) beta-0) (pubk "sig" b-1))
+          (privk "sig" b-1))) (send (cat na-1 a b-1 (exp (gen) x-1)))))
+  (label 16)
+  (parent 7)
+  (unrealized (0 0) (1 3) (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 na-1 data)
+    (a b a-0 b-0 a-1 b-1 name) (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (ltxb x rndx)
+    (beta beta-0 expt) (l rndx) (w expt) (x-0 y l-0 x-1 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l ltxb) (y y) (alpha (mul l w x-0)) (chi (mul (rec ltxb) x beta)))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta beta)
+    (eta (mul l w x-0 y (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-0))
+  (deflistener
+    (cat (exp (gen) x-1) (mul l w x-0 y (rec l-0) (rec x-1))))
+  (defstrand init 3 (na na-1) (a a-1) (b b-1) (priv-stor priv-stor-1)
+    (l l-1) (x x-1) (beta beta-0))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self a-1)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 2) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 na-1 l-0 l-1)
+  (uniq-gen x y x-1)
+  (absent (x beta) (x l-0) (y (mul (rec ltxb) x beta)) (y ltxb)
+    (y (mul l w x-0)) (x-1 beta-0) (x-1 l-1))
+  (precur (3 0))
+  (gen-st (pv a l-0) (pv b ltxb) (pv a-1 l-1))
+  (facts (neq a-1 b-1) (neq a b-0) (neq b a-0) (neq b-1 a-1) (neq b-0 a)
+    (neq a-0 b)
+    (eq (hash (exp (gen) (mul l w x-0 y)) (exp (gen) (mul x beta)))
+      (hash (exp (gen) (mul l w x-0 y)) (exp (gen) (mul x beta))))
+    (neq l-0 ltxb) (undisclosed l-0) (undisclosed beta)
+    (undisclosed ltxb) (undisclosed (mul l w x-0)))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-2 (pv a-1 l-1))) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b ltxb)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul l w x-0)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul (rec ltxb) x beta))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul l w x-0 y))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l w x-0 y (rec l-0)))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l w x-0 y))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-0))))
+    ((recv (cat (exp (gen) x-1) (mul l w x-0 y (rec l-0) (rec x-1))))
+      (send (cat (exp (gen) x-1) (mul l w x-0 y (rec l-0) (rec x-1)))))
+    ((load priv-stor-1 (cat pt-2 (pv a-1 l-1)))
+      (recv
+        (sig (body b-1 (exp (gen) beta-0) (pubk "sig" b-1))
+          (privk "sig" b-1))) (send (cat na-1 a-1 b-1 (exp (gen) x-1))))
+    ((load priv-stor-1 (cat pt-3 ignore-0))
+      (stor priv-stor-1 (cat pt-2 (pv a-1 l-1)))))
+  (label 17)
+  (parent 7)
+  (unrealized (0 0) (1 3) (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 na-1 nb-1 data)
+    (a b a-0 b-0 a-1 name) (pt pt-0 pt-1 pval)
+    (priv-stor priv-stor-0 locn) (ltxb x rndx) (beta alpha chi expt)
+    (l rndx) (w expt) (y y-0 y-1 l-0 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l ltxb) (y y-0) (alpha (mul l w y)) (chi (mul (rec ltxb) x beta)))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta beta)
+    (eta (mul l w y y-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-0))
+  (deflistener
+    (cat (exp (gen) y-1) (mul l w y y-0 (rec y-1) (rec l-0))))
+  (defstrand resp 4 (na na-1) (nb nb-1) (a a-1) (b a)
+    (priv-stor priv-stor-0) (l l-0) (y y-1) (alpha alpha) (chi chi))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((3 1) (1 3)) ((4 3) (3 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 nb-1 l-0)
+  (uniq-gen x y-0 y-1)
+  (absent (x beta) (x l-0) (y-0 (mul (rec ltxb) x beta)) (y-0 ltxb)
+    (y-0 (mul l w y)) (y-1 alpha) (y-1 chi) (y-1 l-0))
+  (precur (3 0))
+  (gen-st (pv a l-0) (pv b ltxb))
+  (facts (neq a a-1) (neq a b-0) (neq b a-0) (neq a-1 a) (neq b-0 a)
+    (neq a-0 b)
+    (eq (hash (exp (gen) (mul l w y y-0)) (exp (gen) (mul x beta)))
+      (hash (exp (gen) (mul l w y y-0)) (exp (gen) (mul x beta))))
+    (neq l-0 ltxb) (undisclosed l-0) (undisclosed beta)
+    (undisclosed ltxb) (undisclosed (mul l w y)))
+  (leads-to ((2 1) (1 0)) ((2 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 5 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-2 (pv b-1 l-1))) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b ltxb)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul l w y)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul (rec ltxb) x beta))))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul l w y y-0))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l w y y-0 (rec l-0)))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l w y y-0))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-0))))
+    ((recv (cat (exp (gen) y-1) (mul l w y y-0 (rec y-1) (rec l-0))))
+      (send (cat (exp (gen) y-1) (mul l w y y-0 (rec y-1) (rec l-0)))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-0)))
+      (recv
+        (sig (body a-1 (exp (gen) alpha) (pubk "sig" a-1))
+          (privk "sig" a-1))) (recv (cat na-1 a-1 a (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-1 nb-1 a-1 a
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi l-0))))))))
+  (label 18)
+  (parent 10)
+  (unrealized (0 0) (1 3) (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 na-1 nb-1 data)
+    (a b a-0 b-0 a-1 b-1 name) (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (ltxb x rndx)
+    (beta alpha chi expt) (l rndx) (w expt) (y y-0 l-0 y-1 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l ltxb) (y y-0) (alpha (mul l w y)) (chi (mul (rec ltxb) x beta)))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta beta)
+    (eta (mul l w y y-0 (rec l-0))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-0))
+  (deflistener
+    (cat (exp (gen) y-1) (mul l w y y-0 (rec l-0) (rec y-1))))
+  (defstrand resp 4 (na na-1) (nb nb-1) (a a-1) (b b-1)
+    (priv-stor priv-stor-1) (l l-1) (y y-1) (alpha alpha) (chi chi))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b-1)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 3) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 nb-1 l-0 l-1)
+  (uniq-gen x y-0 y-1)
+  (absent (x beta) (x l-0) (y-0 (mul (rec ltxb) x beta)) (y-0 ltxb)
+    (y-0 (mul l w y)) (y-1 alpha) (y-1 chi) (y-1 l-1))
+  (precur (3 0))
+  (gen-st (pv a l-0) (pv b ltxb) (pv b-1 l-1))
+  (facts (neq b-1 a-1) (neq a b-0) (neq b a-0) (neq a-1 b-1) (neq b-0 a)
+    (neq a-0 b)
+    (eq (hash (exp (gen) (mul l w y y-0)) (exp (gen) (mul x beta)))
+      (hash (exp (gen) (mul l w y y-0)) (exp (gen) (mul x beta))))
+    (neq l-0 ltxb) (undisclosed l-0) (undisclosed beta)
+    (undisclosed ltxb) (undisclosed (mul l w y)))
+  (leads-to ((2 1) (1 0)) ((5 1) (4 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-2 (pv b-1 l-1))) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b ltxb)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul l w y)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul (rec ltxb) x beta))))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul l w y y-0))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul l w y y-0 (rec l-0)))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l w y y-0))
+              (exp (gen) (mul x beta)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-0))))
+    ((recv (cat (exp (gen) y-1) (mul l w y y-0 (rec l-0) (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul l w y y-0 (rec l-0) (rec y-1)))))
+    ((load priv-stor-1 (cat pt-2 (pv b-1 l-1)))
+      (recv
+        (sig (body a-1 (exp (gen) alpha) (pubk "sig" a-1))
+          (privk "sig" a-1))) (recv (cat na-1 a-1 b-1 (exp (gen) chi)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-1 nb-1 a-1 b-1
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi l-1)))))))
+    ((load priv-stor-1 (cat pt-3 ignore-0))
+      (stor priv-stor-1 (cat pt-2 (pv b-1 l-1)))))
+  (label 19)
+  (parent 10)
+  (unrealized (0 0) (1 3) (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb data) (b a name) (pt pt-0 pt-1 pval)
+    (priv-stor priv-stor-0 locn) (l rndx) (alpha chi expt)
+    (l-0 y x l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha alpha) (chi (mul chi l-0 x (rec l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (x x) (beta (mul chi l-0)) (eta (mul (rec l) alpha y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (cat (exp (gen) y) (mul (rec l) alpha)))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l)
+  (uniq-gen y x)
+  (absent (y alpha) (y (mul chi l-0 x (rec l-1))) (y l-1) (x l)
+    (x (mul chi l-0)))
+  (precur (3 0))
+  (gen-st (pv b l-1) (pv a l))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0 x)))
+      (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0 x))))
+    (neq l l-1) (undisclosed l) (undisclosed (mul chi l-0))
+    (undisclosed l-1) (undisclosed alpha))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (displaced 4 0 resp 4)
+    (enc na-0 nb-0 a-0 b-0
+      (hash (exp (gen) (mul y-0 alpha)) (exp (gen) (mul l-2 chi))))
+    (1 3))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul chi l-0 x (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b (exp (gen) (mul chi l-0)) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) alpha y))
+          (enc na nb a b
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (cat (exp (gen) y) (mul (rec l) alpha)))
+      (send (cat (exp (gen) y) (mul (rec l) alpha)))))
+  (label 20)
+  (parent 11)
+  (unrealized (0 0) (0 1) (1 1) (1 3) (3 0))
+  (comment "5 in cohort - 5 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 priv-stor-1 locn)
+    (l l-0 y rndx) (alpha expt) (l-1 rndx) (chi expt)
+    (y-0 y-1 x l-2 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l) (y y-0) (alpha (mul y alpha)) (chi (mul (rec l) l-1 chi x)))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-0) (x x) (beta (mul l-1 chi))
+    (eta (mul (rec l-0) y alpha y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-0))
+  (deflistener (cat (exp (gen) y-0) (mul (rec l-0) y alpha)))
+  (defstrand resp 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-1) (l l-2) (y y-1)
+    (alpha (mul y alpha y-0 (rec y-1))) (chi (mul l-1 chi x (rec l-2))))
+  (precedes ((0 3) (3 0)) ((0 3) (4 1)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 3) (1 3)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 nb-0 l-0)
+  (uniq-gen y-0 y-1 x)
+  (absent (y-0 (mul (rec l) l-1 chi x)) (y-0 l) (y-0 (mul y alpha))
+    (y-1 (mul y alpha y-0 (rec y-1))) (y-1 (mul l-1 chi x (rec l-2)))
+    (y-1 l-2) (x l-0) (x (mul l-1 chi)))
+  (precur (3 0))
+  (gen-st (pv a l-0) (pv b l) (pv b-0 l-2))
+  (facts (neq b a-0) (neq a b-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul y alpha y-0)) (exp (gen) (mul l-1 chi x)))
+      (hash (exp (gen) (mul y alpha y-0)) (exp (gen) (mul l-1 chi x))))
+    (neq l-0 l) (undisclosed l-0) (undisclosed (mul l-1 chi))
+    (undisclosed l) (undisclosed (mul y alpha)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand resp 4)
+    (enc na-0 nb-0 a b-0
+      (hash (exp (gen) (mul y alpha y-0)) (exp (gen) (mul l-1 chi x))))
+    (1 3))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul y alpha)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul (rec l) l-1 chi x))))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul y alpha y-0))
+              (exp (gen) (mul l-1 chi x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul l-1 chi)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-0) y alpha y-0))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul y alpha y-0))
+              (exp (gen) (mul l-1 chi x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-0))))
+    ((recv (cat (exp (gen) y-0) (mul (rec l-0) y alpha)))
+      (send (cat (exp (gen) y-0) (mul (rec l-0) y alpha))))
+    ((load priv-stor-1 (cat pt-2 (pv b-0 l-2)))
+      (recv
+        (sig
+          (body a (exp (gen) (mul y alpha y-0 (rec y-1)))
+            (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na-0 a b-0 (exp (gen) (mul l-1 chi x (rec l-2)))))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul y alpha y-0))
+              (exp (gen) (mul l-1 chi x))))))))
+  (label 21)
+  (parent 11)
+  (unrealized (0 0) (1 3) (3 0) (4 0) (4 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (l rndx)
+    (w chi expt) (l-0 y x l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha (mul l w)) (chi (mul chi l-0 x (rec l-1))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l) (x x) (beta (mul chi l-0))
+    (eta (mul w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener
+    (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))
+  (precedes ((0 3) (3 0)) ((0 3) (4 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l)
+  (uniq-gen y x)
+  (absent (y (mul l w)) (y (mul chi l-0 x (rec l-1))) (y l-1) (x l)
+    (x (mul chi l-0)))
+  (precur (3 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x)))
+      (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))
+    (neq l l-1) (undisclosed l) (undisclosed (mul chi l-0))
+    (undisclosed l-1) (undisclosed (mul l w)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))
+    (enc na-0 nb-0 a b-0
+      (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x)))) (1 3))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul l w)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l-0 x (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul l w y))
+              (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l-0)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l w y))
+              (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))
+      (send
+        (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))))
+  (label 22)
+  (parent 11)
+  (unrealized (0 0) (0 1) (4 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (l y x l-0 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 3) (1 3)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (0 0))
+    ((3 2) (1 1)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y l) (y x) (y l-0) (x l) (x l-0))
+  (gen-st (pv b l-0) (pv a l))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul l y)) (exp (gen) (mul x l-0)))
+      (hash (exp (gen) (mul l y)) (exp (gen) (mul x l-0)))) (neq l l-0)
+    (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((3 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 4 3 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))) (0 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))))
+  (label 23)
+  (parent 14)
+  (unrealized (0 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (l y x l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha l) (chi (mul x l-0 (rec l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b) (priv-stor priv-stor)
+    (l l-1))
+  (precedes ((0 3) (1 3)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 2) (1 1))
+    ((4 1) (0 0)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y l) (y (mul x l-0 (rec l-1))) (y l-1) (x l) (x l-0))
+  (gen-st (pv b l-1) (pv a l))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul l y)) (exp (gen) (mul x l-0)))
+      (hash (exp (gen) (mul l y)) (exp (gen) (mul x l-0)))) (neq l l-1)
+    (undisclosed l) (undisclosed l-0) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((4 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor (cat pt (pv b l-1))) (0 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((load priv-stor-1 (cat pt-2 ignore-0))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-4 ignore-1))
+      (stor priv-stor (cat pt (pv b l-1)))))
+  (label 24)
+  (parent 14)
+  (unrealized (0 1) (0 2))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (l rndx) (chi expt)
+    (l-0 y x l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha l) (chi (mul chi l-0 x (rec l-1))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l) (x x) (beta (mul chi l-0)) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+  (deflistener (cat (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+  (deflistener (cat (exp (gen) l) y))
+  (precedes ((0 3) (5 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l)
+  (uniq-gen y x)
+  (absent (y l) (y (mul chi l-0 x (rec l-1))) (y l-1) (x l)
+    (x (mul chi l-0)))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))
+      (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+    (neq l l-1) (undisclosed l) (undisclosed (mul chi l-0))
+    (undisclosed l-1))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) l) y))
+    (exp (gen) (mul l y)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) l) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l-0 x (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l-0)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+      (send (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))))
+    ((recv (cat (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+      (send (cat (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))))
+    ((recv (cat (exp (gen) l) y)) (send (cat (exp (gen) l) y))))
+  (label 25)
+  (parent 15)
+  (unrealized (0 0) (0 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (l rndx) (chi expt)
+    (l-0 y x l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha l) (chi (mul chi l-0 x (rec l-1))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l) (x x) (beta (mul chi l-0)) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+  (deflistener (cat (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+  (deflistener (cat (exp (gen) y) l))
+  (precedes ((0 3) (5 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l)
+  (uniq-gen y x)
+  (absent (y l) (y (mul chi l-0 x (rec l-1))) (y l-1) (x l)
+    (x (mul chi l-0)))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))
+      (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+    (neq l l-1) (undisclosed l) (undisclosed (mul chi l-0))
+    (undisclosed l-1))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) y) l))
+    (exp (gen) (mul l y)) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) l) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l-0 x (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l-0)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+      (send (hash (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))))
+    ((recv (cat (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x))))
+      (send (cat (exp (gen) (mul l y)) (exp (gen) (mul chi l-0 x)))))
+    ((recv (cat (exp (gen) y) l)) (send (cat (exp (gen) y) l))))
+  (label 26)
+  (parent 15)
+  (unrealized (0 0) (0 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb data) (b a name) (pt pt-0 pt-1 pval)
+    (priv-stor priv-stor-0 locn) (chi expt) (l y x l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (mul l-1 l-1)) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-1) (x x) (beta (mul chi l)) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) l-1))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l-1)
+  (uniq-gen y x)
+  (absent (y (mul chi l x (rec l-0))) (y l-0) (y (mul l-1 l-1))
+    (x (mul chi l)) (x l-1))
+  (precur (3 0))
+  (gen-st (pv b l-0) (pv a l-1))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed (mul l-1 l-1)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 4 2 ltx-gen 2) l-2 (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l-1 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1 l-1))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) (mul chi l)) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1 l-1))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1))))
+  (label 27)
+  (parent 20)
+  (unrealized (0 0) (0 1) (1 1) (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb data) (b a name) (pt pt-0 pt-1 pval)
+    (priv-stor priv-stor-0 locn) (chi expt) (l y x l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l-1) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-1) (x x) (beta (mul chi l)) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) (one)))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l-1)
+  (uniq-gen y x)
+  (absent (y (mul chi l x (rec l-0))) (y l-0) (y l-1) (x (mul chi l))
+    (x l-1))
+  (precur (3 0))
+  (gen-st (pv b l-0) (pv a l-1))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (contracted (l-2 l-1) (alpha l-1)) (one) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) (mul chi l)) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one)))))
+  (label 28)
+  (parent 20)
+  (unrealized (0 0) (0 1) (1 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b a self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (chi expt)
+    (l y x l-0 l-1 l-2 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (mul l-1 l-2)) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-1) (x x) (beta (mul chi l)) (eta (mul y l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) l-2))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-1) (l l-2))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 1) (3 0)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l-1 l-2)
+  (uniq-gen y x)
+  (absent (y (mul chi l x (rec l-0))) (y l-0) (y (mul l-1 l-2))
+    (x (mul chi l)) (x l-1))
+  (precur (3 0))
+  (gen-st (pv b l-0) (pv a l-1))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed (mul l-1 l-2)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 2) l-2 (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l-1 l-2)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1 l-2))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) (mul chi l)) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1 l-2))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) l-2)) (send (cat (exp (gen) y) l-2)))
+    ((load priv-stor-1 (cat pt-2 ignore-0))
+      (stor priv-stor-1 (cat pt-3 (pv self l-2)))))
+  (label 29)
+  (parent 20)
+  (unrealized (0 0) (0 1) (1 1) (3 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb data) (b a name) (pt pt-0 pt-1 pval)
+    (priv-stor priv-stor-0 locn) (alpha chi expt) (l y x l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (mul alpha l-1)) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-1) (x x) (beta (mul chi l)) (eta (mul alpha y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) alpha))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l-1)
+  (uniq-gen y x)
+  (absent (y (mul alpha l-1)) (y (mul chi l x (rec l-0))) (y l-0)
+    (x (mul chi l)) (x l-1) (l-1 alpha))
+  (precur (3 0))
+  (gen-st (pv b l-0) (pv a l-1))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul alpha y l-1)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul alpha y l-1)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed (mul alpha l-1)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-1 alpha) alpha (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul alpha l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul alpha y l-1))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) (mul chi l)) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul alpha y))
+          (enc na nb a b
+            (hash (exp (gen) (mul alpha y l-1))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) alpha)) (send (cat (exp (gen) y) alpha))))
+  (label 30)
+  (parent 20)
+  (unrealized (0 0) (0 1) (1 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb data) (b a name) (pt pt-0 pt-1 pval)
+    (priv-stor priv-stor-0 locn) (l rndx) (alpha chi expt)
+    (l-0 y x l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha alpha) (chi (mul chi l-0 x (rec l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (x x) (beta (mul chi l-0)) (eta (mul (rec l) alpha y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (cat (exp (gen) y) (mul (rec l) alpha)))
+  (deflistener l)
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((3 1) (1 3)) ((4 1) (3 0)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l)
+  (uniq-gen y x)
+  (absent (y alpha) (y (mul chi l-0 x (rec l-1))) (y l-1) (x l)
+    (x (mul chi l-0)))
+  (precur (3 0))
+  (gen-st (pv b l-1) (pv a l))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0 x)))
+      (hash (exp (gen) (mul alpha y)) (exp (gen) (mul chi l-0 x))))
+    (neq l l-1) (undisclosed l) (undisclosed (mul chi l-0))
+    (undisclosed l-1) (undisclosed alpha))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener l) (mul (rec l) alpha) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) alpha) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul chi l-0 x (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b (exp (gen) (mul chi l-0)) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) alpha y))
+          (enc na nb a b
+            (hash (exp (gen) (mul alpha y))
+              (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (cat (exp (gen) y) (mul (rec l) alpha)))
+      (send (cat (exp (gen) y) (mul (rec l) alpha))))
+    ((recv l) (send l)))
+  (label 31)
+  (parent 20)
+  (unrealized (0 0) (0 1) (1 1) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (l rndx)
+    (w chi expt) (l-0 y x l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha (mul l w)) (chi (mul chi l-0 x (rec l-1))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l) (x x) (beta (mul chi l-0))
+    (eta (mul w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener
+    (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))
+  (deflistener
+    (cat (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))
+  (precedes ((0 3) (3 0)) ((0 3) (5 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l)
+  (uniq-gen y x)
+  (absent (y (mul l w)) (y (mul chi l-0 x (rec l-1))) (y l-1) (x l)
+    (x (mul chi l-0)))
+  (precur (3 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x)))
+      (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))
+    (neq l l-1) (undisclosed l) (undisclosed (mul chi l-0))
+    (undisclosed l-1) (undisclosed (mul l w)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation encryption-test
+    (added-listener
+      (cat (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))
+    (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))) (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul l w)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l-0 x (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul l w y))
+              (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l-0)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l w y))
+              (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))
+      (send (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x)))))
+    ((recv (cat (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))
+      (send (cat (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))))
+  (label 32)
+  (parent 22)
+  (unrealized (0 0) (0 1) (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 3) (1 3)) ((1 2) (0 2)) ((2 1) (0 0)) ((2 2) (1 1))
+    ((3 1) (1 0)) ((3 2) (0 1)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (gen-st (pv b l) (pv a l-0))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))
+      (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))) (neq l-0 l)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (0 0)) ((3 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (displaced 2 4 ltx-gen 3)
+    (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)) (0 1))
+  (strand-map 0 1 3 2)
+  (traces
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-0 (cat pt-2 (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))))
+  (label 33)
+  (parent 23)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps
+    ((0 1)
+      ((ltxa l-0) (ltxb l) (x x) (y y) (eta y) (chi x) (beta l)
+        (alpha l-0) (a a) (b b) (a-0 a) (b-0 b) (na na) (nb nb)
+        (priv-stor priv-stor) (na-0 na) (nb-0 nb)
+        (priv-stor-0 priv-stor-0))))
+  (origs (l-0 (3 1)) (pt-2 (3 1)) (l (2 1)) (pt-0 (2 1)) (nb (0 3))
+    (na (1 2)))
+  (ugens (y (0 3)) (x (1 2))))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l-1) (chi (mul x l (rec l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor-0)
+    (l l))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 3) (1 3)) ((1 2) (0 2)) ((2 2) (1 1)) ((3 1) (0 0))
+    ((4 1) (1 0)) ((4 2) (0 1)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y l-0) (y l-1) (x l) (x l-1))
+  (gen-st (pv b l-0) (pv a l-1))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))
+      (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed l) (undisclosed l-0))
+  (leads-to ((3 1) (0 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (displaced 2 5 ltx-gen 3)
+    (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)) (0 1))
+  (strand-map 0 1 4 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-1 (cat pt-4 (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-0 (cat pt-0 ignore))
+      (stor priv-stor-0 (cat pt-1 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-2 ignore-0))
+      (stor priv-stor (cat pt (pv b l-0))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv a l-1)))
+      (send
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))))
+  (label 34)
+  (parent 24)
+  (unrealized (0 2))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi (mul x (rec l) l-1)))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (x x) (beta l-1) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-0))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 2) (1 1)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-1)) (y l) (y l-0) (x l-0) (x l-1))
+  (precur (3 0))
+  (gen-st (pv b l) (pv a l-0))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l-1)))
+      (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l-1))))
+    (neq l-0 l) (undisclosed l-0) (undisclosed l-1) (undisclosed l))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand ltx-gen 3)
+    (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)) (1 1))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l-1)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l-1)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-0))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-1 (cat pt-2 ignore-0))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))))
+  (label 35)
+  (parent 28)
+  (unrealized (0 0) (0 1) (0 2))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b a self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (chi expt)
+    (l y x l-0 l-1 l-2 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (mul l-1 l-2)) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-1) (x x) (beta (mul chi l)) (eta (mul y l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) l-2))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-1) (l l-2))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-2))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 1) (5 0)) ((5 2) (3 0)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l-1 l-2)
+  (uniq-gen y x)
+  (absent (y (mul chi l x (rec l-0))) (y l-0) (y (mul l-1 l-2))
+    (x (mul chi l)) (x l-1))
+  (precur (3 0))
+  (gen-st (pv b l-0) (pv a l-1) (pv self l-2))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed (mul l-1 l-2)))
+  (leads-to ((2 1) (1 0)) ((4 1) (5 0)))
+  (rule fact-resp-neq0 gen-st-ltx-disclose-0 trRl_ltx-disclose-at-0
+    trRl_ltx-disclose-at-1 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-disclose 3) l-2 (3 0)
+    (ch-msg priv-stor-1 (cat pt-3 (pv self l-2))))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul l-1 l-2)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1 l-2))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b (exp (gen) (mul chi l)) (pubk "sig" b))
+          (privk "sig" b))) (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-2))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1 l-2))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) l-2)) (send (cat (exp (gen) y) l-2)))
+    ((load priv-stor-1 (cat pt-2 ignore-0))
+      (stor priv-stor-1 (cat pt-3 (pv self l-2))))
+    ((load priv-stor-1 (cat pt-3 (pv self l-2)))
+      (stor priv-stor-1 (cat pt-4 "nil")) (send l-2)))
+  (label 36)
+  (parent 29)
+  (unrealized (0 0) (0 1) (1 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (alpha expt)
+    (y x l l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha (mul alpha l-0)) (chi (mul x (rec l) l-1)))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (x x) (beta l-1) (eta (mul alpha y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-0))
+  (deflistener (cat (exp (gen) y) alpha))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 2) (1 1)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul alpha l-0)) (y (mul x (rec l) l-1)) (y l) (x l-0)
+    (x l-1) (l-0 alpha))
+  (precur (3 0))
+  (gen-st (pv b l) (pv a l-0))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul alpha y l-0)) (exp (gen) (mul x l-1)))
+      (hash (exp (gen) (mul alpha y l-0)) (exp (gen) (mul x l-1))))
+    (neq l-0 l) (undisclosed l-0) (undisclosed l-1) (undisclosed l)
+    (undisclosed (mul alpha l-0)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand ltx-gen 3)
+    (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)) (1 1))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul alpha l-0)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-1))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul alpha y l-0))
+              (exp (gen) (mul x l-1)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul alpha y))
+          (enc na nb a b
+            (hash (exp (gen) (mul alpha y l-0))
+              (exp (gen) (mul x l-1)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-0))))
+    ((recv (cat (exp (gen) y) alpha)) (send (cat (exp (gen) y) alpha)))
+    ((load priv-stor-1 (cat pt-2 ignore-0))
+      (stor priv-stor-1 (cat pt-3 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))))
+  (label 37)
+  (parent 30)
+  (unrealized (0 0) (0 1) (0 2))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (l rndx) (chi expt)
+    (l-0 y x l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha (one)) (chi (mul chi l-0 x (rec l-1))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l) (x x) (beta (mul chi l-0))
+    (eta (mul (rec l) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (cat (exp (gen) y) (rec l)))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul chi l-0 x))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul chi l-0 x))))
+  (precedes ((0 3) (3 0)) ((0 3) (5 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l)
+  (uniq-gen y x)
+  (absent (y (one)) (y (mul chi l-0 x (rec l-1))) (y l-1) (x l)
+    (x (mul chi l-0)))
+  (precur (3 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) y) (exp (gen) (mul chi l-0 x)))
+      (hash (exp (gen) y) (exp (gen) (mul chi l-0 x)))) (neq l l-1)
+    (undisclosed l) (undisclosed (mul chi l-0)) (undisclosed l-1)
+    (undisclosed (one)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 6 0 resp 4) (exp (gen) y-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv (sig (body a-0 (gen) (pubk "sig" a-0)) (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l-0 x (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) y) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l-0)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) y) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (cat (exp (gen) y) (rec l)))
+      (send (cat (exp (gen) y) (rec l))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul chi l-0 x))))
+      (send (hash (exp (gen) y) (exp (gen) (mul chi l-0 x)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul chi l-0 x))))
+      (send (cat (exp (gen) y) (exp (gen) (mul chi l-0 x))))))
+  (label 38)
+  (parent 32)
+  (unrealized (0 0) (1 3) (3 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (l rndx)
+    (w chi expt) (l-0 y x l-1 rndx) (w-0 expt))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha (mul l w)) (chi (mul chi l-0 x (rec l-1))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l) (x x) (beta (mul chi l-0))
+    (eta (mul w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener
+    (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))
+  (deflistener
+    (cat (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))
+  (deflistener (cat (exp (gen) (mul l w y (rec w-0))) w-0))
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l)
+  (uniq-gen y x)
+  (absent (y (mul l w)) (y (mul chi l-0 x (rec l-1))) (y l-1) (x l)
+    (x (mul chi l-0)))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x)))
+      (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))
+    (neq l l-1) (undisclosed l) (undisclosed (mul chi l-0))
+    (undisclosed l-1) (undisclosed (mul l w)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l w y (rec w-0))) w-0))
+    (exp (gen) (mul l w y)) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul l w)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l-0 x (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul l w y))
+              (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l-0)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul l w y))
+              (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))
+      (send (hash (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x)))))
+    ((recv (cat (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x))))
+      (send (cat (exp (gen) (mul l w y)) (exp (gen) (mul chi l-0 x)))))
+    ((recv (cat (exp (gen) (mul l w y (rec w-0))) w-0))
+      (send (cat (exp (gen) (mul l w y (rec w-0))) w-0))))
+  (label 39)
+  (parent 32)
+  (unrealized (0 0) (0 1) (6 0))
+  (comment "7 in cohort - 7 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l-1) (chi (mul x l (rec l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor-0)
+    (l l))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul x l)) l-0))
+  (precedes ((0 3) (1 3)) ((1 2) (5 0)) ((2 2) (1 1)) ((3 1) (0 0))
+    ((3 1) (5 0)) ((4 1) (1 0)) ((4 2) (0 1)) ((5 1) (0 2)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y l-0) (y l-1) (x l) (x l-1))
+  (gen-st (pv b l-0) (pv a l-1))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))
+      (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed l) (undisclosed l-0))
+  (leads-to ((3 1) (0 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) (mul x l)) l-0))
+    (exp (gen) (mul x l (rec l-0))) (0 2))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-1 (cat pt-4 (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-0 (cat pt-0 ignore))
+      (stor priv-stor-0 (cat pt-1 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-2 ignore-0))
+      (stor priv-stor (cat pt (pv b l-0))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv a l-1)))
+      (send
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a))))
+    ((recv (cat (exp (gen) (mul x l)) l-0))
+      (send (cat (exp (gen) (mul x l)) l-0))))
+  (label 40)
+  (parent 34)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l-1) (chi (mul x l (rec l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor-0)
+    (l l))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul x (rec l-0))) l))
+  (precedes ((0 3) (1 3)) ((1 2) (5 0)) ((2 2) (1 1)) ((3 1) (0 0))
+    ((4 1) (1 0)) ((4 2) (0 1)) ((5 1) (0 2)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y l-0) (y l-1) (x l) (x l-1))
+  (gen-st (pv b l-0) (pv a l-1))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))
+      (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed l) (undisclosed l-0))
+  (leads-to ((3 1) (0 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x (rec l-0))) l))
+    (exp (gen) (mul x l (rec l-0))) (0 2))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-1 (cat pt-4 (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-0 (cat pt-0 ignore))
+      (stor priv-stor-0 (cat pt-1 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-2 ignore-0))
+      (stor priv-stor (cat pt (pv b l-0))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv a l-1)))
+      (send
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a))))
+    ((recv (cat (exp (gen) (mul x (rec l-0))) l))
+      (send (cat (exp (gen) (mul x (rec l-0))) l))))
+  (label 41)
+  (parent 34)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l-1) (chi (mul x l (rec l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor-0)
+    (l l))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l (rec l-0))) x))
+  (precedes ((0 3) (1 3)) ((1 2) (5 0)) ((2 2) (1 1)) ((3 1) (0 0))
+    ((4 1) (1 0)) ((4 2) (0 1)) ((5 1) (0 2)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y l-0) (y l-1) (x l) (x l-1))
+  (gen-st (pv b l-0) (pv a l-1))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))
+      (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed l) (undisclosed l-0))
+  (leads-to ((3 1) (0 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l (rec l-0))) x))
+    (exp (gen) (mul x l (rec l-0))) (0 2))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-1 (cat pt-4 (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-0 (cat pt-0 ignore))
+      (stor priv-stor-0 (cat pt-1 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-2 ignore-0))
+      (stor priv-stor (cat pt (pv b l-0))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv a l-1)))
+      (send
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a))))
+    ((recv (cat (exp (gen) (mul l (rec l-0))) x))
+      (send (cat (exp (gen) (mul l (rec l-0))) x))))
+  (label 42)
+  (parent 34)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha l) (chi x))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 1) (0 0)) ((4 2) (1 1)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (3 0))
+  (gen-st (pv b l-0) (pv a l))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))
+      (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))) (neq l l-0)
+    (undisclosed l) (undisclosed l-0))
+  (leads-to ((2 1) (1 0)) ((4 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 5 4 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))) (0 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))))
+  (label 43)
+  (parent 35)
+  (unrealized (0 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha l) (chi (mul x l-0 (rec l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (x x) (beta l-0) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b) (priv-stor priv-stor)
+    (l l-1))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 2) (1 1)) ((5 1) (0 0)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l-0 (rec l-1))) (y l) (y l-1) (x l) (x l-0))
+  (precur (3 0))
+  (gen-st (pv b l-1) (pv a l))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))
+      (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))) (neq l l-1)
+    (undisclosed l) (undisclosed l-0) (undisclosed l-1))
+  (leads-to ((2 1) (1 0)) ((5 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor (cat pt (pv b l-1))) (0 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv (sig (body a (exp (gen) l) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul x l-0)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-1 (cat pt-2 ignore-0))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-4 ignore-1))
+      (stor priv-stor (cat pt (pv b l-1)))))
+  (label 44)
+  (parent 35)
+  (unrealized (0 1) (0 2))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b a self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 l-1 l-2 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha (mul l-0 l-1)) (chi (mul x (rec l) l-2)))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (x x) (beta l-2) (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-0))
+  (deflistener (cat (exp (gen) y) l-1))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-1))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-2) (l l-2))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 1) (5 0)) ((5 2) (3 0)) ((6 2) (1 1)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l-0 l-1 l-2)
+  (uniq-gen y x)
+  (absent (y (mul x (rec l) l-2)) (y l) (y (mul l-0 l-1)) (x l-0)
+    (x l-2))
+  (precur (3 0))
+  (gen-st (pv b l) (pv a l-0) (pv self l-1))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l-2)))
+      (hash (exp (gen) (mul y l-0 l-1)) (exp (gen) (mul x l-2))))
+    (neq l-0 l) (undisclosed l-0) (undisclosed l-2) (undisclosed l)
+    (undisclosed (mul l-0 l-1)))
+  (leads-to ((2 1) (1 0)) ((4 1) (5 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (added-strand ltx-gen 3)
+    (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b)) (1 1))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a (exp (gen) (mul l-0 l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x (rec l) l-2))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1))
+              (exp (gen) (mul x l-2)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-0)))
+      (recv
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0 l-1))
+              (exp (gen) (mul x l-2)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-0))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((load priv-stor-1 (cat pt-2 ignore-0))
+      (stor priv-stor-1 (cat pt-3 (pv self l-1))))
+    ((load priv-stor-1 (cat pt-3 (pv self l-1)))
+      (stor priv-stor-1 (cat pt-4 "nil")) (send l-1))
+    ((load priv-stor-2 (cat pt-5 ignore-1))
+      (stor priv-stor-2 (cat pt-6 (pv b l-2)))
+      (send
+        (sig (body b (exp (gen) l-2) (pubk "sig" b)) (privk "sig" b)))))
+  (label 45)
+  (parent 36)
+  (unrealized (0 0) (0 1) (0 2))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn) (alpha expt)
+    (y x l l-0 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (y y) (alpha (mul alpha l)) (chi x))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-0) (eta (mul alpha y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (deflistener (cat (exp (gen) y) alpha))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 1) (0 0)) ((4 2) (1 1)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y (mul alpha l)) (y x) (y l-0) (x l) (x l-0) (l alpha))
+  (precur (3 0))
+  (gen-st (pv b l-0) (pv a l))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul alpha y l)) (exp (gen) (mul x l-0)))
+      (hash (exp (gen) (mul alpha y l)) (exp (gen) (mul x l-0))))
+    (neq l l-0) (undisclosed l) (undisclosed l-0)
+    (undisclosed (mul alpha l)))
+  (leads-to ((2 1) (1 0)) ((4 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 5 4 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-3 (pv b l-1))) (0 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor-0 (cat pt-2 (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul alpha l)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul alpha y l))
+              (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul alpha y))
+          (enc na nb a b
+            (hash (exp (gen) (mul alpha y l))
+              (exp (gen) (mul x l-0)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((recv (cat (exp (gen) y) alpha)) (send (cat (exp (gen) y) alpha)))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))))
+  (label 46)
+  (parent 37)
+  (unrealized (0 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (alpha expt)
+    (y x l l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha (mul alpha l)) (chi (mul x l-0 (rec l-1))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (x x) (beta l-0) (eta (mul alpha y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (cat (exp (gen) y) alpha))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self b)
+    (priv-stor priv-stor-1) (l l-0))
+  (defstrand ltx-gen 2 (ignore ignore-1) (self b) (priv-stor priv-stor)
+    (l l-1))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 2) (1 1)) ((5 1) (0 0)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul alpha l)) (y (mul x l-0 (rec l-1))) (y l-1) (x l)
+    (x l-0) (l alpha))
+  (precur (3 0))
+  (gen-st (pv b l-1) (pv a l))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul alpha y l)) (exp (gen) (mul x l-0)))
+      (hash (exp (gen) (mul alpha y l)) (exp (gen) (mul x l-0))))
+    (neq l l-1) (undisclosed l) (undisclosed l-0) (undisclosed l-1)
+    (undisclosed (mul alpha l)))
+  (leads-to ((2 1) (1 0)) ((5 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor (cat pt (pv b l-1))) (0 0))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul alpha l)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-0 (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul alpha y l))
+              (exp (gen) (mul x l-0)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul alpha y))
+          (enc na nb a b
+            (hash (exp (gen) (mul alpha y l))
+              (exp (gen) (mul x l-0)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (cat (exp (gen) y) alpha)) (send (cat (exp (gen) y) alpha)))
+    ((load priv-stor-1 (cat pt-2 ignore-0))
+      (stor priv-stor-1 (cat pt-3 (pv b l-0)))
+      (send
+        (sig (body b (exp (gen) l-0) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-4 ignore-1))
+      (stor priv-stor (cat pt (pv b l-1)))))
+  (label 47)
+  (parent 37)
+  (unrealized (0 1) (0 2))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (l rndx) (chi expt)
+    (l-0 y x l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha (one)) (chi (mul chi l-0 x (rec l-1))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l) (x x) (beta (mul chi l-0))
+    (eta (mul (rec l) y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (cat (exp (gen) y) (rec l)))
+  (deflistener (hash (exp (gen) y) (exp (gen) (mul chi l-0 x))))
+  (deflistener (cat (exp (gen) y) (exp (gen) (mul chi l-0 x))))
+  (deflistener l)
+  (precedes ((0 3) (3 0)) ((0 3) (5 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((2 1) (6 0)) ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0))
+    ((6 1) (3 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l)
+  (uniq-gen y x)
+  (absent (y (one)) (y (mul chi l-0 x (rec l-1))) (y l-1) (x l)
+    (x (mul chi l-0)))
+  (precur (3 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) y) (exp (gen) (mul chi l-0 x)))
+      (hash (exp (gen) y) (exp (gen) (mul chi l-0 x)))) (neq l l-1)
+    (undisclosed l) (undisclosed (mul chi l-0)) (undisclosed l-1)
+    (undisclosed (one)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener l) (rec l) (3 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv (sig (body a-0 (gen) (pubk "sig" a-0)) (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l-0 x (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) y) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l-0)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) y))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) y) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (cat (exp (gen) y) (rec l)))
+      (send (cat (exp (gen) y) (rec l))))
+    ((recv (hash (exp (gen) y) (exp (gen) (mul chi l-0 x))))
+      (send (hash (exp (gen) y) (exp (gen) (mul chi l-0 x)))))
+    ((recv (cat (exp (gen) y) (exp (gen) (mul chi l-0 x))))
+      (send (cat (exp (gen) y) (exp (gen) (mul chi l-0 x)))))
+    ((recv l) (send l)))
+  (label 48)
+  (parent 38)
+  (unrealized (0 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 na-1 data)
+    (a b a-0 b-0 a-1 b-1 name) (pt pt-0 pt-1 pt-2 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (chi expt)
+    (l x l-0 l-1 rndx) (beta expt) (l-2 rndx) (w expt) (x-0 y x-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (mul w x-0)) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-2) (x x) (beta (mul chi l))
+    (eta (mul (rec l-2) w x-0 y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-2))
+  (deflistener (cat (exp (gen) y) (mul (rec l-2) w x-0)))
+  (deflistener
+    (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) x-1) (mul w x-0 y (rec x-1))))
+  (defstrand init 3 (na na-1) (a a-1) (b b-1) (priv-stor priv-stor-1)
+    (l l-1) (x x-1) (beta beta))
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 na-1 l-2)
+  (uniq-gen x y x-1)
+  (absent (x (mul chi l)) (x l-2) (y (mul chi l x (rec l-0))) (y l-0)
+    (y (mul w x-0)) (x-1 l-1) (x-1 beta))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-2) (pv b l-0) (pv a-1 l-1))
+  (facts (neq a-1 b-1) (neq a b-0) (neq b a-0) (neq b-1 a-1) (neq b-0 a)
+    (neq a-0 b)
+    (eq (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x))))
+    (neq l-2 l-0) (undisclosed l-2) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed (mul w x-0)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand init 3) (exp (gen) x-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul w x-0)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul w x-0 y))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-2)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-2) w x-0 y))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul w x-0 y))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-2))))
+    ((recv (cat (exp (gen) y) (mul (rec l-2) w x-0)))
+      (send (cat (exp (gen) y) (mul (rec l-2) w x-0))))
+    ((recv (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x))))
+      (send (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x))))
+      (send (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) x-1) (mul w x-0 y (rec x-1))))
+      (send (cat (exp (gen) x-1) (mul w x-0 y (rec x-1)))))
+    ((load priv-stor-1 (cat pt-2 (pv a-1 l-1)))
+      (recv
+        (sig (body b-1 (exp (gen) beta) (pubk "sig" b-1))
+          (privk "sig" b-1)))
+      (send (cat na-1 a-1 b-1 (exp (gen) x-1)))))
+  (label 49)
+  (parent 39)
+  (unrealized (0 0) (1 3) (3 0) (6 0) (7 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (l rndx) (w expt)
+    (l-0 rndx) (beta expt) (x y x-0 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha (mul w x)) (chi (mul (rec l) beta x-0)))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-0) (x x-0) (beta beta)
+    (eta (mul w (rec l-0) x y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-0))
+  (deflistener (cat (exp (gen) y) (mul w (rec l-0) x)))
+  (deflistener
+    (hash (exp (gen) (mul w x y)) (exp (gen) (mul beta x-0))))
+  (deflistener (cat (exp (gen) (mul w x y)) (exp (gen) (mul beta x-0))))
+  (deflistener (cat (exp (gen) x-0) (mul w x y (rec x-0))))
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l-0)
+  (uniq-gen y x-0)
+  (absent (y (mul (rec l) beta x-0)) (y l) (y (mul w x)) (x-0 l-0)
+    (x-0 beta))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-0) (pv b l))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul w x y)) (exp (gen) (mul beta x-0)))
+      (hash (exp (gen) (mul w x y)) (exp (gen) (mul beta x-0))))
+    (neq l-0 l) (undisclosed l-0) (undisclosed beta) (undisclosed l)
+    (undisclosed (mul w x)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 1 init 3) (exp (gen) x-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul w x)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul (rec l) beta x-0))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul w x y))
+              (exp (gen) (mul beta x-0)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-0)))
+      (recv
+        (sig (body b-0 (exp (gen) beta) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x-0)))
+      (recv
+        (cat (exp (gen) (mul w (rec l-0) x y))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul w x y))
+              (exp (gen) (mul beta x-0)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-0))))
+    ((recv (cat (exp (gen) y) (mul w (rec l-0) x)))
+      (send (cat (exp (gen) y) (mul w (rec l-0) x))))
+    ((recv (hash (exp (gen) (mul w x y)) (exp (gen) (mul beta x-0))))
+      (send (hash (exp (gen) (mul w x y)) (exp (gen) (mul beta x-0)))))
+    ((recv (cat (exp (gen) (mul w x y)) (exp (gen) (mul beta x-0))))
+      (send (cat (exp (gen) (mul w x y)) (exp (gen) (mul beta x-0)))))
+    ((recv (cat (exp (gen) x-0) (mul w x y (rec x-0))))
+      (send (cat (exp (gen) x-0) (mul w x y (rec x-0))))))
+  (label 50)
+  (parent 39)
+  (unrealized (0 0) (1 3) (3 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (chi expt)
+    (l x l-0 l-1 rndx) (w expt) (y rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha w) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta (mul chi l))
+    (eta (mul (rec l-1) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) (mul (rec l-1) w)))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (gen) (mul w y)))
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l-1)
+  (uniq-gen x y)
+  (absent (x (mul chi l)) (x l-1) (y (mul chi l x (rec l-0))) (y l-0)
+    (y w))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed w))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (contracted (l-2 l-1) (w-0 (mul (rec l-1) w)) (y-0 y)
+      (w-1 (mul w y)) (y-1 y) (w (mul w y))) (gen) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) w) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) w y))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) (mul (rec l-1) w)))
+      (send (cat (exp (gen) y) (mul (rec l-1) w))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul chi l x))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (gen) (mul w y))) (send (cat (gen) (mul w y)))))
+  (label 51)
+  (parent 39)
+  (unrealized (0 0) (1 3) (3 0) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 na-1 nb-1 data)
+    (a b a-0 b-0 a-1 b-1 name) (pt pt-0 pt-1 pt-2 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (chi expt)
+    (l x l-0 l-1 rndx) (alpha chi-0 expt) (l-2 rndx) (w expt)
+    (y y-0 y-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-0) (y y-0) (alpha (mul w y)) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-2) (x x) (beta (mul chi l))
+    (eta (mul (rec l-2) w y y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-2))
+  (deflistener (cat (exp (gen) y-0) (mul (rec l-2) w y)))
+  (deflistener
+    (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x))))
+  (deflistener
+    (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) y-1) (mul w y y-0 (rec y-1))))
+  (defstrand resp 4 (na na-1) (nb nb-1) (a a-1) (b b-1)
+    (priv-stor priv-stor-1) (l l-1) (y y-1) (alpha alpha) (chi chi-0))
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 3) (6 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 nb-1 l-2)
+  (uniq-gen x y-0 y-1)
+  (absent (x (mul chi l)) (x l-2) (y-0 (mul chi l x (rec l-0)))
+    (y-0 l-0) (y-0 (mul w y)) (y-1 l-1) (y-1 alpha) (y-1 chi-0))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-2) (pv b l-0) (pv b-1 l-1))
+  (facts (neq b-1 a-1) (neq a b-0) (neq b a-0) (neq a-1 b-1) (neq b-0 a)
+    (neq a-0 b)
+    (eq (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x))))
+    (neq l-2 l-0) (undisclosed l-2) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed (mul w y)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 gen-st-ltx-disclose-0
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand resp 4) (exp (gen) y-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul w y)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul w y y-0))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-2)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-2) w y y-0))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul w y y-0))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-2))))
+    ((recv (cat (exp (gen) y-0) (mul (rec l-2) w y)))
+      (send (cat (exp (gen) y-0) (mul (rec l-2) w y))))
+    ((recv (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x))))
+      (send (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x))))
+      (send (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) y-1) (mul w y y-0 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul w y y-0 (rec y-1)))))
+    ((load priv-stor-1 (cat pt-2 (pv b-1 l-1)))
+      (recv
+        (sig (body a-1 (exp (gen) alpha) (pubk "sig" a-1))
+          (privk "sig" a-1)))
+      (recv (cat na-1 a-1 b-1 (exp (gen) chi-0)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-1 nb-1 a-1 b-1
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul l-1 chi-0))))))))
+  (label 52)
+  (parent 39)
+  (unrealized (0 0) (1 3) (3 0) (6 0) (7 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (l rndx)
+    (w chi expt) (l-0 y x l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha w) (chi (mul chi l-0 x (rec l-1))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l) (x x) (beta (mul chi l-0))
+    (eta (mul (rec l) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (cat (exp (gen) y) (mul (rec l) w)))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x))))
+  (deflistener (cat (exp (gen) y) w))
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l)
+  (uniq-gen y x)
+  (absent (y w) (y (mul chi l-0 x (rec l-1))) (y l-1) (x l)
+    (x (mul chi l-0)))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x)))
+      (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x))))
+    (neq l l-1) (undisclosed l) (undisclosed (mul chi l-0))
+    (undisclosed l-1) (undisclosed w))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 0 resp 4) (exp (gen) y-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) w) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l-0 x (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l-0)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w)))
+      (send (cat (exp (gen) y) (mul (rec l) w))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
+  (label 53)
+  (parent 39)
+  (unrealized (0 0) (1 3) (3 0))
+  (comment "5 in cohort - 5 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (b a b-0 self name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (chi expt)
+    (l x l-0 rndx) (w expt) (l-1 y l-2 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (mul w l-1)) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a self) (b b-0)
+    (priv-stor priv-stor-0) (l l-2) (x x) (beta (mul chi l))
+    (eta (mul w l-1 y (rec l-2))))
+  (deflistener (cat (exp (gen) y) (mul w l-1 (rec l-2))))
+  (deflistener
+    (hash (exp (gen) (mul w l-1 y)) (exp (gen) (mul chi l x))))
+  (deflistener
+    (cat (exp (gen) (mul w l-1 y)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) l-2) (mul w l-1 y (rec l-2))))
+  (defstrand ltx-gen 3 (ignore ignore) (self self)
+    (priv-stor priv-stor-0) (l l-2))
+  (precedes ((0 3) (2 0)) ((0 3) (5 0)) ((1 2) (0 2)) ((2 1) (1 3))
+    ((3 1) (1 3)) ((4 1) (3 0)) ((5 1) (4 0)) ((6 1) (1 0))
+    ((6 2) (5 0)))
+  (non-orig (privk "sig" b) (privk "sig" self))
+  (uniq-orig nb na-0 l-2)
+  (uniq-gen x y)
+  (absent (x (mul chi l)) (x l-2) (y (mul chi l x (rec l-0))) (y l-0)
+    (y (mul w l-1)))
+  (precur (2 0) (5 0))
+  (gen-st (pv b l-0) (pv self l-2))
+  (facts (neq self b-0) (neq b a) (neq b-0 self) (neq a b)
+    (eq (hash (exp (gen) (mul w l-1 y)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul w l-1 y)) (exp (gen) (mul chi l x))))
+    (neq l-2 l-0) (undisclosed l-2) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed (mul w l-1)))
+  (leads-to ((6 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 2 7 ltx-gen 3) (exp (gen) l-3) (6 0))
+  (strand-map 0 1 6 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) (mul w l-1)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul w l-1 y))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 (pv self l-2)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 self b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w l-1 y (rec l-2)))
+          (enc na-0 nb-0 self b-0
+            (hash (exp (gen) (mul w l-1 y))
+              (exp (gen) (mul chi l x)))))))
+    ((recv (cat (exp (gen) y) (mul w l-1 (rec l-2))))
+      (send (cat (exp (gen) y) (mul w l-1 (rec l-2)))))
+    ((recv (hash (exp (gen) (mul w l-1 y)) (exp (gen) (mul chi l x))))
+      (send (hash (exp (gen) (mul w l-1 y)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul w l-1 y)) (exp (gen) (mul chi l x))))
+      (send (cat (exp (gen) (mul w l-1 y)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) l-2) (mul w l-1 y (rec l-2))))
+      (send (cat (exp (gen) l-2) (mul w l-1 y (rec l-2)))))
+    ((load priv-stor-0 (cat pt-0 ignore))
+      (stor priv-stor-0 (cat pt-1 (pv self l-2)))
+      (send
+        (sig (body self (exp (gen) l-2) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 54)
+  (parent 39)
+  (unrealized (0 0) (1 3) (2 0) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 self name) (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (chi expt)
+    (l x l-0 l-1 rndx) (w expt) (l-2 y l-3 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (mul w l-2)) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta (mul chi l))
+    (eta (mul (rec l-1) w l-2 y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) (mul (rec l-1) w l-2)))
+  (deflistener
+    (hash (exp (gen) (mul w l-2 y)) (exp (gen) (mul chi l x))))
+  (deflistener
+    (cat (exp (gen) (mul w l-2 y)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) l-3) (mul w l-2 y (rec l-3))))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-1) (l l-3))
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 2) (6 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l-1 l-3)
+  (uniq-gen x y)
+  (absent (x (mul chi l)) (x l-1) (y (mul chi l x (rec l-0))) (y l-0)
+    (y (mul w l-2)))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul w l-2 y)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul w l-2 y)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed (mul w l-2)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 3) (exp (gen) l-3) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul w l-2)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul w l-2 y))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) w l-2 y))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul w l-2 y))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) (mul (rec l-1) w l-2)))
+      (send (cat (exp (gen) y) (mul (rec l-1) w l-2))))
+    ((recv (hash (exp (gen) (mul w l-2 y)) (exp (gen) (mul chi l x))))
+      (send (hash (exp (gen) (mul w l-2 y)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul w l-2 y)) (exp (gen) (mul chi l x))))
+      (send (cat (exp (gen) (mul w l-2 y)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) l-3) (mul w l-2 y (rec l-3))))
+      (send (cat (exp (gen) l-3) (mul w l-2 y (rec l-3)))))
+    ((load priv-stor-1 (cat pt-2 ignore-0))
+      (stor priv-stor-1 (cat pt-3 (pv self l-3)))
+      (send
+        (sig (body self (exp (gen) l-3) (pubk "sig" self))
+          (privk "sig" self)))))
+  (label 55)
+  (parent 39)
+  (unrealized (0 0) (1 3) (3 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (x x) (beta l) (eta y))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 3) (2 0)) ((1 2) (0 2)) ((2 1) (1 3)) ((3 1) (0 0))
+    ((3 2) (1 1)) ((4 1) (1 0)) ((4 2) (0 1)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0))
+  (precur (2 0))
+  (gen-st (pv b l) (pv a l-0))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))
+      (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))) (neq l-0 l)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((3 1) (0 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (displaced 2 5 ltx-gen 3)
+    (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)) (0 1))
+  (strand-map 0 1 4 2 3)
+  (traces
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-0 (cat pt-2 (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))))
+  (label 56)
+  (parent 43)
+  (seen 33)
+  (seen-ops
+    (33 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l-1) (chi (mul x l (rec l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x) (beta l) (eta y))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor-0)
+    (l l))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 3) (2 0)) ((1 2) (0 2)) ((2 1) (1 3)) ((3 2) (1 1))
+    ((4 1) (0 0)) ((5 1) (1 0)) ((5 2) (0 1)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y l-0) (y l-1) (x l) (x l-1))
+  (precur (2 0))
+  (gen-st (pv b l-0) (pv a l-1))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))
+      (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed l) (undisclosed l-0))
+  (leads-to ((4 1) (0 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (displaced 2 6 ltx-gen 3)
+    (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)) (0 1))
+  (strand-map 0 1 5 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-1 (cat pt-4 (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-0 (cat pt-0 ignore))
+      (stor priv-stor-0 (cat pt-1 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-2 ignore-0))
+      (stor priv-stor (cat pt (pv b l-0))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv a l-1)))
+      (send
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))))
+  (label 57)
+  (parent 44)
+  (unrealized (0 2))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b a self name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (y y) (alpha (mul l l-0)) (chi x))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (x x) (beta l-1) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor)
+    (l l))
+  (deflistener (cat (exp (gen) y) l-0))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-0) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-0) (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 1) (5 0)) ((5 2) (3 0)) ((6 1) (0 0)) ((6 2) (1 1)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y x) (y (mul l l-0)) (y l-1) (x l) (x l-1))
+  (precur (3 0))
+  (gen-st (pv b l-1) (pv a l) (pv self l-0))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-1)))
+      (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-1))))
+    (neq l l-1) (undisclosed l) (undisclosed l-1)
+    (undisclosed (mul l l-0)))
+  (leads-to ((2 1) (1 0)) ((4 1) (5 0)) ((6 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 7 6 ltx-gen 2)
+    (ch-msg priv-stor-2 (cat pt-6 (pv b l-2))) (0 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor-1 (cat pt-5 (pv b l-1)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0)) (pubk "sig" a))
+          (privk "sig" a))) (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-1)))))))
+    ((load priv-stor (cat pt (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-1)))))))
+    ((load priv-stor (cat pt-0 ignore))
+      (stor priv-stor (cat pt (pv a l))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv self l-0))))
+    ((load priv-stor-0 (cat pt-2 (pv self l-0)))
+      (stor priv-stor-0 (cat pt-3 "nil")) (send l-0))
+    ((load priv-stor-1 (cat pt-4 ignore-1))
+      (stor priv-stor-1 (cat pt-5 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))))
+  (label 58)
+  (parent 45)
+  (unrealized (0 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 ignore-2 mesg) (na nb data)
+    (b a self name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pval)
+    (priv-stor priv-stor-0 priv-stor-1 priv-stor-2 locn)
+    (y x l l-0 l-1 l-2 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-2) (y y) (alpha (mul l l-0)) (chi (mul x l-1 (rec l-2))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l) (x x) (beta l-1) (eta (mul y l-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (cat (exp (gen) y) l-0))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-1) (l l-0))
+  (defstrand ltx-disclose 3 (self self) (priv-stor priv-stor-1) (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self b)
+    (priv-stor priv-stor-2) (l l-1))
+  (defstrand ltx-gen 2 (ignore ignore-2) (self b) (priv-stor priv-stor)
+    (l l-2))
+  (precedes ((0 3) (3 0)) ((1 2) (0 2)) ((2 1) (1 0)) ((3 1) (1 3))
+    ((4 1) (5 0)) ((5 2) (3 0)) ((6 2) (1 1)) ((7 1) (0 0)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1 l-2)
+  (uniq-gen y x)
+  (absent (y (mul x l-1 (rec l-2))) (y (mul l l-0)) (y l-2) (x l)
+    (x l-1))
+  (precur (3 0))
+  (gen-st (pv b l-2) (pv a l) (pv self l-0))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-1)))
+      (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-1))))
+    (neq l l-2) (undisclosed l) (undisclosed l-1) (undisclosed l-2)
+    (undisclosed (mul l l-0)))
+  (leads-to ((2 1) (1 0)) ((4 1) (5 0)) ((7 1) (0 0)))
+  (rule fact-resp-neq0 trRl_ltx-disclose-at-0 trRl_ltx-disclose-at-1
+    trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor (cat pt (pv b l-2))) (0 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l-2)))
+      (recv
+        (sig (body a (exp (gen) (mul l l-0)) (pubk "sig" a))
+          (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l-1 (rec l-2)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-1)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-0))
+          (enc na nb a b
+            (hash (exp (gen) (mul y l l-0)) (exp (gen) (mul x l-1)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (cat (exp (gen) y) l-0)) (send (cat (exp (gen) y) l-0)))
+    ((load priv-stor-1 (cat pt-2 ignore-0))
+      (stor priv-stor-1 (cat pt-3 (pv self l-0))))
+    ((load priv-stor-1 (cat pt-3 (pv self l-0)))
+      (stor priv-stor-1 (cat pt-4 "nil")) (send l-0))
+    ((load priv-stor-2 (cat pt-5 ignore-1))
+      (stor priv-stor-2 (cat pt-6 (pv b l-1)))
+      (send
+        (sig (body b (exp (gen) l-1) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-7 ignore-2))
+      (stor priv-stor (cat pt (pv b l-2)))))
+  (label 59)
+  (parent 45)
+  (unrealized (0 1) (0 2))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (x x) (beta l) (eta y))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 3) (2 0)) ((1 2) (0 2)) ((2 1) (1 3)) ((3 1) (0 0))
+    ((3 2) (1 1)) ((4 1) (1 0)) ((4 2) (0 1)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0) (l-0 (one)))
+  (precur (2 0))
+  (gen-st (pv b l) (pv a l-0))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))
+      (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))) (neq l-0 l)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((3 1) (0 0)) ((4 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (displaced 2 5 ltx-gen 3)
+    (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)) (0 1))
+  (strand-map 0 1 4 2 3)
+  (traces
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-0 (cat pt-2 (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))))
+  (label 60)
+  (parent 46)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l-1) (chi (mul x l (rec l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x) (beta l) (eta y))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor-0)
+    (l l))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (precedes ((0 3) (2 0)) ((1 2) (0 2)) ((2 1) (1 3)) ((3 2) (1 1))
+    ((4 1) (0 0)) ((5 1) (1 0)) ((5 2) (0 1)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y l-0) (y l-1) (x l) (x l-1)
+    (l-1 (one)))
+  (precur (2 0))
+  (gen-st (pv b l-0) (pv a l-1))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))
+      (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed l) (undisclosed l-0))
+  (leads-to ((4 1) (0 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation encryption-test (displaced 2 6 ltx-gen 3)
+    (sig (body a (exp (gen) l-2) (pubk "sig" a)) (privk "sig" a)) (0 1))
+  (strand-map 0 1 5 2 3 4)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-1 (cat pt-4 (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-0 (cat pt-0 ignore))
+      (stor priv-stor-0 (cat pt-1 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-2 ignore-0))
+      (stor priv-stor (cat pt (pv b l-0))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv a l-1)))
+      (send
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))))
+  (label 61)
+  (parent 47)
+  (unrealized (0 2))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 na-1 data) (a b a-0 b-0 b-1 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (chi expt)
+    (l x l-0 rndx) (beta w expt) (x-0 y x-1 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (mul w x-0)) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta (mul chi l))
+    (eta (mul w x-0 y (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) (mul w x-0 (rec l-1))))
+  (deflistener
+    (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) x-1) (mul w x-0 y (rec x-1))))
+  (defstrand init 3 (na na-1) (a a) (b b-1) (priv-stor priv-stor-0)
+    (l l-1) (x x-1) (beta beta))
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((2 1) (7 0)) ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0))
+    ((6 1) (5 0)) ((7 2) (6 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 na-1 l-1)
+  (uniq-gen x y x-1)
+  (absent (x (mul chi l)) (x l-1) (y (mul chi l x (rec l-0))) (y l-0)
+    (y (mul w x-0)) (x-1 beta) (x-1 l-1))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq a b-1) (neq a b-0) (neq b a-0) (neq b-1 a) (neq b-0 a)
+    (neq a-0 b)
+    (eq (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed (mul w x-0)))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-2 (pv a-1 l-2))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul w x-0)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul w x-0 y))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w x-0 y (rec l-1)))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul w x-0 y))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) (mul w x-0 (rec l-1))))
+      (send (cat (exp (gen) y) (mul w x-0 (rec l-1)))))
+    ((recv (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x))))
+      (send (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x))))
+      (send (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) x-1) (mul w x-0 y (rec x-1))))
+      (send (cat (exp (gen) x-1) (mul w x-0 y (rec x-1)))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-1 (exp (gen) beta) (pubk "sig" b-1))
+          (privk "sig" b-1))) (send (cat na-1 a b-1 (exp (gen) x-1)))))
+  (label 62)
+  (parent 49)
+  (unrealized (0 0) (1 3) (3 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 na-1 data)
+    (a b a-0 b-0 a-1 b-1 name) (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (chi expt) (l x l-0 rndx)
+    (beta expt) (l-1 rndx) (w expt) (x-0 y x-1 l-2 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (mul w x-0)) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta (mul chi l))
+    (eta (mul (rec l-1) w x-0 y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) (mul (rec l-1) w x-0)))
+  (deflistener
+    (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x))))
+  (deflistener
+    (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) x-1) (mul w x-0 y (rec x-1))))
+  (defstrand init 3 (na na-1) (a a-1) (b b-1) (priv-stor priv-stor-1)
+    (l l-2) (x x-1) (beta beta))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self a-1)
+    (priv-stor priv-stor-1) (l l-2))
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 2) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 na-1 l-1 l-2)
+  (uniq-gen x y x-1)
+  (absent (x (mul chi l)) (x l-1) (y (mul chi l x (rec l-0))) (y l-0)
+    (y (mul w x-0)) (x-1 beta) (x-1 l-2))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0) (pv a-1 l-2))
+  (facts (neq a-1 b-1) (neq a b-0) (neq b a-0) (neq b-1 a-1) (neq b-0 a)
+    (neq a-0 b)
+    (eq (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed (mul w x-0)))
+  (leads-to ((2 1) (1 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-2 (pv a-1 l-2))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul w x-0)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul w x-0 y))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) w x-0 y))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul w x-0 y))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) (mul (rec l-1) w x-0)))
+      (send (cat (exp (gen) y) (mul (rec l-1) w x-0))))
+    ((recv (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x))))
+      (send (hash (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x))))
+      (send (cat (exp (gen) (mul w x-0 y)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) x-1) (mul w x-0 y (rec x-1))))
+      (send (cat (exp (gen) x-1) (mul w x-0 y (rec x-1)))))
+    ((load priv-stor-1 (cat pt-2 (pv a-1 l-2)))
+      (recv
+        (sig (body b-1 (exp (gen) beta) (pubk "sig" b-1))
+          (privk "sig" b-1))) (send (cat na-1 a-1 b-1 (exp (gen) x-1))))
+    ((load priv-stor-1 (cat pt-3 ignore-0))
+      (stor priv-stor-1 (cat pt-2 (pv a-1 l-2)))))
+  (label 63)
+  (parent 49)
+  (unrealized (0 0) (1 3) (3 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (chi expt)
+    (l x l-0 l-1 rndx) (w expt) (y rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha w) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta (mul chi l))
+    (eta (mul (rec l-1) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) (mul (rec l-1) w)))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (gen) (mul w y)))
+  (deflistener y)
+  (precedes ((0 3) (3 0)) ((0 3) (7 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 1) (6 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l-1)
+  (uniq-gen x y)
+  (absent (x (mul chi l)) (x l-1) (y (mul chi l x (rec l-0))) (y l-0)
+    (y w))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed w))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener y) (mul w y) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) w) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) w y))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) (mul (rec l-1) w)))
+      (send (cat (exp (gen) y) (mul (rec l-1) w))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul chi l x))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (gen) (mul w y))) (send (cat (gen) (mul w y))))
+    ((recv y) (send y)))
+  (label 64)
+  (parent 51)
+  (unrealized (0 0) (1 3) (3 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 na-1 nb-1 data)
+    (a b a-0 b-0 a-1 name) (pt pt-0 pt-1 pval)
+    (priv-stor priv-stor-0 locn) (chi expt) (l x l-0 rndx)
+    (alpha chi-0 w expt) (y y-0 y-1 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-0) (y y-0) (alpha (mul w y)) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta (mul chi l))
+    (eta (mul w y y-0 (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y-0) (mul w y (rec l-1))))
+  (deflistener
+    (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x))))
+  (deflistener
+    (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) y-1) (mul w y y-0 (rec y-1))))
+  (defstrand resp 4 (na na-1) (nb nb-1) (a a-1) (b a)
+    (priv-stor priv-stor-0) (l l-1) (y y-1) (alpha alpha) (chi chi-0))
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((2 1) (7 0)) ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0))
+    ((6 1) (5 0)) ((7 3) (6 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 nb-1 l-1)
+  (uniq-gen x y-0 y-1)
+  (absent (x (mul chi l)) (x l-1) (y-0 (mul chi l x (rec l-0)))
+    (y-0 l-0) (y-0 (mul w y)) (y-1 alpha) (y-1 chi-0) (y-1 l-1))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq a a-1) (neq a b-0) (neq b a-0) (neq a-1 a) (neq b-0 a)
+    (neq a-0 b)
+    (eq (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed (mul w y)))
+  (leads-to ((2 1) (1 0)) ((2 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (displaced 8 2 ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-2 (pv b-1 l-2))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul w y)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul w y y-0))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y y-0 (rec l-1)))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul w y y-0))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y-0) (mul w y (rec l-1))))
+      (send (cat (exp (gen) y-0) (mul w y (rec l-1)))))
+    ((recv (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x))))
+      (send (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x))))
+      (send (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) y-1) (mul w y y-0 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul w y y-0 (rec y-1)))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body a-1 (exp (gen) alpha) (pubk "sig" a-1))
+          (privk "sig" a-1))) (recv (cat na-1 a-1 a (exp (gen) chi-0)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-1 nb-1 a-1 a
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi-0 l-1))))))))
+  (label 65)
+  (parent 52)
+  (unrealized (0 0) (1 3) (3 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 na-1 nb-1 data)
+    (a b a-0 b-0 a-1 b-1 name) (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (chi expt) (l x l-0 rndx)
+    (alpha chi-0 expt) (l-1 rndx) (w expt) (y y-0 y-1 l-2 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-0) (y y-0) (alpha (mul w y)) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta (mul chi l))
+    (eta (mul (rec l-1) w y y-0)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y-0) (mul (rec l-1) w y)))
+  (deflistener
+    (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x))))
+  (deflistener
+    (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) y-1) (mul w y y-0 (rec y-1))))
+  (defstrand resp 4 (na na-1) (nb nb-1) (a a-1) (b b-1)
+    (priv-stor priv-stor-1) (l l-2) (y y-1) (alpha alpha) (chi chi-0))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b-1)
+    (priv-stor priv-stor-1) (l l-2))
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 3) (6 0)) ((8 1) (7 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 nb-1 l-1 l-2)
+  (uniq-gen x y-0 y-1)
+  (absent (x (mul chi l)) (x l-1) (y-0 (mul chi l x (rec l-0)))
+    (y-0 l-0) (y-0 (mul w y)) (y-1 alpha) (y-1 chi-0) (y-1 l-2))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0) (pv b-1 l-2))
+  (facts (neq b-1 a-1) (neq a b-0) (neq b a-0) (neq a-1 b-1) (neq b-0 a)
+    (neq a-0 b)
+    (eq (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed (mul w y)))
+  (leads-to ((2 1) (1 0)) ((8 1) (7 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation channel-test (added-strand ltx-gen 2)
+    (ch-msg priv-stor-1 (cat pt-2 (pv b-1 l-2))) (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul w y)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y-0)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul w y y-0))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l-1) w y y-0))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul w y y-0))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y-0) (mul (rec l-1) w y)))
+      (send (cat (exp (gen) y-0) (mul (rec l-1) w y))))
+    ((recv (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x))))
+      (send (hash (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x))))
+      (send (cat (exp (gen) (mul w y y-0)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) y-1) (mul w y y-0 (rec y-1))))
+      (send (cat (exp (gen) y-1) (mul w y y-0 (rec y-1)))))
+    ((load priv-stor-1 (cat pt-2 (pv b-1 l-2)))
+      (recv
+        (sig (body a-1 (exp (gen) alpha) (pubk "sig" a-1))
+          (privk "sig" a-1)))
+      (recv (cat na-1 a-1 b-1 (exp (gen) chi-0)))
+      (send
+        (cat (exp (gen) y-1)
+          (enc na-1 nb-1 a-1 b-1
+            (hash (exp (gen) (mul alpha y-1))
+              (exp (gen) (mul chi-0 l-2)))))))
+    ((load priv-stor-1 (cat pt-3 ignore-0))
+      (stor priv-stor-1 (cat pt-2 (pv b-1 l-2)))))
+  (label 66)
+  (parent 52)
+  (unrealized (0 0) (1 3) (3 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (chi expt)
+    (l y x l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (mul l-1 l-1)) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta (mul chi l))
+    (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener
+    (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x))))
+  (deflistener
+    (cat (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) y) (mul l-1 l-1)))
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul chi l x (rec l-0))) (y l-0) (y (mul l-1 l-1))
+    (x (mul chi l)) (x l-1))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed (mul l-1 l-1)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 2 ltx-gen 2) l-2 (3 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul l-1 l-1)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul y l-1 l-1))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul y l-1 l-1))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x))))
+      (send
+        (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x))))
+      (send
+        (cat (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) y) (mul l-1 l-1)))
+      (send (cat (exp (gen) y) (mul l-1 l-1)))))
+  (label 67)
+  (parent 53)
+  (unrealized (0 0) (0 1) (3 0) (5 0) (6 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (chi expt)
+    (l y x l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l-1) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta (mul chi l)) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) y) l-1))
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul chi l x (rec l-0))) (y l-0) (y l-1) (x (mul chi l))
+    (x l-1))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (contracted (l-2 l-1) (w l-1)) (one) (3 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) l-1) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x))))
+      (send (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x))))
+      (send (cat (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1))))
+  (label 68)
+  (parent 53)
+  (unrealized (0 0) (0 1) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb na-0 nb-0 data)
+    (a b a-0 b-0 self name) (pt pt-0 pt-1 pt-2 pt-3 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (chi expt)
+    (l y x l-0 l-1 l-2 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (mul l-1 l-2)) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta (mul chi l))
+    (eta (mul y l-2)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) l-2))
+  (deflistener
+    (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul chi l x))))
+  (deflistener
+    (cat (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) y) (mul l-1 l-2)))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self self)
+    (priv-stor priv-stor-1) (l l-2))
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0))
+    ((7 1) (3 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l-1 l-2)
+  (uniq-gen y x)
+  (absent (y (mul chi l x (rec l-0))) (y l-0) (y (mul l-1 l-2))
+    (x (mul chi l)) (x l-1))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed (mul l-1 l-2)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-strand ltx-gen 2) l-2 (3 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul l-1 l-2)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul y l-1 l-2))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-2))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul y l-1 l-2))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) l-2)) (send (cat (exp (gen) y) l-2)))
+    ((recv (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul chi l x))))
+      (send
+        (hash (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul chi l x))))
+      (send
+        (cat (exp (gen) (mul y l-1 l-2)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) y) (mul l-1 l-2)))
+      (send (cat (exp (gen) y) (mul l-1 l-2))))
+    ((load priv-stor-1 (cat pt-2 ignore-0))
+      (stor priv-stor-1 (cat pt-3 (pv self l-2)))))
+  (label 69)
+  (parent 53)
+  (unrealized (0 0) (0 1) (3 0) (5 0) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (w chi expt)
+    (l y x l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (mul w l-1)) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta (mul chi l))
+    (eta (mul w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener
+    (hash (exp (gen) (mul w y l-1)) (exp (gen) (mul chi l x))))
+  (deflistener
+    (cat (exp (gen) (mul w y l-1)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) y) (mul w l-1)))
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul w l-1)) (y (mul chi l x (rec l-0))) (y l-0)
+    (x (mul chi l)) (x l-1) (l-1 w))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul w y l-1)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul w y l-1)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed (mul w l-1)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-1 w) w (3 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul w l-1)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul w y l-1))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul w y l-1))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (hash (exp (gen) (mul w y l-1)) (exp (gen) (mul chi l x))))
+      (send (hash (exp (gen) (mul w y l-1)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul w y l-1)) (exp (gen) (mul chi l x))))
+      (send (cat (exp (gen) (mul w y l-1)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) y) (mul w l-1)))
+      (send (cat (exp (gen) y) (mul w l-1)))))
+  (label 70)
+  (parent 53)
+  (unrealized (0 0) (0 1) (5 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (l rndx)
+    (w chi expt) (l-0 y x l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-1) (y y) (alpha w) (chi (mul chi l-0 x (rec l-1))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l) (x x) (beta (mul chi l-0))
+    (eta (mul (rec l) w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l))
+  (deflistener (cat (exp (gen) y) (mul (rec l) w)))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x))))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener l)
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((2 1) (7 0)) ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0))
+    ((6 1) (5 0)) ((7 1) (3 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l)
+  (uniq-gen y x)
+  (absent (y w) (y (mul chi l-0 x (rec l-1))) (y l-1) (x l)
+    (x (mul chi l-0)))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l) (pv b l-1))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x)))
+      (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x))))
+    (neq l l-1) (undisclosed l) (undisclosed (mul chi l-0))
+    (undisclosed l-1) (undisclosed w))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener l) (mul (rec l) w) (3 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l-1)))
+      (recv
+        (sig (body a-0 (exp (gen) w) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l-0 x (rec l-1)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l-0)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul (rec l) w y))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l))))
+    ((recv (cat (exp (gen) y) (mul (rec l) w)))
+      (send (cat (exp (gen) y) (mul (rec l) w))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul chi l-0 x)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv l) (send l)))
+  (label 71)
+  (parent 53)
+  (unrealized (0 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l-1) (chi (mul x l (rec l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x) (beta l) (eta y))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor-0)
+    (l l))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul x l)) l-0))
+  (precedes ((0 3) (2 0)) ((1 2) (6 0)) ((2 1) (1 3)) ((3 2) (1 1))
+    ((4 1) (0 0)) ((4 1) (6 0)) ((5 1) (1 0)) ((5 2) (0 1))
+    ((6 1) (0 2)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y l-0) (y l-1) (x l) (x l-1))
+  (precur (2 0))
+  (gen-st (pv b l-0) (pv a l-1))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))
+      (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed l) (undisclosed l-0))
+  (leads-to ((4 1) (0 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) (mul x l)) l-0))
+    (exp (gen) (mul x l (rec l-0))) (0 2))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-1 (cat pt-4 (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-0 (cat pt-0 ignore))
+      (stor priv-stor-0 (cat pt-1 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-2 ignore-0))
+      (stor priv-stor (cat pt (pv b l-0))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv a l-1)))
+      (send
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a))))
+    ((recv (cat (exp (gen) (mul x l)) l-0))
+      (send (cat (exp (gen) (mul x l)) l-0))))
+  (label 72)
+  (parent 57)
+  (unrealized (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l-1) (chi (mul x l (rec l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x) (beta l) (eta y))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor-0)
+    (l l))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul x (rec l-0))) l))
+  (precedes ((0 3) (2 0)) ((1 2) (6 0)) ((2 1) (1 3)) ((3 2) (1 1))
+    ((4 1) (0 0)) ((5 1) (1 0)) ((5 2) (0 1)) ((6 1) (0 2)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y l-0) (y l-1) (x l) (x l-1))
+  (precur (2 0))
+  (gen-st (pv b l-0) (pv a l-1))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))
+      (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed l) (undisclosed l-0))
+  (leads-to ((4 1) (0 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x (rec l-0))) l))
+    (exp (gen) (mul x l (rec l-0))) (0 2))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-1 (cat pt-4 (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-0 (cat pt-0 ignore))
+      (stor priv-stor-0 (cat pt-1 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-2 ignore-0))
+      (stor priv-stor (cat pt (pv b l-0))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv a l-1)))
+      (send
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a))))
+    ((recv (cat (exp (gen) (mul x (rec l-0))) l))
+      (send (cat (exp (gen) (mul x (rec l-0))) l))))
+  (label 73)
+  (parent 57)
+  (unrealized (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l-1) (chi (mul x l (rec l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x) (beta l) (eta y))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor-0)
+    (l l))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l (rec l-0))) x))
+  (precedes ((0 3) (2 0)) ((1 2) (6 0)) ((2 1) (1 3)) ((3 2) (1 1))
+    ((4 1) (0 0)) ((5 1) (1 0)) ((5 2) (0 1)) ((6 1) (0 2)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y l-0) (y l-1) (x l) (x l-1))
+  (precur (2 0))
+  (gen-st (pv b l-0) (pv a l-1))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))
+      (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed l) (undisclosed l-0))
+  (leads-to ((4 1) (0 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l (rec l-0))) x))
+    (exp (gen) (mul x l (rec l-0))) (0 2))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-1 (cat pt-4 (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-0 (cat pt-0 ignore))
+      (stor priv-stor-0 (cat pt-1 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-2 ignore-0))
+      (stor priv-stor (cat pt (pv b l-0))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv a l-1)))
+      (send
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a))))
+    ((recv (cat (exp (gen) (mul l (rec l-0))) x))
+      (send (cat (exp (gen) (mul l (rec l-0))) x))))
+  (label 74)
+  (parent 57)
+  (unrealized (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pval) (priv-stor priv-stor-0 locn)
+    (y x l l-0 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l) (y y) (alpha l-0) (chi x))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-0)
+    (l l-0) (x x) (beta l) (eta y))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor)
+    (l l))
+  (defstrand ltx-gen 3 (ignore ignore-0) (self a)
+    (priv-stor priv-stor-0) (l l-0))
+  (precedes ((0 3) (1 3)) ((1 2) (0 2)) ((2 1) (0 0)) ((2 2) (1 1))
+    ((3 1) (1 0)) ((3 2) (0 1)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0)
+  (uniq-gen y x)
+  (absent (y x) (y l) (y l-0) (x l) (x l-0) (l-0 (one)))
+  (gen-st (pv b l) (pv a l-0))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))
+      (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))) (neq l-0 l)
+    (undisclosed l-0) (undisclosed l))
+  (leads-to ((2 1) (0 0)) ((3 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4)
+  (traces
+    ((load priv-stor (cat pt-0 (pv b l)))
+      (recv
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-0 (cat pt-2 (pv a l-0)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul x l)))))))
+    ((load priv-stor (cat pt ignore))
+      (stor priv-stor (cat pt-0 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor-0 (cat pt-1 ignore-0))
+      (stor priv-stor-0 (cat pt-2 (pv a l-0)))
+      (send
+        (sig (body a (exp (gen) l-0) (pubk "sig" a)) (privk "sig" a)))))
+  (label 75)
+  (parent 60)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps
+    ((0 1)
+      ((ltxa l-0) (ltxb l) (x x) (y y) (eta y) (chi x) (beta l)
+        (alpha l-0) (a a) (b b) (a-0 a) (b-0 b) (na na) (nb nb)
+        (priv-stor priv-stor) (na-0 na) (nb-0 nb)
+        (priv-stor-0 priv-stor-0))))
+  (origs (l-0 (3 1)) (pt-2 (3 1)) (l (2 1)) (pt-0 (2 1)) (nb (0 3))
+    (na (1 2)))
+  (ugens (y (0 3)) (x (1 2))))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l-1) (chi (mul x l (rec l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x) (beta l) (eta y))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor-0)
+    (l l))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul x l)) l-0))
+  (precedes ((0 3) (2 0)) ((1 2) (6 0)) ((2 1) (1 3)) ((3 2) (1 1))
+    ((4 1) (0 0)) ((4 1) (6 0)) ((5 1) (1 0)) ((5 2) (0 1))
+    ((6 1) (0 2)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y l-0) (y l-1) (x l) (x l-1)
+    (l-1 (one)))
+  (precur (2 0))
+  (gen-st (pv b l-0) (pv a l-1))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))
+      (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed l) (undisclosed l-0))
+  (leads-to ((4 1) (0 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener (cat (exp (gen) (mul x l)) l-0))
+    (exp (gen) (mul x l (rec l-0))) (0 2))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-1 (cat pt-4 (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-0 (cat pt-0 ignore))
+      (stor priv-stor-0 (cat pt-1 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-2 ignore-0))
+      (stor priv-stor (cat pt (pv b l-0))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv a l-1)))
+      (send
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a))))
+    ((recv (cat (exp (gen) (mul x l)) l-0))
+      (send (cat (exp (gen) (mul x l)) l-0))))
+  (label 76)
+  (parent 61)
+  (unrealized (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l-1) (chi (mul x l (rec l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x) (beta l) (eta y))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor-0)
+    (l l))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul x (rec l-0))) l))
+  (precedes ((0 3) (2 0)) ((1 2) (6 0)) ((2 1) (1 3)) ((3 2) (1 1))
+    ((4 1) (0 0)) ((5 1) (1 0)) ((5 2) (0 1)) ((6 1) (0 2)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y l-0) (y l-1) (x l) (x l-1)
+    (l-1 (one)))
+  (precur (2 0))
+  (gen-st (pv b l-0) (pv a l-1))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))
+      (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed l) (undisclosed l-0))
+  (leads-to ((4 1) (0 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul x (rec l-0))) l))
+    (exp (gen) (mul x l (rec l-0))) (0 2))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-1 (cat pt-4 (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-0 (cat pt-0 ignore))
+      (stor priv-stor-0 (cat pt-1 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-2 ignore-0))
+      (stor priv-stor (cat pt (pv b l-0))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv a l-1)))
+      (send
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a))))
+    ((recv (cat (exp (gen) (mul x (rec l-0))) l))
+      (send (cat (exp (gen) (mul x (rec l-0))) l))))
+  (label 77)
+  (parent 61)
+  (unrealized (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore ignore-0 ignore-1 mesg) (na nb data) (b a name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (priv-stor priv-stor-0 priv-stor-1 locn) (y x l l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l-1) (chi (mul x l (rec l-0))))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (priv-stor priv-stor-1)
+    (l l-1) (x x) (beta l) (eta y))
+  (deflistener (cat (exp (gen) y) (one)))
+  (defstrand ltx-gen 3 (ignore ignore) (self b) (priv-stor priv-stor-0)
+    (l l))
+  (defstrand ltx-gen 2 (ignore ignore-0) (self b) (priv-stor priv-stor)
+    (l l-0))
+  (defstrand ltx-gen 3 (ignore ignore-1) (self a)
+    (priv-stor priv-stor-1) (l l-1))
+  (deflistener (cat (exp (gen) (mul l (rec l-0))) x))
+  (precedes ((0 3) (2 0)) ((1 2) (6 0)) ((2 1) (1 3)) ((3 2) (1 1))
+    ((4 1) (0 0)) ((5 1) (1 0)) ((5 2) (0 1)) ((6 1) (0 2)))
+  (non-orig (privk "sig" b) (privk "sig" a))
+  (uniq-orig na nb l l-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul x l (rec l-0))) (y l-0) (y l-1) (x l) (x l-1)
+    (l-1 (one)))
+  (precur (2 0))
+  (gen-st (pv b l-0) (pv a l-1))
+  (facts (neq b a) (neq a b)
+    (eq (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))
+      (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed l) (undisclosed l-0))
+  (leads-to ((4 1) (0 0)) ((5 1) (1 0)))
+  (rule fact-resp-neq0 trRl_ltx-gen-at-0 trRl_ltx-gen-at-1)
+  (operation nonce-test
+    (added-listener (cat (exp (gen) (mul l (rec l-0))) x))
+    (exp (gen) (mul x l (rec l-0))) (0 2))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a)))
+      (recv (cat na a b (exp (gen) (mul x l (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((load priv-stor-1 (cat pt-4 (pv a l-1)))
+      (recv (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul x l)))))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((load priv-stor-0 (cat pt-0 ignore))
+      (stor priv-stor-0 (cat pt-1 (pv b l)))
+      (send
+        (sig (body b (exp (gen) l) (pubk "sig" b)) (privk "sig" b))))
+    ((load priv-stor (cat pt-2 ignore-0))
+      (stor priv-stor (cat pt (pv b l-0))))
+    ((load priv-stor-1 (cat pt-3 ignore-1))
+      (stor priv-stor-1 (cat pt-4 (pv a l-1)))
+      (send
+        (sig (body a (exp (gen) l-1) (pubk "sig" a)) (privk "sig" a))))
+    ((recv (cat (exp (gen) (mul l (rec l-0))) x))
+      (send (cat (exp (gen) (mul l (rec l-0))) x))))
+  (label 78)
+  (parent 61)
+  (unrealized (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (chi expt)
+    (l y x l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (mul l-1 l-1)) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta (mul chi l))
+    (eta (mul y l-1)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) l-1))
+  (deflistener
+    (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x))))
+  (deflistener
+    (cat (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) y) (mul l-1 l-1)))
+  (deflistener l-1)
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((2 1) (7 0)) ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0))
+    ((6 1) (5 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul chi l x (rec l-0))) (y l-0) (y (mul l-1 l-1))
+    (x (mul chi l)) (x l-1))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed (mul l-1 l-1)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener l-1) (mul l-1 l-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul l-1 l-1)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul y l-1 l-1))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul y l-1))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul y l-1 l-1))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1)))
+    ((recv (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x))))
+      (send
+        (hash (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x))))
+      (send
+        (cat (exp (gen) (mul y l-1 l-1)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) y) (mul l-1 l-1)))
+      (send (cat (exp (gen) y) (mul l-1 l-1)))) ((recv l-1) (send l-1)))
+  (label 79)
+  (parent 67)
+  (unrealized (0 0) (0 1) (3 0) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (chi expt)
+    (l y x l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha l-1) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta (mul chi l)) (eta y))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) (one)))
+  (deflistener (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) y) l-1))
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul chi l x (rec l-0))) (y l-0) (y l-1) (x (mul chi l))
+    (x l-1) (l-1 (one)))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (displaced 7 2 ltx-gen 2) l-2 (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) l-1) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) (one))) (send (cat (exp (gen) y) (one))))
+    ((recv (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x))))
+      (send (hash (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x))))
+      (send (cat (exp (gen) (mul y l-1)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) y) l-1)) (send (cat (exp (gen) y) l-1))))
+  (label 80)
+  (parent 70)
+  (unrealized (0 0) (0 1) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (w chi expt)
+    (l y x l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha w) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta (mul chi l))
+    (eta (mul w y (rec l-1))))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) (mul w (rec l-1))))
+  (deflistener (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) (mul w y)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) y) w))
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0)) ((6 1) (5 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l-1)
+  (uniq-gen y x)
+  (absent (y w) (y (mul chi l x (rec l-0))) (y l-0) (x (mul chi l))
+    (x l-1) (l-1 w) (l-1 (mul w (rec l-1))))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed w))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-absence l-1 w) w (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) w) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y (rec l-1)))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) (mul w (rec l-1))))
+      (send (cat (exp (gen) y) (mul w (rec l-1)))))
+    ((recv (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x))))
+      (send (hash (exp (gen) (mul w y)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul w y)) (exp (gen) (mul chi l x))))
+      (send (cat (exp (gen) (mul w y)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
+  (label 81)
+  (parent 70)
+  (unrealized (0 0) (1 3) (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton dhcr-umx
+  (vars (ignore mesg) (na nb na-0 nb-0 data) (a b a-0 b-0 name)
+    (pt pt-0 pt-1 pval) (priv-stor priv-stor-0 locn) (w chi expt)
+    (l y x l-0 l-1 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a-0) (b b) (priv-stor priv-stor)
+    (l l-0) (y y) (alpha (mul w l-1)) (chi (mul chi l x (rec l-0))))
+  (defstrand init 4 (na na-0) (nb nb-0) (a a) (b b-0)
+    (priv-stor priv-stor-0) (l l-1) (x x) (beta (mul chi l))
+    (eta (mul w y)))
+  (defstrand ltx-gen 2 (ignore ignore) (self a) (priv-stor priv-stor-0)
+    (l l-1))
+  (deflistener (cat (exp (gen) y) w))
+  (deflistener
+    (hash (exp (gen) (mul w y l-1)) (exp (gen) (mul chi l x))))
+  (deflistener
+    (cat (exp (gen) (mul w y l-1)) (exp (gen) (mul chi l x))))
+  (deflistener (cat (exp (gen) y) (mul w l-1)))
+  (deflistener l-1)
+  (precedes ((0 3) (3 0)) ((0 3) (6 0)) ((1 2) (0 2)) ((2 1) (1 0))
+    ((2 1) (7 0)) ((3 1) (1 3)) ((4 1) (1 3)) ((5 1) (4 0))
+    ((6 1) (5 0)) ((7 1) (6 0)))
+  (non-orig (privk "sig" a) (privk "sig" b))
+  (uniq-orig nb na-0 l-1)
+  (uniq-gen y x)
+  (absent (y (mul w l-1)) (y (mul chi l x (rec l-0))) (y l-0)
+    (x (mul chi l)) (x l-1) (l-1 w))
+  (precur (3 0) (6 0))
+  (gen-st (pv a l-1) (pv b l-0))
+  (facts (neq a b-0) (neq b a-0) (neq b-0 a) (neq a-0 b)
+    (eq (hash (exp (gen) (mul w y l-1)) (exp (gen) (mul chi l x)))
+      (hash (exp (gen) (mul w y l-1)) (exp (gen) (mul chi l x))))
+    (neq l-1 l-0) (undisclosed l-1) (undisclosed (mul chi l))
+    (undisclosed l-0) (undisclosed (mul w l-1)))
+  (leads-to ((2 1) (1 0)))
+  (rule fact-init-neq0 fact-resp-neq0 trRl_ltx-gen-at-0
+    trRl_ltx-gen-at-1)
+  (operation nonce-test (added-listener l-1) (mul w l-1) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load priv-stor (cat pt (pv b l-0)))
+      (recv
+        (sig (body a-0 (exp (gen) (mul w l-1)) (pubk "sig" a-0))
+          (privk "sig" a-0)))
+      (recv (cat na a-0 b (exp (gen) (mul chi l x (rec l-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a-0 b
+            (hash (exp (gen) (mul w y l-1))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-0 (pv a l-1)))
+      (recv
+        (sig (body b-0 (exp (gen) (mul chi l)) (pubk "sig" b-0))
+          (privk "sig" b-0))) (send (cat na-0 a b-0 (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul w y))
+          (enc na-0 nb-0 a b-0
+            (hash (exp (gen) (mul w y l-1))
+              (exp (gen) (mul chi l x)))))))
+    ((load priv-stor-0 (cat pt-1 ignore))
+      (stor priv-stor-0 (cat pt-0 (pv a l-1))))
+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
+    ((recv (hash (exp (gen) (mul w y l-1)) (exp (gen) (mul chi l x))))
+      (send (hash (exp (gen) (mul w y l-1)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) (mul w y l-1)) (exp (gen) (mul chi l x))))
+      (send (cat (exp (gen) (mul w y l-1)) (exp (gen) (mul chi l x)))))
+    ((recv (cat (exp (gen) y) (mul w l-1)))
+      (send (cat (exp (gen) y) (mul w l-1)))) ((recv l-1) (send l-1)))
+  (label 82)
+  (parent 70)
+  (unrealized (0 0) (0 1) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
diff --git a/tst/dhcr_umx_shapes.tst b/tst/dhcr_umx_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/dhcr_umx_shapes.tst
@@ -0,0 +1,1150 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "DHCR: unified model (UM) criss-cross" (bound 20) (limit 8000)
+  (algebra diffie-hellman))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/dhcr_umx.scm")
+
+(comment "Step count limited to 8000")
+
+(comment "Strand count bounded at 20")
+
+(defprotocol dhcr-umx diffie-hellman
+  (defrole init
+    (vars (ltxa ltxb x rndx) (y expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x ltxa) (x ltxb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) y) (gen))))
+  (defrole resp
+    (vars (ltxa ltxb y rndx) (x expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y ltxa) (y ltxb) (y x))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) x) (gen))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx))
+    (trace (send (cat self (exp (gen) l))) (recv "end-of-protocol")
+      (send l))
+    (uniq-gen l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b name) (ltxa ltxb x rndx) (y expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (x x) (y y))
+  (defstrand ltx-gen 1 (self b) (l ltxb))
+  (precedes ((1 0) (0 0)))
+  (non-orig ltxb)
+  (uniq-orig na)
+  (uniq-gen ltxb x)
+  (absent (x ltxa) (x ltxb))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (send nb)) ((send (cat b (exp (gen) ltxb)))))
+  (label 0)
+  (unrealized (0 2))
+  (origs (na (0 1)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b name) (ltxa ltxa-0 y ltxb l rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb l)
+    (x ltxb) (y (mul (rec ltxa) ltxa-0 y)))
+  (defstrand ltx-gen 1 (self b) (l l))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (ltxa ltxa-0)
+    (ltxb ltxb) (y y) (x l))
+  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)))
+  (non-orig l)
+  (uniq-orig na nb)
+  (uniq-gen y ltxb l)
+  (absent (y ltxa-0) (y ltxb) (y l) (ltxb ltxa) (ltxb l))
+  (operation nonce-test (displaced 3 1 ltx-gen 1) (exp (gen) l) (2 1))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) l)))
+      (send (cat na a b (exp (gen) ltxb)))
+      (recv
+        (cat (exp (gen) (mul (rec ltxa) ltxa-0 y))
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa-0 y))
+              (exp (gen) (mul ltxb l)))))) (send nb))
+    ((send (cat b (exp (gen) l))))
+    ((recv (cat (exp (gen) ltxa-0) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) l)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa-0 y))
+              (exp (gen) (mul ltxb l))))))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ltxa ltxa) (ltxb l) (a a) (b b) (x ltxb)
+        (y (mul (rec ltxa) ltxa-0 y)) (na na) (nb nb))))
+  (origs (nb (2 2)) (na (0 1))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b name) (ltxa y x ltxa-0 ltxb rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa-0)
+    (ltxb ltxb) (x x) (y (mul ltxa y (rec ltxa-0))))
+  (defstrand ltx-gen 1 (self b) (l ltxb))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (y y) (x x))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2)))
+  (non-orig ltxb)
+  (uniq-orig na nb)
+  (uniq-gen y x ltxb)
+  (absent (y ltxa) (y x) (y ltxb) (x ltxa-0) (x ltxb))
+  (operation nonce-test (displaced 3 0 init 2) (exp (gen) x) (2 1))
+  (traces
+    ((recv (cat (exp (gen) ltxa-0) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul ltxa y (rec ltxa-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul x ltxb))))))
+      (send nb)) ((send (cat b (exp (gen) ltxb))))
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y))
+              (exp (gen) (mul x ltxb))))))))
+  (label 4)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ltxa ltxa-0) (ltxb ltxb) (a a) (b b) (x x)
+        (y (mul ltxa y (rec ltxa-0))) (na na) (nb nb))))
+  (origs (na (0 1)) (nb (2 2))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-umx diffie-hellman
+  (defrole init
+    (vars (ltxa ltxb x rndx) (y expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x ltxa) (x ltxb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) y) (gen))))
+  (defrole resp
+    (vars (ltxa ltxb y rndx) (x expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y ltxa) (y ltxb) (y x))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) x) (gen))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx))
+    (trace (send (cat self (exp (gen) l))) (recv "end-of-protocol")
+      (send l))
+    (uniq-gen l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b name) (ltxa ltxb x rndx) (y expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (x x) (y y))
+  (defstrand ltx-gen 1 (self b) (l ltxb))
+  (precedes ((1 0) (0 0)))
+  (non-orig ltxb)
+  (uniq-orig na)
+  (uniq-gen ltxb x)
+  (absent (x ltxa) (x ltxb))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (send nb)) ((send (cat b (exp (gen) ltxb)))))
+  (label 10)
+  (unrealized (0 2))
+  (origs (na (0 1)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b name) (ltxa ltxa-0 y ltxb l rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb l)
+    (x ltxb) (y (mul (rec ltxa) ltxa-0 y)))
+  (defstrand ltx-gen 1 (self b) (l l))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (ltxa ltxa-0)
+    (ltxb ltxb) (y y) (x l))
+  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)))
+  (non-orig l)
+  (uniq-orig na nb)
+  (uniq-gen y ltxb l)
+  (absent (y ltxa-0) (y ltxb) (y l) (ltxb ltxa) (ltxb l))
+  (operation nonce-test (displaced 3 1 ltx-gen 1) (exp (gen) l) (2 1))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) l)))
+      (send (cat na a b (exp (gen) ltxb)))
+      (recv
+        (cat (exp (gen) (mul (rec ltxa) ltxa-0 y))
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa-0 y))
+              (exp (gen) (mul ltxb l)))))) (send nb))
+    ((send (cat b (exp (gen) l))))
+    ((recv (cat (exp (gen) ltxa-0) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) l)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa-0 y))
+              (exp (gen) (mul ltxb l))))))))
+  (label 13)
+  (parent 10)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ltxa ltxa) (ltxb l) (a a) (b b) (x ltxb)
+        (y (mul (rec ltxa) ltxa-0 y)) (na na) (nb nb))))
+  (origs (nb (2 2)) (na (0 1))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b name) (ltxa y x ltxa-0 ltxb rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa-0)
+    (ltxb ltxb) (x x) (y (mul ltxa y (rec ltxa-0))))
+  (defstrand ltx-gen 1 (self b) (l ltxb))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (y y) (x x))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2)))
+  (non-orig ltxb)
+  (uniq-orig na nb)
+  (uniq-gen y x ltxb)
+  (absent (y ltxa) (y x) (y ltxb) (x ltxa-0) (x ltxb))
+  (operation nonce-test (displaced 3 0 init 2) (exp (gen) x) (2 1))
+  (traces
+    ((recv (cat (exp (gen) ltxa-0) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) (mul ltxa y (rec ltxa-0)))
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul x ltxb))))))
+      (send nb)) ((send (cat b (exp (gen) ltxb))))
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y))
+              (exp (gen) (mul x ltxb))))))))
+  (label 14)
+  (parent 10)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ltxa ltxa-0) (ltxb ltxb) (a a) (b b) (x x)
+        (y (mul ltxa y (rec ltxa-0))) (na na) (nb nb))))
+  (origs (na (0 1)) (nb (2 2))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-umx diffie-hellman
+  (defrole init
+    (vars (ltxa ltxb x rndx) (y expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x ltxa) (x ltxb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) y) (gen))))
+  (defrole resp
+    (vars (ltxa ltxb y rndx) (x expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y ltxa) (y ltxb) (y x))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) x) (gen))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx))
+    (trace (send (cat self (exp (gen) l))) (recv "end-of-protocol")
+      (send l))
+    (uniq-gen l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b self self-0 name) (ltxa ltxb x rndx) (y expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (x x) (y y))
+  (defstrand ltx-gen 1 (self self) (l ltxa))
+  (defstrand ltx-gen 1 (self self-0) (l ltxb))
+  (non-orig ltxa ltxb)
+  (uniq-orig na)
+  (uniq-gen ltxa ltxb x)
+  (absent (x ltxa) (x ltxb))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (send nb)) ((send (cat self (exp (gen) ltxa))))
+    ((send (cat self-0 (exp (gen) ltxb)))))
+  (label 20)
+  (unrealized (0 0) (0 2))
+  (preskeleton)
+  (origs (na (0 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b self self-0 name) (y ltxa ltxb l rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb l)
+    (x ltxb) (y y))
+  (defstrand ltx-gen 1 (self self) (l ltxa))
+  (defstrand ltx-gen 1 (self self-0) (l l))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (y y) (x l))
+  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((2 0) (0 0)) ((3 2) (0 2)))
+  (non-orig ltxa l)
+  (uniq-orig na nb)
+  (uniq-gen y ltxa ltxb l)
+  (absent (y ltxa) (y ltxb) (y l) (ltxb ltxa) (ltxb l))
+  (operation nonce-test (displaced 4 3 resp 3) (exp (gen) y) (0 2))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) l)))
+      (send (cat na a b (exp (gen) ltxb)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul ltxb l))))))
+      (send nb)) ((send (cat self (exp (gen) ltxa))))
+    ((send (cat self-0 (exp (gen) l))))
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) l)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa))
+              (exp (gen) (mul ltxb l))))))))
+  (label 37)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 2)
+      ((ltxa ltxa) (ltxb l) (a a) (b b) (x ltxb) (y y) (na na) (nb nb)
+        (self self) (self-0 self-0))))
+  (origs (nb (3 2)) (na (0 1))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b self self-0 name) (y ltxa ltxb x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (x x) (y y))
+  (defstrand ltx-gen 1 (self self) (l ltxa))
+  (defstrand ltx-gen 1 (self self-0) (l ltxb))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (y y) (x x))
+  (precedes ((0 1) (3 1)) ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (0 0))
+    ((2 0) (3 0)) ((3 2) (0 2)))
+  (non-orig ltxa ltxb)
+  (uniq-orig na nb)
+  (uniq-gen y ltxa ltxb x)
+  (absent (y ltxa) (y ltxb) (y x) (x ltxa) (x ltxb))
+  (operation nonce-test (displaced 4 3 resp 3) (exp (gen) y) (0 2))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul ltxb x))))))
+      (send nb)) ((send (cat self (exp (gen) ltxa))))
+    ((send (cat self-0 (exp (gen) ltxb))))
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa))
+              (exp (gen) (mul ltxb x))))))))
+  (label 40)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 2)
+      ((ltxa ltxa) (ltxb ltxb) (a a) (b b) (x x) (y y) (na na) (nb nb)
+        (self self) (self-0 self-0))))
+  (origs (nb (3 2)) (na (0 1))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b self name) (y ltxb l rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa l) (ltxb l)
+    (x ltxb) (y y))
+  (defstrand ltx-gen 1 (self self) (l l))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (ltxa l) (ltxb ltxb)
+    (y y) (x l))
+  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((2 2) (0 2)))
+  (non-orig l)
+  (uniq-orig na nb)
+  (uniq-gen y ltxb l)
+  (absent (y ltxb) (y l) (ltxb l))
+  (operation nonce-test (displaced 3 2 resp 3) (exp (gen) y) (0 2))
+  (traces
+    ((recv (cat (exp (gen) l) (exp (gen) l)))
+      (send (cat na a b (exp (gen) ltxb)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul ltxb l))))))
+      (send nb)) ((send (cat self (exp (gen) l))))
+    ((recv (cat (exp (gen) l) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) l)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul ltxb l))))))))
+  (label 45)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 1)
+      ((ltxa l) (ltxb l) (a a) (b b) (x ltxb) (y y) (na na) (nb nb)
+        (self self) (self-0 self))))
+  (origs (nb (2 2)) (na (0 1))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b self name) (y ltxb x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxb) (ltxb ltxb)
+    (x x) (y y))
+  (defstrand ltx-gen 1 (self self) (l ltxb))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (ltxa ltxb) (ltxb ltxb)
+    (y y) (x x))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 2) (0 2)))
+  (non-orig ltxb)
+  (uniq-orig na nb)
+  (uniq-gen y ltxb x)
+  (absent (y ltxb) (y x) (x ltxb))
+  (operation nonce-test (displaced 3 2 resp 3) (exp (gen) y) (0 2))
+  (traces
+    ((recv (cat (exp (gen) ltxb) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxb)) (exp (gen) (mul ltxb x))))))
+      (send nb)) ((send (cat self (exp (gen) ltxb))))
+    ((recv (cat (exp (gen) ltxb) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxb))
+              (exp (gen) (mul ltxb x))))))))
+  (label 48)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 1)
+      ((ltxa ltxb) (ltxb ltxb) (a a) (b b) (x x) (y y) (na na) (nb nb)
+        (self self) (self-0 self))))
+  (origs (nb (2 2)) (na (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-umx diffie-hellman
+  (defrole init
+    (vars (ltxa ltxb x rndx) (y expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x ltxa) (x ltxb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) y) (gen))))
+  (defrole resp
+    (vars (ltxa ltxb y rndx) (x expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y ltxa) (y ltxb) (y x))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) x) (gen))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx))
+    (trace (send (cat self (exp (gen) l))) (recv "end-of-protocol")
+      (send l))
+    (uniq-gen l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b self self-0 name) (ltxa ltxb y rndx) (x expt))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (y y) (x x))
+  (defstrand ltx-gen 1 (self self) (l ltxa))
+  (defstrand ltx-gen 1 (self self-0) (l ltxb))
+  (non-orig ltxa ltxb)
+  (uniq-orig nb)
+  (uniq-gen ltxa ltxb y)
+  (absent (y ltxa) (y ltxb) (y x))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (recv nb)) ((send (cat self (exp (gen) ltxa))))
+    ((send (cat self-0 (exp (gen) ltxb)))))
+  (label 57)
+  (unrealized (0 0) (0 3))
+  (preskeleton)
+  (origs (nb (0 2)))
+  (comment "Not a skeleton"))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b self self-0 name) (y x ltxa ltxb rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (y y) (x x))
+  (defstrand ltx-gen 1 (self self) (l ltxa))
+  (defstrand ltx-gen 1 (self self-0) (l ltxb))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (x x) (y y))
+  (precedes ((0 2) (3 2)) ((1 0) (0 0)) ((1 0) (3 0)) ((2 0) (0 0))
+    ((2 0) (3 0)) ((3 1) (0 1)) ((3 3) (0 3)))
+  (non-orig ltxa ltxb)
+  (uniq-orig na nb)
+  (uniq-gen y x ltxa ltxb)
+  (absent (y x) (y ltxa) (y ltxb) (x ltxa) (x ltxb))
+  (operation nonce-test (displaced 4 3 init 2) (exp (gen) x) (0 1))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul x ltxb))))))
+      (recv nb)) ((send (cat self (exp (gen) ltxa))))
+    ((send (cat self-0 (exp (gen) ltxb))))
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul x ltxb))))))
+      (send nb)))
+  (label 72)
+  (parent 57)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 2)
+      ((ltxa ltxa) (ltxb ltxb) (a a) (b b) (y y) (x x) (na na) (nb nb)
+        (self self) (self-0 self-0))))
+  (origs (na (3 1)) (nb (0 2))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b self name) (y x ltxb rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ltxa ltxb) (ltxb ltxb)
+    (y y) (x x))
+  (defstrand ltx-gen 1 (self self) (l ltxb))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxb) (ltxb ltxb)
+    (x x) (y y))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
+    ((2 3) (0 3)))
+  (non-orig ltxb)
+  (uniq-orig na nb)
+  (uniq-gen y x ltxb)
+  (absent (y x) (y ltxb) (x ltxb))
+  (operation nonce-test (displaced 3 2 init 2) (exp (gen) x) (0 1))
+  (traces
+    ((recv (cat (exp (gen) ltxb) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxb)) (exp (gen) (mul x ltxb))))))
+      (recv nb)) ((send (cat self (exp (gen) ltxb))))
+    ((recv (cat (exp (gen) ltxb) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxb)) (exp (gen) (mul x ltxb))))))
+      (send nb)))
+  (label 77)
+  (parent 57)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 1)
+      ((ltxa ltxb) (ltxb ltxb) (a a) (b b) (y y) (x x) (na na) (nb nb)
+        (self self) (self-0 self))))
+  (origs (na (2 1)) (nb (0 2))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-umx diffie-hellman
+  (defrole init
+    (vars (ltxa ltxb x rndx) (y expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x ltxa) (x ltxb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) y) (gen))))
+  (defrole resp
+    (vars (ltxa ltxb y rndx) (x expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y ltxa) (y ltxb) (y x))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) x) (gen))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx))
+    (trace (send (cat self (exp (gen) l))) (recv "end-of-protocol")
+      (send l))
+    (uniq-gen l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b self name) (ltxa ltxb y rndx) (x expt))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (y y) (x x))
+  (defstrand ltx-gen 1 (self self) (l ltxa))
+  (non-orig ltxa)
+  (uniq-orig nb)
+  (uniq-gen ltxa y)
+  (absent (y ltxa) (y ltxb) (y x))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (recv nb)) ((send (cat self (exp (gen) ltxa)))))
+  (label 84)
+  (unrealized (0 0) (0 3))
+  (preskeleton)
+  (origs (nb (0 2)))
+  (comment "Not a skeleton"))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b self name) (y ltxa ltxb x ltxb-0 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa)
+    (ltxb ltxb-0) (y y) (x (mul ltxb x (rec ltxb-0))))
+  (defstrand ltx-gen 1 (self self) (l ltxa))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (x x) (y y))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
+    ((2 3) (0 3)))
+  (non-orig ltxa)
+  (uniq-orig na nb)
+  (uniq-gen y ltxa x)
+  (absent (y ltxa) (y (mul ltxb x (rec ltxb-0))) (y ltxb-0) (x ltxa)
+    (x ltxb))
+  (operation nonce-test (displaced 3 0 resp 3) (exp (gen) y) (2 2))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb-0)))
+      (recv (cat na a b (exp (gen) (mul ltxb x (rec ltxb-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul ltxb x))))))
+      (recv nb)) ((send (cat self (exp (gen) ltxa))))
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul ltxb x))))))
+      (send nb)))
+  (label 88)
+  (parent 84)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ltxa ltxa) (ltxb ltxb-0) (a a) (b b) (y y)
+        (x (mul ltxb x (rec ltxb-0))) (na na) (nb nb) (self self))))
+  (origs (nb (0 2)) (na (2 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-umx diffie-hellman
+  (defrole init
+    (vars (ltxa ltxb x rndx) (y expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x ltxa) (x ltxb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) y) (gen))))
+  (defrole resp
+    (vars (ltxa ltxb y rndx) (x expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y ltxa) (y ltxb) (y x))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) x) (gen))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx))
+    (trace (send (cat self (exp (gen) l))) (recv "end-of-protocol")
+      (send l))
+    (uniq-gen l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b self name) (ltxa ltxb y rndx) (x expt))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (y y) (x x))
+  (defstrand ltx-gen 1 (self self) (l ltxa))
+  (non-orig ltxa)
+  (uniq-orig nb)
+  (uniq-gen ltxa y)
+  (absent (y ltxa) (y ltxb) (y x))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (recv nb)) ((send (cat self (exp (gen) ltxa)))))
+  (label 94)
+  (unrealized (0 0) (0 3))
+  (preskeleton)
+  (origs (nb (0 2)))
+  (comment "Not a skeleton"))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b self name) (y ltxa ltxb x ltxb-0 rndx))
+  (defstrand resp 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa)
+    (ltxb ltxb-0) (y y) (x (mul ltxb x (rec ltxb-0))))
+  (defstrand ltx-gen 1 (self self) (l ltxa))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (x x) (y y))
+  (precedes ((0 2) (2 2)) ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 1))
+    ((2 3) (0 3)))
+  (non-orig ltxa)
+  (uniq-orig na nb)
+  (uniq-gen y ltxa x)
+  (absent (y ltxa) (y (mul ltxb x (rec ltxb-0))) (y ltxb-0) (x ltxa)
+    (x ltxb))
+  (operation nonce-test (displaced 3 0 resp 3) (exp (gen) y) (2 2))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb-0)))
+      (recv (cat na a b (exp (gen) (mul ltxb x (rec ltxb-0)))))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul ltxb x))))))
+      (recv nb)) ((send (cat self (exp (gen) ltxa))))
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y ltxa)) (exp (gen) (mul ltxb x))))))
+      (send nb)))
+  (label 98)
+  (parent 94)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ltxa ltxa) (ltxb ltxb-0) (a a) (b b) (y y)
+        (x (mul ltxb x (rec ltxb-0))) (na na) (nb nb) (self self))))
+  (origs (nb (0 2)) (na (2 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhcr-umx diffie-hellman
+  (defrole init
+    (vars (ltxa ltxb x rndx) (y expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (send nb))
+    (uniq-orig na)
+    (uniq-gen x)
+    (absent (x ltxa) (x ltxb))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) y) (gen))))
+  (defrole resp
+    (vars (ltxa ltxb y rndx) (x expt) (a b name) (na nb data))
+    (trace (recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (recv nb))
+    (uniq-orig nb)
+    (uniq-gen y)
+    (absent (y ltxa) (y ltxb) (y x))
+    (fn-of ("principal-of" (ltxa a) (ltxb b))
+      ("ltx-of" (a ltxa) (b ltxb)))
+    (neq ((exp (gen) x) (gen))))
+  (defrole ltx-gen
+    (vars (self name) (l rndx))
+    (trace (send (cat self (exp (gen) l))) (recv "end-of-protocol")
+      (send l))
+    (uniq-gen l)
+    (fn-of ("principal-of" (l self)) ("ltx-of" (self l))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b self self-0 name) (ltxa ltxb x rndx) (y expt))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa ltxa) (ltxb ltxb)
+    (x x) (y y))
+  (deflistener (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))
+  (defstrand ltx-gen 3 (self self) (l ltxa))
+  (defstrand ltx-gen 3 (self self-0) (l ltxb))
+  (precedes ((0 3) (2 1)) ((0 3) (3 1)))
+  (uniq-orig na)
+  (uniq-gen ltxa ltxb x)
+  (absent (x ltxa) (x ltxb))
+  (traces
+    ((recv (cat (exp (gen) ltxa) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))))
+      (send nb))
+    ((recv (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x))))
+      (send (hash (exp (gen) (mul ltxa y)) (exp (gen) (mul ltxb x)))))
+    ((send (cat self (exp (gen) ltxa))) (recv "end-of-protocol")
+      (send ltxa))
+    ((send (cat self-0 (exp (gen) ltxb))) (recv "end-of-protocol")
+      (send ltxb)))
+  (label 104)
+  (unrealized (0 0) (0 2) (1 0))
+  (preskeleton)
+  (origs (na (0 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b self name) (y ltxb l rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa l) (ltxb l)
+    (x ltxb) (y y))
+  (deflistener (hash (exp (gen) (mul y l)) (exp (gen) (mul ltxb l))))
+  (defstrand ltx-gen 3 (self self) (l l))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (ltxa l) (ltxb ltxb)
+    (y y) (x l))
+  (precedes ((0 1) (3 0)) ((0 3) (2 1)) ((2 0) (0 0)) ((2 2) (1 0))
+    ((3 2) (0 2)))
+  (uniq-orig na nb)
+  (uniq-gen y ltxb l)
+  (absent (y ltxb) (y l) (ltxb l))
+  (operation generalization deleted (3 0))
+  (traces
+    ((recv (cat (exp (gen) l) (exp (gen) l)))
+      (send (cat na a b (exp (gen) ltxb)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul ltxb l))))))
+      (send nb))
+    ((recv (hash (exp (gen) (mul y l)) (exp (gen) (mul ltxb l))))
+      (send (hash (exp (gen) (mul y l)) (exp (gen) (mul ltxb l)))))
+    ((send (cat self (exp (gen) l))) (recv "end-of-protocol") (send l))
+    ((recv (cat (exp (gen) l) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) l)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul ltxb l))))))))
+  (label 171)
+  (parent 104)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 2 2)
+      ((ltxa l) (ltxb l) (x ltxb) (y y) (a a) (b b) (na na) (nb nb)
+        (self self) (self-0 self))))
+  (origs (nb (3 2)) (na (0 1))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b self name) (y l x rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa l) (ltxb l) (x x)
+    (y y))
+  (deflistener (hash (exp (gen) (mul y l)) (exp (gen) (mul l x))))
+  (defstrand ltx-gen 3 (self self) (l l))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (ltxa l) (ltxb l) (y y)
+    (x x))
+  (precedes ((0 1) (3 1)) ((0 3) (2 1)) ((2 0) (0 0)) ((2 0) (3 0))
+    ((2 2) (1 0)) ((3 2) (0 2)))
+  (uniq-orig na nb)
+  (uniq-gen y l x)
+  (absent (y l) (y x) (x l))
+  (operation generalization deleted (3 0))
+  (traces
+    ((recv (cat (exp (gen) l) (exp (gen) l)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul l x))))))
+      (send nb))
+    ((recv (hash (exp (gen) (mul y l)) (exp (gen) (mul l x))))
+      (send (hash (exp (gen) (mul y l)) (exp (gen) (mul l x)))))
+    ((send (cat self (exp (gen) l))) (recv "end-of-protocol") (send l))
+    ((recv (cat (exp (gen) l) (exp (gen) l)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul l x))))))))
+  (label 172)
+  (parent 104)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 2 2)
+      ((ltxa l) (ltxb l) (x x) (y y) (a a) (b b) (na na) (nb nb)
+        (self self) (self-0 self))))
+  (origs (nb (3 2)) (na (0 1))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b self self-0 name) (y ltxb l l-0 rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa l-0) (ltxb l)
+    (x ltxb) (y y))
+  (deflistener (hash (exp (gen) (mul y l-0)) (exp (gen) (mul ltxb l))))
+  (defstrand ltx-gen 3 (self self) (l l-0))
+  (defstrand ltx-gen 3 (self self-0) (l l))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (ltxa l-0) (ltxb ltxb)
+    (y y) (x l))
+  (precedes ((0 1) (4 0)) ((0 3) (2 1)) ((0 3) (3 1)) ((2 0) (0 0))
+    ((2 2) (1 0)) ((3 0) (0 0)) ((3 2) (1 0)) ((4 2) (0 2)))
+  (uniq-orig na nb)
+  (uniq-gen y ltxb l l-0)
+  (absent (y ltxb) (y l) (y l-0) (ltxb l) (ltxb l-0))
+  (operation generalization deleted (5 0))
+  (traces
+    ((recv (cat (exp (gen) l-0) (exp (gen) l)))
+      (send (cat na a b (exp (gen) ltxb)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul ltxb l))))))
+      (send nb))
+    ((recv (hash (exp (gen) (mul y l-0)) (exp (gen) (mul ltxb l))))
+      (send (hash (exp (gen) (mul y l-0)) (exp (gen) (mul ltxb l)))))
+    ((send (cat self (exp (gen) l-0))) (recv "end-of-protocol")
+      (send l-0))
+    ((send (cat self-0 (exp (gen) l))) (recv "end-of-protocol")
+      (send l))
+    ((recv (cat (exp (gen) l-0) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) l)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l-0)) (exp (gen) (mul ltxb l))))))))
+  (label 177)
+  (parent 104)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 2 3)
+      ((ltxa l-0) (ltxb l) (x ltxb) (y y) (a a) (b b) (na na) (nb nb)
+        (self self) (self-0 self-0))))
+  (origs (nb (4 2)) (na (0 1))))
+
+(defskeleton dhcr-umx
+  (vars (na nb data) (a b self self-0 name) (y ltxb x l rndx))
+  (defstrand init 4 (na na) (nb nb) (a a) (b b) (ltxa l) (ltxb ltxb)
+    (x x) (y y))
+  (deflistener (hash (exp (gen) (mul y l)) (exp (gen) (mul ltxb x))))
+  (defstrand ltx-gen 3 (self self) (l l))
+  (defstrand ltx-gen 3 (self self-0) (l ltxb))
+  (defstrand resp 3 (na na) (nb nb) (a a) (b b) (ltxa l) (ltxb ltxb)
+    (y y) (x x))
+  (precedes ((0 1) (4 1)) ((0 3) (2 1)) ((0 3) (3 1)) ((2 0) (0 0))
+    ((2 0) (4 0)) ((2 2) (1 0)) ((3 0) (0 0)) ((3 0) (4 0))
+    ((3 2) (1 0)) ((4 2) (0 2)))
+  (uniq-orig na nb)
+  (uniq-gen y ltxb x l)
+  (absent (y ltxb) (y x) (y l) (x ltxb) (x l))
+  (operation generalization deleted (5 0))
+  (traces
+    ((recv (cat (exp (gen) l) (exp (gen) ltxb)))
+      (send (cat na a b (exp (gen) x)))
+      (recv
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul ltxb x))))))
+      (send nb))
+    ((recv (hash (exp (gen) (mul y l)) (exp (gen) (mul ltxb x))))
+      (send (hash (exp (gen) (mul y l)) (exp (gen) (mul ltxb x)))))
+    ((send (cat self (exp (gen) l))) (recv "end-of-protocol") (send l))
+    ((send (cat self-0 (exp (gen) ltxb))) (recv "end-of-protocol")
+      (send ltxb))
+    ((recv (cat (exp (gen) l) (exp (gen) ltxb)))
+      (recv (cat na a b (exp (gen) x)))
+      (send
+        (cat (exp (gen) y)
+          (enc na nb a b
+            (hash (exp (gen) (mul y l)) (exp (gen) (mul ltxb x))))))))
+  (label 178)
+  (parent 104)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 2 3)
+      ((ltxa l) (ltxb ltxb) (x x) (y y) (a a) (b b) (na na) (nb nb)
+        (self self) (self-0 self-0))))
+  (origs (nb (4 2)) (na (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/dhke2.lisp b/tst/dhke2.lisp
deleted file mode 100644
--- a/tst/dhke2.lisp
+++ /dev/null
@@ -1,108 +0,0 @@
-(herald "Diffie-Hellman Key Exchange" (algebra diffie-hellman2))
-
-;; The Diffie-Hellman problem is given (exp (gen) x), and (exp (gen)
-;; y), compute the value of (exp (exp (gen) x) y) which is also (exp
-;; (exp (gen) y) x).
-
-(defprotocol dhke diffie-hellman2
-  (defrole init (vars (a b name) (x expn) (h base))
-    (trace
-     (send (enc "i" (exp (gen) x) (privk a)))
-     (recv (cat (enc h (privk b)) (enc a b (exp h x))))
-     (send (enc "i" a b (exp h x))))
-    (uniq-orig  (exp (gen) x)))
-  (defrole resp (vars (a b name) (y expn) (h base))
-    (trace
-     (recv (enc "i" h (privk a)))
-     (send (cat (enc (exp (gen) y) (privk b)) (enc a b (exp h y))))
-     (recv (enc "i" a b (exp h y))))
-    (uniq-orig (exp (gen) y))))
-
-(defskeleton dhke (vars (a b name) (y expn) (h base))
-  (defstrand resp 3 (a a) (b b) (y y) (h h))
-  (non-orig (privk a) (privk b))
-  (pen-non-orig (exp h y)))
-
- (defskeleton dhke (vars (a b name))
-   (defstrand init 2 (a a) (b b))
-   (non-orig (privk a) (privk b)))
-
-(defprotocol dh-mim diffie-hellman2
-  (defrole init
-    (vars (x expn) (h base) (n text))
-    (trace
-     (send (exp (gen) x))
-     (recv h)
-     (send (enc n (exp h x))))
-    (uniq-orig n (exp (gen) x)))
-  (defrole resp
-    (vars (y expn) (h base) (n text))
-    (trace
-     (recv h)
-     (send (exp (gen) y))
-     (recv (enc n (exp h y))))
-    (uniq-orig (exp (gen) y)))
-  (comment "Diffie-Hellman without signatures"
-	   "has a man-in-the-middle attack"))
-
-(defskeleton dh-mim
-  (vars (n text))
-  (defstrand init 3 (n n))
-  (deflistener n)
-  (uniq-orig n))
-
-;; Protocols using variables of sort base
-
-(comment
-(defprotocol dhke-with-base-vars diffie-hellman
-  (defrole init (vars (a b name) (g base) (x expn))
-    (trace
-     (send (enc "i" (exp (gen) x) (privk a)))
-     (recv (cat (enc g (privk b)) (enc a b (exp g x))))
-     (send (enc "i" a b (exp g x))))
-    (uniq-orig  x))
-  (defrole resp (vars (a b name) (h base) (y expn))
-    (trace
-     (recv (enc "i" h (privk a)))
-     (send (cat (enc (exp (gen) y) (privk b)) (enc a b (exp h y))))
-     (recv (enc "i" a b (exp h y))))
-    (uniq-orig y)))
-
-(defskeleton dhke-with-base-vars (vars (a b name))
-  (defstrand resp 3 (a a) (b b))
-  (non-orig (privk a) (privk b)))
-
- (defskeleton dhke-with-base-vars (vars (a b name))
-   (defstrand init 2 (a a) (b b))
-   (non-orig (privk a) (privk b)))
-
-(defprotocol dh-mim-with-base-vars diffie-hellman
-  (defrole init
-    (vars (x expn) (hy base) (n text))
-    (trace
-     (send (exp (gen) x))
-     (recv hy)
-     (send (enc n (exp hy x))))
-    (uniq-orig n x))
-  (defrole resp
-    (vars (y expn) (hx base) (n text))
-    (trace
-     (recv hx)
-     (send (exp (gen) y))
-     (recv (enc n (exp hx y))))
-    (uniq-orig y))
-  (comment "Diffie-Hellman without signatures"
-	   "has a man-in-the-middle attack"))
-
-(defskeleton dh-mim-with-base-vars
-  (vars (n text))
-  (defstrand init 3 (n n))
-  (defstrand resp 3 (n n))
-  (uniq-orig n))
-
-(defskeleton dh-mim-with-base-vars
-  (vars (n text))
-  (defstrand init 3 (n n))
-  (deflistener n)
-  (uniq-orig n))
-)
diff --git a/tst/dhnsl_hack.tst b/tst/dhnsl_hack.tst
--- a/tst/dhnsl_hack.tst
+++ b/tst/dhnsl_hack.tst
@@ -1,7 +1,7 @@
 (herald "Diffie-Hellman enhanced Needham-Schroeder-Lowe Protocol"
   (algebra basic))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/dhnsl_hack.scm")
 
 (defprotocol dhnsl basic
@@ -55,6 +55,7 @@
   (uniq-orig gx gy gz-0)
   (operation encryption-test (added-strand resp 2)
     (enc "dh" gy gx dhkey) (0 1))
+  (strand-map 0)
   (traces
     ((send (enc gx a (pubk b)))
       (recv (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
@@ -75,6 +76,7 @@
   (uniq-orig gx gy gz-0)
   (operation nonce-test (contracted (b-0 b) (a-0 a)) gx (1 0)
     (enc gx a (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send (enc gx a (pubk b)))
       (recv (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
@@ -100,6 +102,7 @@
   (uniq-orig gx gy gz-0 gy-0 gz-1)
   (operation nonce-test (added-strand resp 2) gx (1 0)
     (enc gx a (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send (enc gx a (pubk b)))
       (recv (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
@@ -123,6 +126,7 @@
   (operation encryption-test (contracted (gz-0 gz))
     (enc "dh" gy gx dhkey) (0 1)
     (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc gx a (pubk b)))
       (recv (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
@@ -149,6 +153,7 @@
   (operation nonce-test (contracted (b-0 b) (a-0 a)) gx (1 0)
     (enc gx a (pubk b))
     (enc gy-0 (enc "dh" gy-0 gx dhkey-0) gz-1 b (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc gx a (pubk b)))
       (recv (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
@@ -175,6 +180,7 @@
   (operation encryption-test (contracted (gz-1 gz))
     (enc "dh" gy gx dhkey) (0 1)
     (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc gx a (pubk b)))
       (recv (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
@@ -186,6 +192,8 @@
   (label 6)
   (parent 5)
   (seen 4)
+  (seen-ops
+    (4 (operation generalization deleted (2 0)) (strand-map 0 1)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -242,6 +250,7 @@
   (uniq-orig gx gy gz)
   (operation encryption-test (added-strand init 3)
     (enc "dh" gz gx dhkey) (0 2))
+  (strand-map 0)
   (traces
     ((recv (enc gx a (pubk b)))
       (send (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
@@ -261,6 +270,7 @@
   (uniq-orig gy)
   (operation encryption-test (displaced 1 0 resp 2)
     (enc "dh" gz gx dhkey) (0 2))
+  (strand-map 0)
   (traces
     ((recv (enc gx a (pubk b)))
       (send (enc gy (enc "dh" gy gx dhkey) gy b (pubk a)))
@@ -281,6 +291,7 @@
   (uniq-orig gx gy gz)
   (operation encryption-test (displaced 2 0 resp 2)
     (enc "dh" h2 gx dhkey) (1 1))
+  (strand-map 0 1)
   (traces
     ((recv (enc gx a (pubk b)))
       (send (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
@@ -307,6 +318,7 @@
   (uniq-orig gx gy gz h2 gz-0)
   (operation encryption-test (added-strand resp 2)
     (enc "dh" h2 gx dhkey) (1 1))
+  (strand-map 0 1)
   (traces
     ((recv (enc gx a (pubk b)))
       (send (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
@@ -333,6 +345,7 @@
   (operation encryption-test (added-strand init 3)
     (enc "dh" gy gx dhkey) (0 2)
     (enc gy (enc "dh" gy gx dhkey) gy b (pubk a)))
+  (strand-map 0)
   (traces
     ((recv (enc gx a (pubk b)))
       (send (enc gy (enc "dh" gy gx dhkey) gy b (pubk a)))
@@ -355,6 +368,7 @@
   (operation encryption-test (contracted (a-0 a) (b-0 b))
     (enc "dh" gy gx dhkey) (1 1)
     (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
+  (strand-map 0 1)
   (traces
     ((recv (enc gx a (pubk b)))
       (send (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
@@ -379,6 +393,7 @@
   (uniq-orig gx gy)
   (operation encryption-test (displaced 2 0 resp 2)
     (enc "dh" h2 gx dhkey) (1 1))
+  (strand-map 0 1)
   (traces
     ((recv (enc gx a (pubk b)))
       (send (enc gy (enc "dh" gy gx dhkey) gy b (pubk a)))
@@ -404,6 +419,7 @@
   (uniq-orig gx gy h2 gz)
   (operation encryption-test (added-strand resp 2)
     (enc "dh" h2 gx dhkey) (1 1))
+  (strand-map 0 1)
   (traces
     ((recv (enc gx a (pubk b)))
       (send (enc gy (enc "dh" gy gx dhkey) gy b (pubk a)))
@@ -429,6 +445,7 @@
   (operation encryption-test (contracted (a-0 a) (b-0 b))
     (enc "dh" gy gx dhkey) (1 1)
     (enc gy (enc "dh" gy gx dhkey) gy b (pubk a)))
+  (strand-map 0 1)
   (traces
     ((recv (enc gx a (pubk b)))
       (send (enc gy (enc "dh" gy gx dhkey) gy b (pubk a)))
@@ -439,6 +456,8 @@
   (label 16)
   (parent 14)
   (seen 13)
+  (seen-ops
+    (13 (operation generalization separated gy-0) (strand-map 0 1)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/dhnsl_hack_shapes.tst b/tst/dhnsl_hack_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/dhnsl_hack_shapes.tst
@@ -0,0 +1,142 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Diffie-Hellman enhanced Needham-Schroeder-Lowe Protocol"
+  (algebra basic))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/dhnsl_hack.scm")
+
+(defprotocol dhnsl basic
+  (defrole init
+    (vars (a b name) (h2 h3 gx akey) (dhkey skey))
+    (trace (send (enc gx a (pubk b)))
+      (recv (enc h2 (enc "dh" h2 gx dhkey) h3 b (pubk a)))
+      (send (enc (enc "dh" h3 gx dhkey) (pubk b))))
+    (non-orig dhkey (invk gx))
+    (uniq-orig gx)
+    (comment "X should be assumed to be freshly chosen per role"))
+  (defrole resp
+    (vars (b a name) (h1 gy gz akey) (dhkey skey))
+    (trace (recv (enc h1 a (pubk b)))
+      (send (enc gy (enc "dh" gy h1 dhkey) gz b (pubk a)))
+      (recv (enc (enc "dh" gz h1 dhkey) (pubk b))))
+    (non-orig dhkey (invk gy) (invk gz))
+    (uniq-orig gy gz)
+    (comment "Y and Z should be assumed to be freshly chosen per role"))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Needham-Schroeder-Lowe DH challenge/responses in place of nonces"))
+
+(defskeleton dhnsl
+  (vars (dhkey skey) (gx gy gz akey) (a b name))
+  (defstrand init 3 (dhkey dhkey) (h2 gy) (h3 gz) (gx gx) (a a) (b b))
+  (non-orig dhkey (invk gx) (privk a) (privk b))
+  (uniq-orig gx)
+  (comment "Initiator point-of-view")
+  (traces
+    ((send (enc gx a (pubk b)))
+      (recv (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
+      (send (enc (enc "dh" gz gx dhkey) (pubk b)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (gx (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton dhnsl
+  (vars (dhkey skey) (gx gy gz akey) (a b name))
+  (defstrand init 3 (dhkey dhkey) (h2 gy) (h3 gz) (gx gx) (a a) (b b))
+  (defstrand resp 2 (dhkey dhkey) (h1 gx) (gy gy) (gz gz) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig dhkey (invk gx) (invk gy) (invk gz) (privk a) (privk b))
+  (uniq-orig gx gy gz)
+  (operation encryption-test (contracted (gz-0 gz))
+    (enc "dh" gy gx dhkey) (0 1)
+    (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
+  (traces
+    ((send (enc gx a (pubk b)))
+      (recv (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
+      (send (enc (enc "dh" gz gx dhkey) (pubk b))))
+    ((recv (enc gx a (pubk b)))
+      (send (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))))
+  (label 4)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (gx gx) (gy gy) (gz gz) (dhkey dhkey))))
+  (origs (gy (1 1)) (gz (1 1)) (gx (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhnsl basic
+  (defrole init
+    (vars (a b name) (h2 h3 gx akey) (dhkey skey))
+    (trace (send (enc gx a (pubk b)))
+      (recv (enc h2 (enc "dh" h2 gx dhkey) h3 b (pubk a)))
+      (send (enc (enc "dh" h3 gx dhkey) (pubk b))))
+    (non-orig dhkey (invk gx))
+    (uniq-orig gx)
+    (comment "X should be assumed to be freshly chosen per role"))
+  (defrole resp
+    (vars (b a name) (h1 gy gz akey) (dhkey skey))
+    (trace (recv (enc h1 a (pubk b)))
+      (send (enc gy (enc "dh" gy h1 dhkey) gz b (pubk a)))
+      (recv (enc (enc "dh" gz h1 dhkey) (pubk b))))
+    (non-orig dhkey (invk gy) (invk gz))
+    (uniq-orig gy gz)
+    (comment "Y and Z should be assumed to be freshly chosen per role"))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Needham-Schroeder-Lowe DH challenge/responses in place of nonces"))
+
+(defskeleton dhnsl
+  (vars (dhkey skey) (gx gy gz akey) (a b name))
+  (defstrand resp 3 (dhkey dhkey) (h1 gx) (gy gy) (gz gz) (b b) (a a))
+  (non-orig dhkey (invk gy) (invk gz) (privk a))
+  (uniq-orig gy gz)
+  (comment "Responder point-of-view")
+  (traces
+    ((recv (enc gx a (pubk b)))
+      (send (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
+      (recv (enc (enc "dh" gz gx dhkey) (pubk b)))))
+  (label 7)
+  (unrealized (0 2))
+  (origs (gz (0 1)) (gy (0 1)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton dhnsl
+  (vars (dhkey skey) (gx gy gz akey) (a b name))
+  (defstrand resp 3 (dhkey dhkey) (h1 gx) (gy gy) (gz gz) (b b) (a a))
+  (defstrand init 3 (dhkey dhkey) (h2 gy) (h3 gz) (gx gx) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
+  (non-orig dhkey (invk gx) (invk gy) (invk gz) (privk a))
+  (uniq-orig gx gy gz)
+  (operation encryption-test (contracted (a-0 a) (b-0 b))
+    (enc "dh" gy gx dhkey) (1 1)
+    (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
+  (traces
+    ((recv (enc gx a (pubk b)))
+      (send (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
+      (recv (enc (enc "dh" gz gx dhkey) (pubk b))))
+    ((send (enc gx a (pubk b)))
+      (recv (enc gy (enc "dh" gy gx dhkey) gz b (pubk a)))
+      (send (enc (enc "dh" gz gx dhkey) (pubk b)))))
+  (label 13)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (gx gx) (gy gy) (gz gz) (dhkey dhkey))))
+  (origs (gy (0 1)) (gz (0 1)) (gx (1 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/dhstatic-state.scm b/tst/dhstatic-state.scm
--- a/tst/dhstatic-state.scm
+++ b/tst/dhstatic-state.scm
@@ -27,12 +27,12 @@
 
   (defrole init
     (vars (a b ca name) (ra rndx) (serial-a serial-b data)
-	  (galpha base) (n text) (static-key locn))
+	  (alpha expt) (n text) (static-key locn))
     (trace
      (load static-key (cat "privkey" a ra serial-a ca))
-     (recv (sig (cert b galpha ca serial-b)
+     (recv (sig (cert b (exp (gen) alpha) ca serial-b)
 		(privk "sig" ca)))
-     (send (enc n a b serial-a serial-b (exp galpha ra)))
+     (send (enc n a b serial-a serial-b (exp (exp (gen) alpha) ra)))
      (recv n))
     (uniq-orig n)
     (gen-st (cat "privkey" a ra serial-a ca))
@@ -41,12 +41,12 @@
 
   (defrole resp
     (vars (a b ca name) (rb rndx) (serial-b serial-a data)
-	  (galpha base) (n text) (static-key locn))
+	  (alpha expt) (n text) (static-key locn))
     (trace
      (load static-key (cat "privkey" b rb serial-b ca))
-     (recv (sig (cert a galpha ca serial-a)
+     (recv (sig (cert a (exp (gen) alpha) ca serial-a)
 		(privk "sig" ca)))
-     (recv (enc n a b serial-a serial-b (exp galpha rb)))
+     (recv (enc n a b serial-a serial-b (exp (exp (gen) alpha) rb)))
      (send n))
     (facts (neq a b))
     (gen-st (cat "privkey" b rb serial-b ca))
diff --git a/tst/dhstatic-state.tst b/tst/dhstatic-state.tst
--- a/tst/dhstatic-state.tst
+++ b/tst/dhstatic-state.tst
@@ -1,6 +1,6 @@
 (herald dhstatic-state (algebra diffie-hellman) (bound 16))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/dhstatic-state.scm")
 (comment "Strand count bounded at 16")
 
@@ -22,21 +22,25 @@
     (uniq-gen ra)
     (comment "Get certified"))
   (defrole init
-    (vars (a b ca name) (ra rndx) (serial-a serial-b data) (galpha base)
+    (vars (a b ca name) (ra rndx) (serial-a serial-b data) (alpha expt)
       (n text) (static-key locn))
     (trace (load static-key (cat "privkey" a ra serial-a ca))
-      (recv (sig (cert b galpha ca serial-b) (privk "sig" ca)))
-      (send (enc n a b serial-a serial-b (exp galpha ra))) (recv n))
+      (recv
+        (sig (cert b (exp (gen) alpha) ca serial-b) (privk "sig" ca)))
+      (send (enc n a b serial-a serial-b (exp (gen) (mul ra alpha))))
+      (recv n))
     (uniq-orig n)
     (gen-st (cat "privkey" a ra serial-a ca))
     (facts (neq a b))
     (comment "Initiator is A"))
   (defrole resp
-    (vars (a b ca name) (rb rndx) (serial-b serial-a data) (galpha base)
+    (vars (a b ca name) (rb rndx) (serial-b serial-a data) (alpha expt)
       (n text) (static-key locn))
     (trace (load static-key (cat "privkey" b rb serial-b ca))
-      (recv (sig (cert a galpha ca serial-a) (privk "sig" ca)))
-      (recv (enc n a b serial-a serial-b (exp galpha rb))) (send n))
+      (recv
+        (sig (cert a (exp (gen) alpha) ca serial-a) (privk "sig" ca)))
+      (recv (enc n a b serial-a serial-b (exp (gen) (mul rb alpha))))
+      (send n))
     (facts (neq a b))
     (gen-st (cat "privkey" b rb serial-b ca))
     (comment "Responder is B"))
@@ -110,15 +114,17 @@
 
 (defskeleton dhstatic-state
   (vars (serial-a serial-b data) (n text) (ca b a name) (pt pval)
-    (galpha base) (static-key locn) (ra rndx))
+    (static-key locn) (ra rndx) (alpha expt))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha galpha) (static-key static-key) (ra ra))
+    (b b) (ca ca) (static-key static-key) (ra ra) (alpha alpha))
   (non-orig (privk "sig" ca) (privk "sig" b))
   (uniq-orig n)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
-      (recv (sig (cert b galpha ca serial-b) (privk "sig" ca)))
-      (send (enc n a b serial-a serial-b (exp galpha ra))) (recv n)))
+      (recv
+        (sig (cert b (exp (gen) alpha) ca serial-b) (privk "sig" ca)))
+      (send (enc n a b serial-a serial-b (exp (gen) (mul ra alpha))))
+      (recv n)))
   (label 0)
   (unrealized (0 1))
   (origs (n (0 2)))
@@ -126,9 +132,9 @@
 
 (defskeleton dhstatic-state
   (vars (serial-a serial-b data) (n text) (ca b a name) (pt pval)
-    (galpha base) (static-key locn) (ra rndx))
+    (static-key locn) (ra rndx) (alpha expt))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha galpha) (static-key static-key) (ra ra))
+    (b b) (ca ca) (static-key static-key) (ra ra) (alpha alpha))
   (non-orig (privk "sig" ca) (privk "sig" b))
   (uniq-orig n)
   (gen-st (cat "privkey" a ra serial-a ca))
@@ -136,8 +142,10 @@
   (rule fact-init-neq0 fact-resp-neq0 gen-st-resp-0)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
-      (recv (sig (cert b galpha ca serial-b) (privk "sig" ca)))
-      (send (enc n a b serial-a serial-b (exp galpha ra))) (recv n)))
+      (recv
+        (sig (cert b (exp (gen) alpha) ca serial-b) (privk "sig" ca)))
+      (send (enc n a b serial-a serial-b (exp (gen) (mul ra alpha))))
+      (recv n)))
   (label 1)
   (parent 0)
   (unrealized (0 0) (0 1))
@@ -146,9 +154,9 @@
 
 (defskeleton dhstatic-state
   (vars (ignore mesg) (serial-a serial-b data) (n text) (ca b a name)
-    (pt pt-0 pval) (galpha base) (static-key locn) (ra rndx))
+    (pt pt-0 pval) (static-key locn) (alpha expt) (ra rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha galpha) (static-key static-key) (ra ra))
+    (b b) (ca ca) (static-key static-key) (ra ra) (alpha alpha))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra))
   (precedes ((1 3) (0 0)))
@@ -162,24 +170,27 @@
     trRl_get-cert-at-3)
   (operation channel-test (added-strand get-cert 4)
     (ch-msg static-key (cat pt "privkey" a ra serial-a ca)) (0 0))
+  (strand-map 0)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
-      (recv (sig (cert b galpha ca serial-b) (privk "sig" ca)))
-      (send (enc n a b serial-a serial-b (exp galpha ra))) (recv n))
+      (recv
+        (sig (cert b (exp (gen) alpha) ca serial-b) (privk "sig" ca)))
+      (send (enc n a b serial-a serial-b (exp (gen) (mul alpha ra))))
+      (recv n))
     ((send (sig (cert-req a (exp (gen) ra) ca) (privk "sig" a)))
       (recv (sig (cert a (exp (gen) ra) ca serial-a) (privk "sig" ca)))
       (load static-key (cat pt-0 ignore))
       (stor static-key (cat pt "privkey" a ra serial-a ca))))
   (label 2)
   (parent 1)
-  (unrealized (0 1) (0 3) (1 1))
+  (unrealized (0 1) (1 1))
   (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton dhstatic-state
   (vars (ignore mesg) (serial-a serial-b data) (n text) (ca b a name)
-    (pt pt-0 pval) (galpha base) (static-key locn) (ra rndx))
+    (pt pt-0 pval) (static-key locn) (alpha expt) (ra rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha galpha) (static-key static-key) (ra ra))
+    (b b) (ca ca) (static-key static-key) (ra ra) (alpha alpha))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -195,10 +206,13 @@
     trRl_get-cert-at-3)
   (operation encryption-test (added-strand cert 2)
     (sig (cert a (exp (gen) ra) ca serial-a) (privk "sig" ca)) (1 1))
+  (strand-map 0 1)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
-      (recv (sig (cert b galpha ca serial-b) (privk "sig" ca)))
-      (send (enc n a b serial-a serial-b (exp galpha ra))) (recv n))
+      (recv
+        (sig (cert b (exp (gen) alpha) ca serial-b) (privk "sig" ca)))
+      (send (enc n a b serial-a serial-b (exp (gen) (mul alpha ra))))
+      (recv n))
     ((send (sig (cert-req a (exp (gen) ra) ca) (privk "sig" a)))
       (recv (sig (cert a (exp (gen) ra) ca serial-a) (privk "sig" ca)))
       (load static-key (cat pt-0 ignore))
@@ -208,19 +222,20 @@
         (sig (cert a (exp (gen) ra) ca serial-a) (privk "sig" ca)))))
   (label 3)
   (parent 2)
-  (unrealized (0 1) (0 3))
+  (unrealized (0 1))
   (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton dhstatic-state
   (vars (ignore mesg) (serial-a serial-b data) (n text) (ca b a name)
-    (pt pt-0 pval) (galpha base) (static-key locn) (ra rndx))
+    (pt pt-0 pval) (static-key locn) (alpha expt) (ra rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha galpha) (static-key static-key) (ra ra))
+    (b b) (ca ca) (static-key static-key) (ra ra) (alpha alpha))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
     (ca ca))
-  (defstrand cert 2 (galpha galpha) (serial serial-b) (subj b) (ca ca))
+  (defstrand cert 2 (galpha (exp (gen) alpha)) (serial serial-b)
+    (subj b) (ca ca))
   (precedes ((1 0) (2 0)) ((1 3) (0 0)) ((2 1) (1 1)) ((3 1) (0 1)))
   (non-orig (privk "sig" ca) (privk "sig" b))
   (uniq-orig serial-a serial-b n)
@@ -231,30 +246,33 @@
   (rule fact-init-neq0 fact-resp-neq0 trRl_get-cert-at-2
     trRl_get-cert-at-3)
   (operation encryption-test (added-strand cert 2)
-    (sig (cert b galpha ca serial-b) (privk "sig" ca)) (0 1))
+    (sig (cert b (exp (gen) alpha) ca serial-b) (privk "sig" ca)) (0 1))
+  (strand-map 0 1 2)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
-      (recv (sig (cert b galpha ca serial-b) (privk "sig" ca)))
-      (send (enc n a b serial-a serial-b (exp galpha ra))) (recv n))
+      (recv
+        (sig (cert b (exp (gen) alpha) ca serial-b) (privk "sig" ca)))
+      (send (enc n a b serial-a serial-b (exp (gen) (mul alpha ra))))
+      (recv n))
     ((send (sig (cert-req a (exp (gen) ra) ca) (privk "sig" a)))
       (recv (sig (cert a (exp (gen) ra) ca serial-a) (privk "sig" ca)))
       (load static-key (cat pt-0 ignore))
       (stor static-key (cat pt "privkey" a ra serial-a ca)))
     ((recv (sig (cert-req a (exp (gen) ra) ca) (privk "sig" a)))
       (send (sig (cert a (exp (gen) ra) ca serial-a) (privk "sig" ca))))
-    ((recv (sig (cert-req b galpha ca) (privk "sig" b)))
-      (send (sig (cert b galpha ca serial-b) (privk "sig" ca)))))
+    ((recv (sig (cert-req b (exp (gen) alpha) ca) (privk "sig" b)))
+      (send
+        (sig (cert b (exp (gen) alpha) ca serial-b) (privk "sig" ca)))))
   (label 4)
   (parent 3)
-  (unrealized (0 3) (3 0))
+  (unrealized (3 0))
   (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton dhstatic-state
   (vars (ignore mesg) (serial-a serial-b data) (n text) (ca b a name)
     (pt pt-0 pval) (static-key locn) (ra ra-0 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (ra ra))
+    (b b) (ca ca) (static-key static-key) (ra ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -274,6 +292,7 @@
     trRl_get-cert-at-3)
   (operation encryption-test (added-strand get-cert 1)
     (sig (cert-req b (exp (gen) ra-0) ca) (privk "sig" b)) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
       (recv
@@ -300,8 +319,7 @@
     (ca b a ca-0 name) (pt pt-0 pt-1 pval)
     (static-key static-key-0 locn) (ra ra-0 rb rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (ra ra))
+    (b b) (ca ca) (static-key static-key) (ra ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -310,8 +328,8 @@
     (ca ca))
   (defstrand get-cert 1 (self b) (ca ca) (ra ra-0))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca-0) (galpha (exp (gen) (mul ra ra-0 (rec rb))))
-    (static-key static-key-0) (rb rb))
+    (b b) (ca ca-0) (static-key static-key-0) (rb rb)
+    (alpha (mul ra ra-0 (rec rb))))
   (precedes ((0 2) (5 2)) ((1 0) (2 0)) ((1 3) (0 0)) ((2 1) (1 1))
     ((2 1) (5 1)) ((3 1) (0 1)) ((3 1) (5 0)) ((4 0) (3 0))
     ((5 3) (0 3)))
@@ -326,6 +344,7 @@
     trRl_get-cert-at-3)
   (operation nonce-test (added-strand resp 4) n (0 3)
     (enc n a b serial-a serial-b (exp (gen) (mul ra ra-0))))
+  (strand-map 0 1 2 3 4)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
       (recv
@@ -357,8 +376,7 @@
   (vars (ignore mesg) (serial-a serial-b data) (n text) (ca b a name)
     (pt pt-0 pval) (static-key locn) (ra ra-0 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (ra ra))
+    (b b) (ca ca) (static-key static-key) (ra ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -379,6 +397,7 @@
     trRl_get-cert-at-3)
   (operation nonce-test (added-listener (exp (gen) (mul ra ra-0))) n
     (0 3) (enc n a b serial-a serial-b (exp (gen) (mul ra ra-0))))
+  (strand-map 0 1 2 3 4)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
       (recv
@@ -406,8 +425,7 @@
     (b a ca name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (ra ra))
+    (b b) (ca ca) (static-key static-key) (ra ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -415,8 +433,7 @@
   (defstrand cert 2 (galpha (exp (gen) ra-0)) (serial serial-b) (subj b)
     (ca ca))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra)) (static-key static-key-0)
-    (rb ra-0))
+    (b b) (ca ca) (static-key static-key-0) (rb ra-0) (alpha ra))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-b) (self b)
     (ca ca) (static-key static-key-0) (ra ra-0))
   (precedes ((0 2) (4 2)) ((1 0) (2 0)) ((1 3) (0 0)) ((2 1) (1 1))
@@ -432,6 +449,7 @@
   (rule fact-resp-neq0 trRl_get-cert-at-2 trRl_get-cert-at-3)
   (operation channel-test (displaced 4 6 get-cert 4)
     (ch-msg static-key-0 (cat pt-1 "privkey" b ra-1 serial-b ca)) (5 0))
+  (strand-map 0 1 2 3 5 4)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
       (recv
@@ -463,18 +481,18 @@
   (maps
     ((0)
       ((ca ca) (b b) (a a) (ra ra) (serial-a serial-a)
-        (serial-b serial-b) (galpha (exp (gen) ra-0)) (n n)
+        (serial-b serial-b) (alpha ra-0) (n n)
         (static-key static-key))))
   (origs (pt-1 (5 3)) (serial-b (3 1)) (serial-a (2 1)) (pt (1 3))
-    (n (0 2))))
+    (n (0 2)))
+  (ugens (ra-0 (5 0)) (ra (1 0))))
 
 (defskeleton dhstatic-state
   (vars (ignore ignore-0 mesg) (serial-a serial-b data) (n text)
     (ca b a ca-0 name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 ra-1 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (ra ra))
+    (b b) (ca ca) (static-key static-key) (ra ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -483,8 +501,8 @@
     (ca ca))
   (defstrand get-cert 1 (self b) (ca ca) (ra ra-0))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca-0) (galpha (exp (gen) (mul ra ra-0 (rec ra-1))))
-    (static-key static-key-0) (rb ra-1))
+    (b b) (ca ca-0) (static-key static-key-0) (rb ra-1)
+    (alpha (mul ra ra-0 (rec ra-1))))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-b) (self b)
     (ca ca-0) (static-key static-key-0) (ra ra-1))
   (precedes ((0 2) (5 2)) ((1 0) (2 0)) ((1 3) (0 0)) ((2 1) (1 1))
@@ -501,6 +519,7 @@
   (operation channel-test (added-strand get-cert 4)
     (ch-msg static-key-0 (cat pt-1 "privkey" b ra-1 serial-b ca-0))
     (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
       (recv
@@ -537,8 +556,7 @@
   (vars (ignore mesg) (serial-a serial-b data) (n text) (ca b a name)
     (pt pt-0 pval) (static-key locn) (ra ra-0 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (ra ra))
+    (b b) (ca ca) (static-key static-key) (ra ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -561,6 +579,7 @@
     trRl_get-cert-at-3)
   (operation nonce-test (added-listener (cat (exp (gen) ra) ra-0))
     (exp (gen) (mul ra ra-0)) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
       (recv
@@ -588,8 +607,7 @@
   (vars (ignore mesg) (serial-a serial-b data) (n text) (ca b a name)
     (pt pt-0 pval) (static-key locn) (ra ra-0 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (ra ra))
+    (b b) (ca ca) (static-key static-key) (ra ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -612,6 +630,7 @@
     trRl_get-cert-at-3)
   (operation nonce-test (added-listener (cat (exp (gen) ra-0) ra))
     (exp (gen) (mul ra ra-0)) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
       (recv
@@ -640,8 +659,7 @@
     (ca b a ca-0 name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 ra-1 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (ra ra))
+    (b b) (ca ca) (static-key static-key) (ra ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -650,8 +668,8 @@
     (ca ca))
   (defstrand get-cert 1 (self b) (ca ca) (ra ra-0))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca-0) (galpha (exp (gen) (mul ra ra-0 (rec ra-1))))
-    (static-key static-key-0) (rb ra-1))
+    (b b) (ca ca-0) (static-key static-key-0) (rb ra-1)
+    (alpha (mul ra ra-0 (rec ra-1))))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-b) (self b)
     (ca ca-0) (static-key static-key-0) (ra ra-1))
   (deflistener (cat (exp (gen) (mul ra ra-0)) ra-1))
@@ -670,6 +688,7 @@
   (operation nonce-test
     (added-listener (cat (exp (gen) (mul ra ra-0)) ra-1))
     (exp (gen) (mul ra ra-0 (rec ra-1))) (5 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
       (recv
@@ -709,8 +728,7 @@
     (ca b a ca-0 name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 ra-1 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (ra ra))
+    (b b) (ca ca) (static-key static-key) (ra ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -719,8 +737,8 @@
     (ca ca))
   (defstrand get-cert 1 (self b) (ca ca) (ra ra-0))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca-0) (galpha (exp (gen) (mul ra ra-0 (rec ra-1))))
-    (static-key static-key-0) (rb ra-1))
+    (b b) (ca ca-0) (static-key static-key-0) (rb ra-1)
+    (alpha (mul ra ra-0 (rec ra-1))))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-b) (self b)
     (ca ca-0) (static-key static-key-0) (ra ra-1))
   (deflistener (cat (exp (gen) (mul ra (rec ra-1))) ra-0))
@@ -739,6 +757,7 @@
   (operation nonce-test
     (added-listener (cat (exp (gen) (mul ra (rec ra-1))) ra-0))
     (exp (gen) (mul ra ra-0 (rec ra-1))) (5 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
       (recv
@@ -778,8 +797,7 @@
     (ca b a ca-0 name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 ra-1 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (ra ra))
+    (b b) (ca ca) (static-key static-key) (ra ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -788,8 +806,8 @@
     (ca ca))
   (defstrand get-cert 1 (self b) (ca ca) (ra ra-0))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca-0) (galpha (exp (gen) (mul ra ra-0 (rec ra-1))))
-    (static-key static-key-0) (rb ra-1))
+    (b b) (ca ca-0) (static-key static-key-0) (rb ra-1)
+    (alpha (mul ra ra-0 (rec ra-1))))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-b) (self b)
     (ca ca-0) (static-key static-key-0) (ra ra-1))
   (deflistener (cat (exp (gen) (mul ra-0 (rec ra-1))) ra))
@@ -808,6 +826,7 @@
   (operation nonce-test
     (added-listener (cat (exp (gen) (mul ra-0 (rec ra-1))) ra))
     (exp (gen) (mul ra ra-0 (rec ra-1))) (5 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
       (recv
@@ -847,8 +866,7 @@
     (a self ca name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b self) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (ra ra))
+    (b self) (ca ca) (static-key static-key) (ra ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -871,6 +889,7 @@
   (rule fact-init-neq0 fact-resp-neq0 trRl_get-cert-at-2
     trRl_get-cert-at-3)
   (operation nonce-test (displaced 4 7 get-cert 4) ra-0 (6 0))
+  (strand-map 0 1 2 3 6 4 5)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
       (recv
@@ -903,8 +922,7 @@
   (vars (ignore mesg) (serial-a serial-b data) (n text) (ca b a name)
     (pt pt-0 pval) (static-key locn) (ra ra-0 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra)) (static-key static-key)
-    (ra ra-0))
+    (b b) (ca ca) (static-key static-key) (ra ra-0) (alpha ra))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra-0))
   (defstrand cert 2 (galpha (exp (gen) ra-0)) (serial serial-a) (subj a)
@@ -926,6 +944,7 @@
   (rule fact-init-neq0 fact-resp-neq0 trRl_get-cert-at-2
     trRl_get-cert-at-3)
   (operation nonce-test (displaced 7 1 get-cert 4) ra-0 (6 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((load static-key (cat pt "privkey" a ra-0 serial-a ca))
       (recv (sig (cert b (exp (gen) ra) ca serial-b) (privk "sig" ca)))
@@ -955,8 +974,7 @@
     (ca b a ca-0 name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 ra-1 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (ra ra))
+    (b b) (ca ca) (static-key static-key) (ra ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -965,8 +983,8 @@
     (ca ca))
   (defstrand get-cert 1 (self b) (ca ca) (ra ra-0))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca-0) (galpha (exp (gen) (mul ra ra-0 (rec ra-1))))
-    (static-key static-key-0) (rb ra-1))
+    (b b) (ca ca-0) (static-key static-key-0) (rb ra-1)
+    (alpha (mul ra ra-0 (rec ra-1))))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-b) (self b)
     (ca ca-0) (static-key static-key-0) (ra ra-1))
   (deflistener (cat (exp (gen) (mul ra ra-0)) ra-1))
@@ -983,6 +1001,7 @@
   (leads-to ((1 3) (0 0)) ((6 3) (5 0)))
   (rule fact-resp-neq0 trRl_get-cert-at-2 trRl_get-cert-at-3)
   (operation nonce-test (displaced 8 6 get-cert 4) ra-1 (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
       (recv
@@ -1023,8 +1042,7 @@
     (n text) (a ca self ca-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
     (static-key static-key-0 static-key-1 locn) (ra ra-0 ra-1 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b self) (ca ca-0) (galpha (exp (gen) ra-1)) (static-key static-key)
-    (ra ra))
+    (b self) (ca ca-0) (static-key static-key) (ra ra) (alpha ra-1))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca-0) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -1032,8 +1050,8 @@
   (defstrand cert 2 (galpha (exp (gen) ra-1)) (serial serial-b)
     (subj self) (ca ca-0))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b self) (ca ca) (galpha (exp (gen) (mul ra (rec ra-0) ra-1)))
-    (static-key static-key-0) (rb ra-0))
+    (b self) (ca ca) (static-key static-key-0) (rb ra-0)
+    (alpha (mul ra (rec ra-0) ra-1)))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-b) (self self)
     (ca ca) (static-key static-key-0) (ra ra-0))
   (deflistener (cat (exp (gen) (mul ra (rec ra-0))) ra-1))
@@ -1052,6 +1070,7 @@
   (leads-to ((1 3) (0 0)) ((5 3) (4 0)))
   (rule fact-resp-neq0 trRl_get-cert-at-2 trRl_get-cert-at-3)
   (operation nonce-test (displaced 4 8 get-cert 4) ra-1 (7 0))
+  (strand-map 0 1 2 3 7 4 5 6)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca-0))
       (recv
@@ -1101,8 +1120,7 @@
     (ca b a ca-0 name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 ra-1 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra)) (static-key static-key)
-    (ra ra-1))
+    (b b) (ca ca) (static-key static-key) (ra ra-1) (alpha ra))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra-1))
   (defstrand cert 2 (galpha (exp (gen) ra-1)) (serial serial-a) (subj a)
@@ -1111,8 +1129,8 @@
     (ca ca))
   (defstrand get-cert 1 (self b) (ca ca) (ra ra))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca-0) (galpha (exp (gen) (mul ra (rec ra-0) ra-1)))
-    (static-key static-key-0) (rb ra-0))
+    (b b) (ca ca-0) (static-key static-key-0) (rb ra-0)
+    (alpha (mul ra (rec ra-0) ra-1)))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-b) (self b)
     (ca ca-0) (static-key static-key-0) (ra ra-0))
   (deflistener (cat (exp (gen) (mul ra (rec ra-0))) ra-1))
@@ -1129,6 +1147,7 @@
   (leads-to ((1 3) (0 0)) ((6 3) (5 0)))
   (rule fact-resp-neq0 trRl_get-cert-at-2 trRl_get-cert-at-3)
   (operation nonce-test (displaced 8 1 get-cert 4) ra-1 (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((load static-key (cat pt "privkey" a ra-1 serial-a ca))
       (recv (sig (cert b (exp (gen) ra) ca serial-b) (privk "sig" ca)))
@@ -1169,8 +1188,7 @@
     (a self ca name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b self) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (ra ra))
+    (b self) (ca ca) (static-key static-key) (ra ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -1194,6 +1212,7 @@
     trRl_get-cert-at-3)
   (operation encryption-test (displaced 7 3 cert 2)
     (sig (cert self (exp (gen) ra-0) ca serial) (privk "sig" ca)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
       (recv
@@ -1228,8 +1247,7 @@
     (a self ca name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b self) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (ra ra))
+    (b self) (ca ca) (static-key static-key) (ra ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -1255,6 +1273,7 @@
     trRl_get-cert-at-3)
   (operation encryption-test (added-strand cert 2)
     (sig (cert self (exp (gen) ra-0) ca serial) (privk "sig" ca)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca))
       (recv
@@ -1292,8 +1311,7 @@
     (n text) (a ca self ca-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
     (static-key static-key-0 static-key-1 locn) (ra ra-0 ra-1 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b self) (ca ca-0) (galpha (exp (gen) ra-1)) (static-key static-key)
-    (ra ra))
+    (b self) (ca ca-0) (static-key static-key) (ra ra) (alpha ra-1))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca-0) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -1301,8 +1319,8 @@
   (defstrand cert 2 (galpha (exp (gen) ra-1)) (serial serial-b)
     (subj self) (ca ca-0))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b self) (ca ca) (galpha (exp (gen) (mul ra (rec ra-0) ra-1)))
-    (static-key static-key-0) (rb ra-0))
+    (b self) (ca ca) (static-key static-key-0) (rb ra-0)
+    (alpha (mul ra (rec ra-0) ra-1)))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-b) (self self)
     (ca ca) (static-key static-key-0) (ra ra-0))
   (deflistener (cat (exp (gen) (mul ra (rec ra-0))) ra-1))
@@ -1323,6 +1341,7 @@
   (operation encryption-test (displaced 8 3 cert 2)
     (sig (cert self (exp (gen) ra-1) ca-0 serial) (privk "sig" ca-0))
     (7 1))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca-0))
       (recv
@@ -1373,8 +1392,7 @@
     (n text) (a ca self ca-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
     (static-key static-key-0 static-key-1 locn) (ra ra-0 ra-1 rndx))
   (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b self) (ca ca-0) (galpha (exp (gen) ra-1)) (static-key static-key)
-    (ra ra))
+    (b self) (ca ca-0) (static-key static-key) (ra ra) (alpha ra-1))
   (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
     (ca ca-0) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
@@ -1382,8 +1400,8 @@
   (defstrand cert 2 (galpha (exp (gen) ra-1)) (serial serial-b)
     (subj self) (ca ca-0))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b self) (ca ca) (galpha (exp (gen) (mul ra (rec ra-0) ra-1)))
-    (static-key static-key-0) (rb ra-0))
+    (b self) (ca ca) (static-key static-key-0) (rb ra-0)
+    (alpha (mul ra (rec ra-0) ra-1)))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-b) (self self)
     (ca ca) (static-key static-key-0) (ra ra-0))
   (deflistener (cat (exp (gen) (mul ra (rec ra-0))) ra-1))
@@ -1406,6 +1424,7 @@
   (operation encryption-test (added-strand cert 2)
     (sig (cert self (exp (gen) ra-1) ca-0 serial) (privk "sig" ca-0))
     (7 1))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((load static-key (cat pt "privkey" a ra serial-a ca-0))
       (recv
@@ -1476,21 +1495,25 @@
     (uniq-gen ra)
     (comment "Get certified"))
   (defrole init
-    (vars (a b ca name) (ra rndx) (serial-a serial-b data) (galpha base)
+    (vars (a b ca name) (ra rndx) (serial-a serial-b data) (alpha expt)
       (n text) (static-key locn))
     (trace (load static-key (cat "privkey" a ra serial-a ca))
-      (recv (sig (cert b galpha ca serial-b) (privk "sig" ca)))
-      (send (enc n a b serial-a serial-b (exp galpha ra))) (recv n))
+      (recv
+        (sig (cert b (exp (gen) alpha) ca serial-b) (privk "sig" ca)))
+      (send (enc n a b serial-a serial-b (exp (gen) (mul ra alpha))))
+      (recv n))
     (uniq-orig n)
     (gen-st (cat "privkey" a ra serial-a ca))
     (facts (neq a b))
     (comment "Initiator is A"))
   (defrole resp
-    (vars (a b ca name) (rb rndx) (serial-b serial-a data) (galpha base)
+    (vars (a b ca name) (rb rndx) (serial-b serial-a data) (alpha expt)
       (n text) (static-key locn))
     (trace (load static-key (cat "privkey" b rb serial-b ca))
-      (recv (sig (cert a galpha ca serial-a) (privk "sig" ca)))
-      (recv (enc n a b serial-a serial-b (exp galpha rb))) (send n))
+      (recv
+        (sig (cert a (exp (gen) alpha) ca serial-a) (privk "sig" ca)))
+      (recv (enc n a b serial-a serial-b (exp (gen) (mul rb alpha))))
+      (send n))
     (facts (neq a b))
     (gen-st (cat "privkey" b rb serial-b ca))
     (comment "Responder is B"))
@@ -1564,14 +1587,16 @@
 
 (defskeleton dhstatic-state
   (vars (serial-b serial-a data) (n text) (ca a b name) (pt pval)
-    (galpha base) (static-key locn) (rb rndx))
+    (static-key locn) (rb rndx) (alpha expt))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha galpha) (static-key static-key) (rb rb))
+    (b b) (ca ca) (static-key static-key) (rb rb) (alpha alpha))
   (non-orig (privk "sig" ca) (privk "sig" a))
   (traces
     ((load static-key (cat pt "privkey" b rb serial-b ca))
-      (recv (sig (cert a galpha ca serial-a) (privk "sig" ca)))
-      (recv (enc n a b serial-a serial-b (exp galpha rb))) (send n)))
+      (recv
+        (sig (cert a (exp (gen) alpha) ca serial-a) (privk "sig" ca)))
+      (recv (enc n a b serial-a serial-b (exp (gen) (mul rb alpha))))
+      (send n)))
   (label 24)
   (unrealized (0 1))
   (origs)
@@ -1579,17 +1604,19 @@
 
 (defskeleton dhstatic-state
   (vars (serial-b serial-a data) (n text) (ca a b name) (pt pval)
-    (galpha base) (static-key locn) (rb rndx))
+    (static-key locn) (rb rndx) (alpha expt))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha galpha) (static-key static-key) (rb rb))
+    (b b) (ca ca) (static-key static-key) (rb rb) (alpha alpha))
   (non-orig (privk "sig" ca) (privk "sig" a))
   (gen-st (cat "privkey" b rb serial-b ca))
   (facts (neq b a) (neq a b))
   (rule fact-init-neq0 fact-resp-neq0 gen-st-resp-0)
   (traces
     ((load static-key (cat pt "privkey" b rb serial-b ca))
-      (recv (sig (cert a galpha ca serial-a) (privk "sig" ca)))
-      (recv (enc n a b serial-a serial-b (exp galpha rb))) (send n)))
+      (recv
+        (sig (cert a (exp (gen) alpha) ca serial-a) (privk "sig" ca)))
+      (recv (enc n a b serial-a serial-b (exp (gen) (mul rb alpha))))
+      (send n)))
   (label 25)
   (parent 24)
   (unrealized (0 0) (0 1))
@@ -1598,9 +1625,9 @@
 
 (defskeleton dhstatic-state
   (vars (ignore mesg) (serial-b serial-a data) (n text) (ca a b name)
-    (pt pt-0 pval) (galpha base) (static-key locn) (ra rndx))
+    (pt pt-0 pval) (static-key locn) (alpha expt) (ra rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha galpha) (static-key static-key) (rb ra))
+    (b b) (ca ca) (static-key static-key) (rb ra) (alpha alpha))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra))
   (precedes ((1 3) (0 0)))
@@ -1613,24 +1640,27 @@
     trRl_get-cert-at-3)
   (operation channel-test (added-strand get-cert 4)
     (ch-msg static-key (cat pt "privkey" b ra serial-b ca)) (0 0))
+  (strand-map 0)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca))
-      (recv (sig (cert a galpha ca serial-a) (privk "sig" ca)))
-      (recv (enc n a b serial-a serial-b (exp galpha ra))) (send n))
+      (recv
+        (sig (cert a (exp (gen) alpha) ca serial-a) (privk "sig" ca)))
+      (recv (enc n a b serial-a serial-b (exp (gen) (mul alpha ra))))
+      (send n))
     ((send (sig (cert-req b (exp (gen) ra) ca) (privk "sig" b)))
       (recv (sig (cert b (exp (gen) ra) ca serial-b) (privk "sig" ca)))
       (load static-key (cat pt-0 ignore))
       (stor static-key (cat pt "privkey" b ra serial-b ca))))
   (label 26)
   (parent 25)
-  (unrealized (0 1) (0 2) (1 1))
+  (unrealized (0 1) (1 1))
   (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton dhstatic-state
   (vars (ignore mesg) (serial-b serial-a data) (n text) (ca a b name)
-    (pt pt-0 pval) (galpha base) (static-key locn) (ra rndx))
+    (pt pt-0 pval) (static-key locn) (alpha expt) (ra rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha galpha) (static-key static-key) (rb ra))
+    (b b) (ca ca) (static-key static-key) (rb ra) (alpha alpha))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -1646,10 +1676,13 @@
     trRl_get-cert-at-3)
   (operation encryption-test (added-strand cert 2)
     (sig (cert b (exp (gen) ra) ca serial-b) (privk "sig" ca)) (1 1))
+  (strand-map 0 1)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca))
-      (recv (sig (cert a galpha ca serial-a) (privk "sig" ca)))
-      (recv (enc n a b serial-a serial-b (exp galpha ra))) (send n))
+      (recv
+        (sig (cert a (exp (gen) alpha) ca serial-a) (privk "sig" ca)))
+      (recv (enc n a b serial-a serial-b (exp (gen) (mul alpha ra))))
+      (send n))
     ((send (sig (cert-req b (exp (gen) ra) ca) (privk "sig" b)))
       (recv (sig (cert b (exp (gen) ra) ca serial-b) (privk "sig" ca)))
       (load static-key (cat pt-0 ignore))
@@ -1659,19 +1692,20 @@
         (sig (cert b (exp (gen) ra) ca serial-b) (privk "sig" ca)))))
   (label 27)
   (parent 26)
-  (unrealized (0 1) (0 2))
+  (unrealized (0 1))
   (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton dhstatic-state
   (vars (ignore mesg) (serial-b serial-a data) (n text) (ca a b name)
-    (pt pt-0 pval) (galpha base) (static-key locn) (ra rndx))
+    (pt pt-0 pval) (static-key locn) (alpha expt) (ra rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha galpha) (static-key static-key) (rb ra))
+    (b b) (ca ca) (static-key static-key) (rb ra) (alpha alpha))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
     (ca ca))
-  (defstrand cert 2 (galpha galpha) (serial serial-a) (subj a) (ca ca))
+  (defstrand cert 2 (galpha (exp (gen) alpha)) (serial serial-a)
+    (subj a) (ca ca))
   (precedes ((1 0) (2 0)) ((1 3) (0 0)) ((2 1) (1 1)) ((3 1) (0 1)))
   (non-orig (privk "sig" ca) (privk "sig" a))
   (uniq-orig serial-b serial-a)
@@ -1682,30 +1716,33 @@
   (rule fact-init-neq0 fact-resp-neq0 trRl_get-cert-at-2
     trRl_get-cert-at-3)
   (operation encryption-test (added-strand cert 2)
-    (sig (cert a galpha ca serial-a) (privk "sig" ca)) (0 1))
+    (sig (cert a (exp (gen) alpha) ca serial-a) (privk "sig" ca)) (0 1))
+  (strand-map 0 1 2)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca))
-      (recv (sig (cert a galpha ca serial-a) (privk "sig" ca)))
-      (recv (enc n a b serial-a serial-b (exp galpha ra))) (send n))
+      (recv
+        (sig (cert a (exp (gen) alpha) ca serial-a) (privk "sig" ca)))
+      (recv (enc n a b serial-a serial-b (exp (gen) (mul alpha ra))))
+      (send n))
     ((send (sig (cert-req b (exp (gen) ra) ca) (privk "sig" b)))
       (recv (sig (cert b (exp (gen) ra) ca serial-b) (privk "sig" ca)))
       (load static-key (cat pt-0 ignore))
       (stor static-key (cat pt "privkey" b ra serial-b ca)))
     ((recv (sig (cert-req b (exp (gen) ra) ca) (privk "sig" b)))
       (send (sig (cert b (exp (gen) ra) ca serial-b) (privk "sig" ca))))
-    ((recv (sig (cert-req a galpha ca) (privk "sig" a)))
-      (send (sig (cert a galpha ca serial-a) (privk "sig" ca)))))
+    ((recv (sig (cert-req a (exp (gen) alpha) ca) (privk "sig" a)))
+      (send
+        (sig (cert a (exp (gen) alpha) ca serial-a) (privk "sig" ca)))))
   (label 28)
   (parent 27)
-  (unrealized (0 2) (3 0))
+  (unrealized (3 0))
   (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton dhstatic-state
   (vars (ignore mesg) (serial-b serial-a data) (n text) (ca a b name)
     (pt pt-0 pval) (static-key locn) (ra ra-0 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (rb ra))
+    (b b) (ca ca) (static-key static-key) (rb ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -1725,6 +1762,7 @@
     trRl_get-cert-at-3)
   (operation encryption-test (added-strand get-cert 1)
     (sig (cert-req a (exp (gen) ra-0) ca) (privk "sig" a)) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca))
       (recv
@@ -1751,8 +1789,7 @@
     (ca a b ca-0 name) (pt pt-0 pt-1 pval)
     (static-key static-key-0 locn) (ra ra-0 ra-1 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (rb ra))
+    (b b) (ca ca) (static-key static-key) (rb ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -1761,8 +1798,8 @@
     (ca ca))
   (defstrand get-cert 1 (self a) (ca ca) (ra ra-0))
   (defstrand init 3 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca-0) (galpha (exp (gen) (mul ra ra-0 (rec ra-1))))
-    (static-key static-key-0) (ra ra-1))
+    (b b) (ca ca-0) (static-key static-key-0) (ra ra-1)
+    (alpha (mul ra ra-0 (rec ra-1))))
   (precedes ((1 0) (2 0)) ((1 3) (0 0)) ((2 1) (1 1)) ((2 1) (5 1))
     ((3 1) (0 1)) ((3 1) (5 0)) ((4 0) (3 0)) ((5 2) (0 2)))
   (non-orig (privk "sig" ca) (privk "sig" a))
@@ -1776,6 +1813,7 @@
     trRl_get-cert-at-3)
   (operation encryption-test (added-strand init 3)
     (enc n a b serial-a serial-b (exp (gen) (mul ra ra-0))) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca))
       (recv
@@ -1806,8 +1844,7 @@
   (vars (ignore mesg) (serial-b serial-a data) (n text) (ca a b name)
     (pt pt-0 pval) (static-key locn) (ra ra-0 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (rb ra))
+    (b b) (ca ca) (static-key static-key) (rb ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -1828,6 +1865,7 @@
     trRl_get-cert-at-3)
   (operation encryption-test (added-listener (exp (gen) (mul ra ra-0)))
     (enc n a b serial-a serial-b (exp (gen) (mul ra ra-0))) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca))
       (recv
@@ -1855,8 +1893,7 @@
     (a b ca name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (rb ra))
+    (b b) (ca ca) (static-key static-key) (rb ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -1864,8 +1901,7 @@
   (defstrand cert 2 (galpha (exp (gen) ra-0)) (serial serial-a) (subj a)
     (ca ca))
   (defstrand init 3 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra)) (static-key static-key-0)
-    (ra ra-0))
+    (b b) (ca ca) (static-key static-key-0) (ra ra-0) (alpha ra))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-a) (self a)
     (ca ca) (static-key static-key-0) (ra ra-0))
   (precedes ((1 0) (2 0)) ((1 3) (0 0)) ((2 1) (1 1)) ((2 1) (4 1))
@@ -1881,6 +1917,7 @@
   (rule fact-resp-neq0 trRl_get-cert-at-2 trRl_get-cert-at-3)
   (operation channel-test (displaced 4 6 get-cert 4)
     (ch-msg static-key-0 (cat pt-1 "privkey" a ra-1 serial-a ca)) (5 0))
+  (strand-map 0 1 2 3 5 4)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca))
       (recv
@@ -1911,18 +1948,18 @@
   (maps
     ((0)
       ((ca ca) (a a) (b b) (rb ra) (serial-b serial-b)
-        (serial-a serial-a) (galpha (exp (gen) ra-0)) (n n)
+        (serial-a serial-a) (alpha ra-0) (n n)
         (static-key static-key))))
   (origs (pt-1 (5 3)) (n (4 2)) (serial-a (3 1)) (serial-b (2 1))
-    (pt (1 3))))
+    (pt (1 3)))
+  (ugens (ra-0 (5 0)) (ra (1 0))))
 
 (defskeleton dhstatic-state
   (vars (ignore ignore-0 mesg) (serial-b serial-a data) (n text)
     (ca a b ca-0 name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 ra-1 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (rb ra))
+    (b b) (ca ca) (static-key static-key) (rb ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -1931,8 +1968,8 @@
     (ca ca))
   (defstrand get-cert 1 (self a) (ca ca) (ra ra-0))
   (defstrand init 3 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca-0) (galpha (exp (gen) (mul ra ra-0 (rec ra-1))))
-    (static-key static-key-0) (ra ra-1))
+    (b b) (ca ca-0) (static-key static-key-0) (ra ra-1)
+    (alpha (mul ra ra-0 (rec ra-1))))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-a) (self a)
     (ca ca-0) (static-key static-key-0) (ra ra-1))
   (precedes ((1 0) (2 0)) ((1 3) (0 0)) ((2 1) (1 1)) ((2 1) (5 1))
@@ -1949,6 +1986,7 @@
   (operation channel-test (added-strand get-cert 4)
     (ch-msg static-key-0 (cat pt-1 "privkey" a ra-1 serial-a ca-0))
     (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca))
       (recv
@@ -1984,8 +2022,7 @@
   (vars (ignore mesg) (serial-b serial-a data) (n text) (ca a b name)
     (pt pt-0 pval) (static-key locn) (ra ra-0 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (rb ra))
+    (b b) (ca ca) (static-key static-key) (rb ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -2008,6 +2045,7 @@
     trRl_get-cert-at-3)
   (operation nonce-test (added-listener (cat (exp (gen) ra) ra-0))
     (exp (gen) (mul ra ra-0)) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca))
       (recv
@@ -2035,8 +2073,7 @@
   (vars (ignore mesg) (serial-b serial-a data) (n text) (ca a b name)
     (pt pt-0 pval) (static-key locn) (ra ra-0 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (rb ra))
+    (b b) (ca ca) (static-key static-key) (rb ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -2059,6 +2096,7 @@
     trRl_get-cert-at-3)
   (operation nonce-test (added-listener (cat (exp (gen) ra-0) ra))
     (exp (gen) (mul ra ra-0)) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca))
       (recv
@@ -2087,8 +2125,7 @@
     (ca a b ca-0 name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 ra-1 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (rb ra))
+    (b b) (ca ca) (static-key static-key) (rb ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -2097,8 +2134,8 @@
     (ca ca))
   (defstrand get-cert 1 (self a) (ca ca) (ra ra-0))
   (defstrand init 3 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca-0) (galpha (exp (gen) (mul ra ra-0 (rec ra-1))))
-    (static-key static-key-0) (ra ra-1))
+    (b b) (ca ca-0) (static-key static-key-0) (ra ra-1)
+    (alpha (mul ra ra-0 (rec ra-1))))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-a) (self a)
     (ca ca-0) (static-key static-key-0) (ra ra-1))
   (deflistener (cat (exp (gen) (mul ra ra-0)) ra-1))
@@ -2117,6 +2154,7 @@
   (operation nonce-test
     (added-listener (cat (exp (gen) (mul ra ra-0)) ra-1))
     (exp (gen) (mul ra ra-0 (rec ra-1))) (5 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca))
       (recv
@@ -2155,8 +2193,7 @@
     (ca a b ca-0 name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 ra-1 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (rb ra))
+    (b b) (ca ca) (static-key static-key) (rb ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -2165,8 +2202,8 @@
     (ca ca))
   (defstrand get-cert 1 (self a) (ca ca) (ra ra-0))
   (defstrand init 3 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca-0) (galpha (exp (gen) (mul ra ra-0 (rec ra-1))))
-    (static-key static-key-0) (ra ra-1))
+    (b b) (ca ca-0) (static-key static-key-0) (ra ra-1)
+    (alpha (mul ra ra-0 (rec ra-1))))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-a) (self a)
     (ca ca-0) (static-key static-key-0) (ra ra-1))
   (deflistener (cat (exp (gen) (mul ra (rec ra-1))) ra-0))
@@ -2185,6 +2222,7 @@
   (operation nonce-test
     (added-listener (cat (exp (gen) (mul ra (rec ra-1))) ra-0))
     (exp (gen) (mul ra ra-0 (rec ra-1))) (5 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca))
       (recv
@@ -2223,8 +2261,7 @@
     (ca a b ca-0 name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 ra-1 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (rb ra))
+    (b b) (ca ca) (static-key static-key) (rb ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -2233,8 +2270,8 @@
     (ca ca))
   (defstrand get-cert 1 (self a) (ca ca) (ra ra-0))
   (defstrand init 3 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca-0) (galpha (exp (gen) (mul ra ra-0 (rec ra-1))))
-    (static-key static-key-0) (ra ra-1))
+    (b b) (ca ca-0) (static-key static-key-0) (ra ra-1)
+    (alpha (mul ra ra-0 (rec ra-1))))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-a) (self a)
     (ca ca-0) (static-key static-key-0) (ra ra-1))
   (deflistener (cat (exp (gen) (mul ra-0 (rec ra-1))) ra))
@@ -2253,6 +2290,7 @@
   (operation nonce-test
     (added-listener (cat (exp (gen) (mul ra-0 (rec ra-1))) ra))
     (exp (gen) (mul ra ra-0 (rec ra-1))) (5 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca))
       (recv
@@ -2291,8 +2329,7 @@
     (b self ca name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n)
-    (a self) (b b) (ca ca) (galpha (exp (gen) ra-0))
-    (static-key static-key) (rb ra))
+    (a self) (b b) (ca ca) (static-key static-key) (rb ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -2315,6 +2352,7 @@
   (rule fact-init-neq0 fact-resp-neq0 trRl_get-cert-at-2
     trRl_get-cert-at-3)
   (operation nonce-test (displaced 4 7 get-cert 4) ra-0 (6 0))
+  (strand-map 0 1 2 3 6 4 5)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca))
       (recv
@@ -2347,8 +2385,7 @@
   (vars (ignore mesg) (serial-b serial-a data) (n text) (ca a b name)
     (pt pt-0 pval) (static-key locn) (ra ra-0 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra)) (static-key static-key)
-    (rb ra-0))
+    (b b) (ca ca) (static-key static-key) (rb ra-0) (alpha ra))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra-0))
   (defstrand cert 2 (galpha (exp (gen) ra-0)) (serial serial-b) (subj b)
@@ -2370,6 +2407,7 @@
   (rule fact-init-neq0 fact-resp-neq0 trRl_get-cert-at-2
     trRl_get-cert-at-3)
   (operation nonce-test (displaced 7 1 get-cert 4) ra-0 (6 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((load static-key (cat pt "privkey" b ra-0 serial-b ca))
       (recv (sig (cert a (exp (gen) ra) ca serial-a) (privk "sig" ca)))
@@ -2399,8 +2437,7 @@
     (ca a b ca-0 name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 ra-1 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
-    (rb ra))
+    (b b) (ca ca) (static-key static-key) (rb ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -2409,8 +2446,8 @@
     (ca ca))
   (defstrand get-cert 1 (self a) (ca ca) (ra ra-0))
   (defstrand init 3 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca-0) (galpha (exp (gen) (mul ra ra-0 (rec ra-1))))
-    (static-key static-key-0) (ra ra-1))
+    (b b) (ca ca-0) (static-key static-key-0) (ra ra-1)
+    (alpha (mul ra ra-0 (rec ra-1))))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-a) (self a)
     (ca ca-0) (static-key static-key-0) (ra ra-1))
   (deflistener (cat (exp (gen) (mul ra ra-0)) ra-1))
@@ -2426,6 +2463,7 @@
   (leads-to ((1 3) (0 0)) ((6 3) (5 0)))
   (rule fact-resp-neq0 trRl_get-cert-at-2 trRl_get-cert-at-3)
   (operation nonce-test (displaced 8 6 get-cert 4) ra-1 (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca))
       (recv
@@ -2465,8 +2503,8 @@
     (n text) (b ca self ca-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
     (static-key static-key-0 static-key-1 locn) (ra ra-0 ra-1 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n)
-    (a self) (b b) (ca ca-0) (galpha (exp (gen) ra-1))
-    (static-key static-key) (rb ra))
+    (a self) (b b) (ca ca-0) (static-key static-key) (rb ra)
+    (alpha ra-1))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca-0) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -2474,8 +2512,8 @@
   (defstrand cert 2 (galpha (exp (gen) ra-1)) (serial serial-a)
     (subj self) (ca ca-0))
   (defstrand init 3 (serial-a serial-a) (serial-b serial-b) (n n)
-    (a self) (b b) (ca ca) (galpha (exp (gen) (mul ra (rec ra-0) ra-1)))
-    (static-key static-key-0) (ra ra-0))
+    (a self) (b b) (ca ca) (static-key static-key-0) (ra ra-0)
+    (alpha (mul ra (rec ra-0) ra-1)))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-a) (self self)
     (ca ca) (static-key static-key-0) (ra ra-0))
   (deflistener (cat (exp (gen) (mul ra (rec ra-0))) ra-1))
@@ -2494,6 +2532,7 @@
   (leads-to ((1 3) (0 0)) ((5 3) (4 0)))
   (rule fact-resp-neq0 trRl_get-cert-at-2 trRl_get-cert-at-3)
   (operation nonce-test (displaced 4 8 get-cert 4) ra-1 (7 0))
+  (strand-map 0 1 2 3 7 4 5 6)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca-0))
       (recv
@@ -2542,8 +2581,7 @@
     (ca a b ca-0 name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 ra-1 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
-    (b b) (ca ca) (galpha (exp (gen) ra)) (static-key static-key)
-    (rb ra-1))
+    (b b) (ca ca) (static-key static-key) (rb ra-1) (alpha ra))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra-1))
   (defstrand cert 2 (galpha (exp (gen) ra-1)) (serial serial-b) (subj b)
@@ -2552,8 +2590,8 @@
     (ca ca))
   (defstrand get-cert 1 (self a) (ca ca) (ra ra))
   (defstrand init 3 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
-    (b b) (ca ca-0) (galpha (exp (gen) (mul ra (rec ra-0) ra-1)))
-    (static-key static-key-0) (ra ra-0))
+    (b b) (ca ca-0) (static-key static-key-0) (ra ra-0)
+    (alpha (mul ra (rec ra-0) ra-1)))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-a) (self a)
     (ca ca-0) (static-key static-key-0) (ra ra-0))
   (deflistener (cat (exp (gen) (mul ra (rec ra-0))) ra-1))
@@ -2569,6 +2607,7 @@
   (leads-to ((1 3) (0 0)) ((6 3) (5 0)))
   (rule fact-resp-neq0 trRl_get-cert-at-2 trRl_get-cert-at-3)
   (operation nonce-test (displaced 8 1 get-cert 4) ra-1 (7 0))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((load static-key (cat pt "privkey" b ra-1 serial-b ca))
       (recv (sig (cert a (exp (gen) ra) ca serial-a) (privk "sig" ca)))
@@ -2608,8 +2647,7 @@
     (b self ca name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n)
-    (a self) (b b) (ca ca) (galpha (exp (gen) ra-0))
-    (static-key static-key) (rb ra))
+    (a self) (b b) (ca ca) (static-key static-key) (rb ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -2633,6 +2671,7 @@
     trRl_get-cert-at-3)
   (operation encryption-test (displaced 7 3 cert 2)
     (sig (cert self (exp (gen) ra-0) ca serial) (privk "sig" ca)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca))
       (recv
@@ -2667,8 +2706,7 @@
     (b self ca name) (pt pt-0 pt-1 pt-2 pval)
     (static-key static-key-0 locn) (ra ra-0 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n)
-    (a self) (b b) (ca ca) (galpha (exp (gen) ra-0))
-    (static-key static-key) (rb ra))
+    (a self) (b b) (ca ca) (static-key static-key) (rb ra) (alpha ra-0))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -2694,6 +2732,7 @@
     trRl_get-cert-at-3)
   (operation encryption-test (added-strand cert 2)
     (sig (cert self (exp (gen) ra-0) ca serial) (privk "sig" ca)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca))
       (recv
@@ -2731,8 +2770,8 @@
     (n text) (b ca self ca-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
     (static-key static-key-0 static-key-1 locn) (ra ra-0 ra-1 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n)
-    (a self) (b b) (ca ca-0) (galpha (exp (gen) ra-1))
-    (static-key static-key) (rb ra))
+    (a self) (b b) (ca ca-0) (static-key static-key) (rb ra)
+    (alpha ra-1))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca-0) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -2740,8 +2779,8 @@
   (defstrand cert 2 (galpha (exp (gen) ra-1)) (serial serial-a)
     (subj self) (ca ca-0))
   (defstrand init 3 (serial-a serial-a) (serial-b serial-b) (n n)
-    (a self) (b b) (ca ca) (galpha (exp (gen) (mul ra (rec ra-0) ra-1)))
-    (static-key static-key-0) (ra ra-0))
+    (a self) (b b) (ca ca) (static-key static-key-0) (ra ra-0)
+    (alpha (mul ra (rec ra-0) ra-1)))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-a) (self self)
     (ca ca) (static-key static-key-0) (ra ra-0))
   (deflistener (cat (exp (gen) (mul ra (rec ra-0))) ra-1))
@@ -2762,6 +2801,7 @@
   (operation encryption-test (displaced 8 3 cert 2)
     (sig (cert self (exp (gen) ra-1) ca-0 serial) (privk "sig" ca-0))
     (7 1))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca-0))
       (recv
@@ -2811,8 +2851,8 @@
     (n text) (b ca self ca-0 name) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
     (static-key static-key-0 static-key-1 locn) (ra ra-0 ra-1 rndx))
   (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n)
-    (a self) (b b) (ca ca-0) (galpha (exp (gen) ra-1))
-    (static-key static-key) (rb ra))
+    (a self) (b b) (ca ca-0) (static-key static-key) (rb ra)
+    (alpha ra-1))
   (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
     (ca ca-0) (static-key static-key) (ra ra))
   (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
@@ -2820,8 +2860,8 @@
   (defstrand cert 2 (galpha (exp (gen) ra-1)) (serial serial-a)
     (subj self) (ca ca-0))
   (defstrand init 3 (serial-a serial-a) (serial-b serial-b) (n n)
-    (a self) (b b) (ca ca) (galpha (exp (gen) (mul ra (rec ra-0) ra-1)))
-    (static-key static-key-0) (ra ra-0))
+    (a self) (b b) (ca ca) (static-key static-key-0) (ra ra-0)
+    (alpha (mul ra (rec ra-0) ra-1)))
   (defstrand get-cert 4 (ignore ignore-0) (serial serial-a) (self self)
     (ca ca) (static-key static-key-0) (ra ra-0))
   (deflistener (cat (exp (gen) (mul ra (rec ra-0))) ra-1))
@@ -2844,6 +2884,7 @@
   (operation encryption-test (added-strand cert 2)
     (sig (cert self (exp (gen) ra-1) ca-0 serial) (privk "sig" ca-0))
     (7 1))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((load static-key (cat pt "privkey" b ra serial-b ca-0))
       (recv
diff --git a/tst/dhstatic-state_shapes.tst b/tst/dhstatic-state_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/dhstatic-state_shapes.tst
@@ -0,0 +1,344 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald dhstatic-state (algebra diffie-hellman) (bound 16))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/dhstatic-state.scm")
+
+(comment "Strand count bounded at 16")
+
+(defprotocol dhstatic-state diffie-hellman
+  (defrole cert
+    (vars (subj ca name) (serial data) (galpha mesg))
+    (trace (recv (sig (cert-req subj galpha ca) (privk "sig" subj)))
+      (send (sig (cert subj galpha ca serial) (privk "sig" ca))))
+    (uniq-orig serial)
+    (comment "Certificate Authority"))
+  (defrole get-cert
+    (vars (self ca name) (serial data) (ra rndx) (static-key locn)
+      (ignore mesg))
+    (trace
+      (send (sig (cert-req self (exp (gen) ra) ca) (privk "sig" self)))
+      (recv (sig (cert self (exp (gen) ra) ca serial) (privk "sig" ca)))
+      (load static-key ignore)
+      (stor static-key (cat "privkey" self ra serial ca)))
+    (uniq-gen ra)
+    (comment "Get certified"))
+  (defrole init
+    (vars (a b ca name) (ra rndx) (serial-a serial-b data) (galpha base)
+      (n text) (static-key locn))
+    (trace (load static-key (cat "privkey" a ra serial-a ca))
+      (recv (sig (cert b galpha ca serial-b) (privk "sig" ca)))
+      (send (enc n a b serial-a serial-b (exp galpha ra))) (recv n))
+    (uniq-orig n)
+    (gen-st (cat "privkey" a ra serial-a ca))
+    (facts (neq a b))
+    (comment "Initiator is A"))
+  (defrole resp
+    (vars (a b ca name) (rb rndx) (serial-b serial-a data) (galpha base)
+      (n text) (static-key locn))
+    (trace (load static-key (cat "privkey" b rb serial-b ca))
+      (recv (sig (cert a galpha ca serial-a) (privk "sig" ca)))
+      (recv (enc n a b serial-a serial-b (exp galpha rb))) (send n))
+    (facts (neq a b))
+    (gen-st (cat "privkey" b rb serial-b ca))
+    (comment "Responder is B"))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "init" z 2) (p "init" "b" z b) (p "init" "a" z a))
+        (fact neq a b))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "resp" z 2) (p "resp" "b" z b) (p "resp" "a" z a))
+        (fact neq a b))))
+  (defgenrule trRl_get-cert-at-3
+    (forall ((z strd)) (implies (p "get-cert" z 4) (trans z 3))))
+  (defgenrule trRl_get-cert-at-2
+    (forall ((z strd)) (implies (p "get-cert" z 4) (trans z 2))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (serial-a data) (ra rndx) (ca a name))
+      (implies
+        (and (p "init" z 1) (p "init" "serial-a" z serial-a)
+          (p "init" "ra" z ra) (p "init" "ca" z ca) (p "init" "a" z a))
+        (gen-st (cat "privkey" a ra serial-a ca)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (serial-b data) (rb rndx) (ca b name))
+      (implies
+        (and (p "resp" z 1) (p "resp" "serial-b" z serial-b)
+          (p "resp" "rb" z rb) (p "resp" "ca" z ca) (p "resp" "b" z b))
+        (gen-st (cat "privkey" b rb serial-b ca)))))
+  (lang (cert-req (tupl 3)) (cert (tupl 4)) (sig sign)))
+
+(defskeleton dhstatic-state
+  (vars (serial-a serial-b data) (n text) (ca b a name) (pt pval)
+    (galpha base) (static-key locn) (ra rndx))
+  (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
+    (b b) (ca ca) (galpha galpha) (static-key static-key) (ra ra))
+  (non-orig (privk "sig" ca) (privk "sig" b))
+  (uniq-orig n)
+  (traces
+    ((load static-key (cat pt "privkey" a ra serial-a ca))
+      (recv (sig (cert b galpha ca serial-b) (privk "sig" ca)))
+      (send (enc n a b serial-a serial-b (exp galpha ra))) (recv n)))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n (0 2)))
+  (comment "Not closed under rules"))
+
+(defskeleton dhstatic-state
+  (vars (ignore ignore-0 mesg) (serial-a serial-b data) (n text)
+    (b a ca name) (pt pt-0 pt-1 pt-2 pval)
+    (static-key static-key-0 locn) (ra ra-0 rndx))
+  (defstrand init 4 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
+    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
+    (ra ra))
+  (defstrand get-cert 4 (ignore ignore) (serial serial-a) (self a)
+    (ca ca) (static-key static-key) (ra ra))
+  (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-a) (subj a)
+    (ca ca))
+  (defstrand cert 2 (galpha (exp (gen) ra-0)) (serial serial-b) (subj b)
+    (ca ca))
+  (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
+    (b b) (ca ca) (galpha (exp (gen) ra)) (static-key static-key-0)
+    (rb ra-0))
+  (defstrand get-cert 4 (ignore ignore-0) (serial serial-b) (self b)
+    (ca ca) (static-key static-key-0) (ra ra-0))
+  (precedes ((0 2) (4 2)) ((1 0) (2 0)) ((1 3) (0 0)) ((2 1) (1 1))
+    ((2 1) (4 1)) ((3 1) (0 1)) ((3 1) (5 1)) ((4 3) (0 3))
+    ((5 0) (3 0)) ((5 3) (4 0)))
+  (non-orig (privk "sig" b) (privk "sig" ca))
+  (uniq-orig serial-a serial-b n)
+  (uniq-gen ra ra-0)
+  (gen-st (cat "privkey" b ra-0 serial-b ca)
+    (cat "privkey" a ra serial-a ca))
+  (facts (trans 5 3) (trans 5 2) (trans 1 3) (trans 1 2) (neq a b)
+    (neq b a))
+  (rule trRl_get-cert-at-3 trRl_get-cert-at-2)
+  (operation channel-test (displaced 4 6 get-cert 4)
+    (ch-msg static-key-0 (cat pt-1 "privkey" b ra-1 serial-b ca)) (5 0))
+  (traces
+    ((load static-key (cat pt "privkey" a ra serial-a ca))
+      (recv
+        (sig (cert b (exp (gen) ra-0) ca serial-b) (privk "sig" ca)))
+      (send (enc n a b serial-a serial-b (exp (gen) (mul ra ra-0))))
+      (recv n))
+    ((send (sig (cert-req a (exp (gen) ra) ca) (privk "sig" a)))
+      (recv (sig (cert a (exp (gen) ra) ca serial-a) (privk "sig" ca)))
+      (load static-key (cat pt-0 ignore))
+      (stor static-key (cat pt "privkey" a ra serial-a ca)))
+    ((recv (sig (cert-req a (exp (gen) ra) ca) (privk "sig" a)))
+      (send (sig (cert a (exp (gen) ra) ca serial-a) (privk "sig" ca))))
+    ((recv (sig (cert-req b (exp (gen) ra-0) ca) (privk "sig" b)))
+      (send
+        (sig (cert b (exp (gen) ra-0) ca serial-b) (privk "sig" ca))))
+    ((load static-key-0 (cat pt-1 "privkey" b ra-0 serial-b ca))
+      (recv (sig (cert a (exp (gen) ra) ca serial-a) (privk "sig" ca)))
+      (recv (enc n a b serial-a serial-b (exp (gen) (mul ra ra-0))))
+      (send n))
+    ((send (sig (cert-req b (exp (gen) ra-0) ca) (privk "sig" b)))
+      (recv
+        (sig (cert b (exp (gen) ra-0) ca serial-b) (privk "sig" ca)))
+      (load static-key-0 (cat pt-2 ignore-0))
+      (stor static-key-0 (cat pt-1 "privkey" b ra-0 serial-b ca))))
+  (label 8)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((ca ca) (b b) (a a) (ra ra) (serial-a serial-a)
+        (serial-b serial-b) (galpha (exp (gen) ra-0)) (n n)
+        (static-key static-key) (pt pt))))
+  (origs (pt-1 (5 3)) (serial-b (3 1)) (serial-a (2 1)) (pt (1 3))
+    (n (0 2))))
+
+(comment "Nothing left to do")
+
+(defprotocol dhstatic-state diffie-hellman
+  (defrole cert
+    (vars (subj ca name) (serial data) (galpha mesg))
+    (trace (recv (sig (cert-req subj galpha ca) (privk "sig" subj)))
+      (send (sig (cert subj galpha ca serial) (privk "sig" ca))))
+    (uniq-orig serial)
+    (comment "Certificate Authority"))
+  (defrole get-cert
+    (vars (self ca name) (serial data) (ra rndx) (static-key locn)
+      (ignore mesg))
+    (trace
+      (send (sig (cert-req self (exp (gen) ra) ca) (privk "sig" self)))
+      (recv (sig (cert self (exp (gen) ra) ca serial) (privk "sig" ca)))
+      (load static-key ignore)
+      (stor static-key (cat "privkey" self ra serial ca)))
+    (uniq-gen ra)
+    (comment "Get certified"))
+  (defrole init
+    (vars (a b ca name) (ra rndx) (serial-a serial-b data) (galpha base)
+      (n text) (static-key locn))
+    (trace (load static-key (cat "privkey" a ra serial-a ca))
+      (recv (sig (cert b galpha ca serial-b) (privk "sig" ca)))
+      (send (enc n a b serial-a serial-b (exp galpha ra))) (recv n))
+    (uniq-orig n)
+    (gen-st (cat "privkey" a ra serial-a ca))
+    (facts (neq a b))
+    (comment "Initiator is A"))
+  (defrole resp
+    (vars (a b ca name) (rb rndx) (serial-b serial-a data) (galpha base)
+      (n text) (static-key locn))
+    (trace (load static-key (cat "privkey" b rb serial-b ca))
+      (recv (sig (cert a galpha ca serial-a) (privk "sig" ca)))
+      (recv (enc n a b serial-a serial-b (exp galpha rb))) (send n))
+    (facts (neq a b))
+    (gen-st (cat "privkey" b rb serial-b ca))
+    (comment "Responder is B"))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-init-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "init" z 2) (p "init" "b" z b) (p "init" "a" z a))
+        (fact neq a b))))
+  (defgenrule fact-resp-neq0
+    (forall ((z strd) (b a name))
+      (implies
+        (and (p "resp" z 2) (p "resp" "b" z b) (p "resp" "a" z a))
+        (fact neq a b))))
+  (defgenrule trRl_get-cert-at-3
+    (forall ((z strd)) (implies (p "get-cert" z 4) (trans z 3))))
+  (defgenrule trRl_get-cert-at-2
+    (forall ((z strd)) (implies (p "get-cert" z 4) (trans z 2))))
+  (defgenrule gen-st-init-0
+    (forall ((z strd) (serial-a data) (ra rndx) (ca a name))
+      (implies
+        (and (p "init" z 1) (p "init" "serial-a" z serial-a)
+          (p "init" "ra" z ra) (p "init" "ca" z ca) (p "init" "a" z a))
+        (gen-st (cat "privkey" a ra serial-a ca)))))
+  (defgenrule gen-st-resp-0
+    (forall ((z strd) (serial-b data) (rb rndx) (ca b name))
+      (implies
+        (and (p "resp" z 1) (p "resp" "serial-b" z serial-b)
+          (p "resp" "rb" z rb) (p "resp" "ca" z ca) (p "resp" "b" z b))
+        (gen-st (cat "privkey" b rb serial-b ca)))))
+  (lang (cert-req (tupl 3)) (cert (tupl 4)) (sig sign)))
+
+(defskeleton dhstatic-state
+  (vars (serial-b serial-a data) (n text) (ca a b name) (pt pval)
+    (galpha base) (static-key locn) (rb rndx))
+  (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
+    (b b) (ca ca) (galpha galpha) (static-key static-key) (rb rb))
+  (non-orig (privk "sig" ca) (privk "sig" a))
+  (traces
+    ((load static-key (cat pt "privkey" b rb serial-b ca))
+      (recv (sig (cert a galpha ca serial-a) (privk "sig" ca)))
+      (recv (enc n a b serial-a serial-b (exp galpha rb))) (send n)))
+  (label 24)
+  (unrealized (0 1))
+  (origs)
+  (comment "Not closed under rules"))
+
+(defskeleton dhstatic-state
+  (vars (ignore ignore-0 mesg) (serial-b serial-a data) (n text)
+    (a b ca name) (pt pt-0 pt-1 pt-2 pval)
+    (static-key static-key-0 locn) (ra ra-0 rndx))
+  (defstrand resp 4 (serial-b serial-b) (serial-a serial-a) (n n) (a a)
+    (b b) (ca ca) (galpha (exp (gen) ra-0)) (static-key static-key)
+    (rb ra))
+  (defstrand get-cert 4 (ignore ignore) (serial serial-b) (self b)
+    (ca ca) (static-key static-key) (ra ra))
+  (defstrand cert 2 (galpha (exp (gen) ra)) (serial serial-b) (subj b)
+    (ca ca))
+  (defstrand cert 2 (galpha (exp (gen) ra-0)) (serial serial-a) (subj a)
+    (ca ca))
+  (defstrand init 3 (serial-a serial-a) (serial-b serial-b) (n n) (a a)
+    (b b) (ca ca) (galpha (exp (gen) ra)) (static-key static-key-0)
+    (ra ra-0))
+  (defstrand get-cert 4 (ignore ignore-0) (serial serial-a) (self a)
+    (ca ca) (static-key static-key-0) (ra ra-0))
+  (precedes ((1 0) (2 0)) ((1 3) (0 0)) ((2 1) (1 1)) ((2 1) (4 1))
+    ((3 1) (0 1)) ((3 1) (5 1)) ((4 2) (0 2)) ((5 0) (3 0))
+    ((5 3) (4 0)))
+  (non-orig (privk "sig" a) (privk "sig" ca))
+  (uniq-orig serial-b serial-a n)
+  (uniq-gen ra ra-0)
+  (gen-st (cat "privkey" a ra-0 serial-a ca)
+    (cat "privkey" b ra serial-b ca))
+  (facts (trans 5 3) (trans 5 2) (trans 1 3) (trans 1 2) (neq b a)
+    (neq a b))
+  (rule trRl_get-cert-at-3 trRl_get-cert-at-2)
+  (operation channel-test (displaced 4 6 get-cert 4)
+    (ch-msg static-key-0 (cat pt-1 "privkey" a ra-1 serial-a ca)) (5 0))
+  (traces
+    ((load static-key (cat pt "privkey" b ra serial-b ca))
+      (recv
+        (sig (cert a (exp (gen) ra-0) ca serial-a) (privk "sig" ca)))
+      (recv (enc n a b serial-a serial-b (exp (gen) (mul ra ra-0))))
+      (send n))
+    ((send (sig (cert-req b (exp (gen) ra) ca) (privk "sig" b)))
+      (recv (sig (cert b (exp (gen) ra) ca serial-b) (privk "sig" ca)))
+      (load static-key (cat pt-0 ignore))
+      (stor static-key (cat pt "privkey" b ra serial-b ca)))
+    ((recv (sig (cert-req b (exp (gen) ra) ca) (privk "sig" b)))
+      (send (sig (cert b (exp (gen) ra) ca serial-b) (privk "sig" ca))))
+    ((recv (sig (cert-req a (exp (gen) ra-0) ca) (privk "sig" a)))
+      (send
+        (sig (cert a (exp (gen) ra-0) ca serial-a) (privk "sig" ca))))
+    ((load static-key-0 (cat pt-1 "privkey" a ra-0 serial-a ca))
+      (recv (sig (cert b (exp (gen) ra) ca serial-b) (privk "sig" ca)))
+      (send (enc n a b serial-a serial-b (exp (gen) (mul ra ra-0)))))
+    ((send (sig (cert-req a (exp (gen) ra-0) ca) (privk "sig" a)))
+      (recv
+        (sig (cert a (exp (gen) ra-0) ca serial-a) (privk "sig" ca)))
+      (load static-key-0 (cat pt-2 ignore-0))
+      (stor static-key-0 (cat pt-1 "privkey" a ra-0 serial-a ca))))
+  (label 32)
+  (parent 24)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((ca ca) (a a) (b b) (rb ra) (serial-b serial-b)
+        (serial-a serial-a) (galpha (exp (gen) ra-0)) (n n)
+        (static-key static-key) (pt pt))))
+  (origs (pt-1 (5 3)) (n (4 2)) (serial-a (3 1)) (serial-b (2 1))
+    (pt (1 3))))
+
+(comment "Nothing left to do")
diff --git a/tst/disclosure.tst b/tst/disclosure.tst
--- a/tst/disclosure.tst
+++ b/tst/disclosure.tst
@@ -1,6 +1,6 @@
 (herald disclosure)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/disclosure.scm")
 
 (defprotocol disc basic
@@ -37,6 +37,7 @@
   (pen-non-orig k)
   (uniq-orig n)
   (operation nonce-test (added-strand resp 2) n (0 1) (enc a b n k))
+  (strand-map 0)
   (traces ((send (enc a b n k)) (recv n))
     ((recv (enc a b n k)) (send n)))
   (label 1)
@@ -54,6 +55,7 @@
   (pen-non-orig k)
   (uniq-orig n)
   (operation nonce-test (added-listener k) n (0 1) (enc a b n k))
+  (strand-map 0)
   (traces ((send (enc a b n k)) (recv n)) ((recv k) (send k)))
   (label 2)
   (parent 0)
@@ -69,6 +71,7 @@
   (pen-non-orig k)
   (uniq-orig n)
   (operation nonce-test (added-strand init 3) k (1 0))
+  (strand-map 0 1)
   (traces ((send (enc a b n k)) (recv n)) ((recv k) (send k))
     ((send (enc a-0 b-0 n-0 k)) (recv n-0) (send k)))
   (label 3)
@@ -84,6 +87,7 @@
   (pen-non-orig k)
   (uniq-orig n)
   (operation generalization deleted (1 0))
+  (strand-map 0 2)
   (traces ((send (enc a b n k)) (recv n))
     ((send (enc a-0 b-0 n-0 k)) (recv n-0) (send k)))
   (label 4)
diff --git a/tst/doorsep.tst b/tst/doorsep.tst
--- a/tst/doorsep.tst
+++ b/tst/doorsep.tst
@@ -1,6 +1,6 @@
 (herald doorsep (comment "Door Simple Example Protocol"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/doorsep.scm")
 
 (defprotocol doorsep basic
@@ -49,6 +49,7 @@
   (rule trust)
   (operation encryption-test (added-strand person 1) (enc k (invk p))
     (0 0))
+  (strand-map 0)
   (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
     ((send (enc (enc k (invk p)) d-0))))
   (label 1)
@@ -65,6 +66,7 @@
   (uniq-orig k t)
   (operation encryption-test (contracted (d-0 d)) (enc k (invk p)) (0 0)
     (enc (enc k (invk p)) d))
+  (strand-map 0 1)
   (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
     ((send (enc (enc k (invk p)) d))))
   (label 2)
@@ -80,6 +82,7 @@
   (non-orig (invk d) (invk p))
   (uniq-orig k t)
   (operation nonce-test (displaced 1 2 person 3) t (0 2) (enc t k))
+  (strand-map 0 1)
   (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 3)
@@ -98,6 +101,7 @@
   (non-orig (invk p) (invk d))
   (uniq-orig k t)
   (operation nonce-test (added-listener k) t (0 2) (enc t k))
+  (strand-map 0 1)
   (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 4)
diff --git a/tst/doorsep2invk.tst b/tst/doorsep2invk.tst
--- a/tst/doorsep2invk.tst
+++ b/tst/doorsep2invk.tst
@@ -1,6 +1,6 @@
 (herald doorsep2invk (comment "Door Simple Example Protocol"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/doorsep2invk.scm")
 
 (defprotocol doorsep basic
@@ -60,6 +60,7 @@
   (uniq-orig skey+0 text+0)
   (operation encryption-test (contracted (akey+1 akey+0))
     (enc skey+0 akey+3) (1 0) (enc (enc skey+0 akey+3) akey+0))
+  (strand-map 0 1)
   (traces ((send (enc (enc skey+0 akey+3) akey+0)))
     ((recv (enc (enc skey+0 akey+3) akey+0)) (send (enc text+0 skey+0))
       (recv text+0)))
@@ -78,6 +79,7 @@
   (uniq-orig skey+0 text+0)
   (operation nonce-test (displaced 0 2 init 3) text+0 (1 2)
     (enc text+0 skey+0))
+  (strand-map 1 0)
   (traces
     ((recv (enc (enc skey+0 (invk self)) peer))
       (send (enc text+0 skey+0)) (recv text+0))
@@ -105,6 +107,7 @@
   (uniq-orig skey+0 text+0)
   (operation nonce-test (added-listener skey+0) text+0 (1 2)
     (enc text+0 skey+0))
+  (strand-map 0 1)
   (traces ((send (enc (enc skey+0 akey+3) akey+0)))
     ((recv (enc (enc skey+0 akey+3) akey+0)) (send (enc text+0 skey+0))
       (recv text+0)) ((recv skey+0) (send skey+0)))
diff --git a/tst/doorsep2invk_shapes.tst b/tst/doorsep2invk_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/doorsep2invk_shapes.tst
@@ -0,0 +1,82 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald doorsep2invk (comment "Door Simple Example Protocol"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/doorsep2invk.scm")
+
+(defprotocol doorsep basic
+  (defrole init
+    (vars (self peer akey) (skey skey) (data text))
+    (trace (send (enc (enc skey (invk self)) peer))
+      (recv (enc data skey)) (send data))
+    (uniq-orig skey))
+  (defrole resp
+    (vars (self peer akey) (skey skey) (data text))
+    (trace (recv (enc (enc skey (invk peer)) self))
+      (send (enc data skey)) (recv data))
+    (uniq-orig data))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Doorsep's protocol using unnamed asymmetric keys"))
+
+(defskeleton doorsep
+  (vars (skey+0 skey) (text+0 text) (akey+1 akey+0 akey+3 akey))
+  (defstrand init 1 (skey skey+0) (self (invk akey+3)) (peer akey+0))
+  (defstrand resp 3 (skey skey+0) (data text+0) (self akey+1)
+    (peer (invk akey+3)))
+  (precedes ((0 0) (1 0)))
+  (non-orig akey+3 (invk akey+0))
+  (uniq-orig skey+0 text+0)
+  (goals
+    (forall
+      ((text+0 text) (skey+0 skey) (akey+1 akey+0 akey+3 akey)
+        (z z-0 strd))
+      (implies
+        (and (p "resp" z 3) (p "init" z-0 1) (p "resp" "data" z text+0)
+          (p "resp" "skey" z skey+0) (p "resp" "self" z akey+1)
+          (p "resp" "peer" z (invk akey+3)) (p "init" "skey" z-0 skey+0)
+          (p "init" "self" z-0 (invk akey+3))
+          (p "init" "peer" z-0 akey+0) (prec z-0 0 z 0) (non akey+3)
+          (non (invk akey+0)) (uniq-at skey+0 z-0 0)
+          (uniq-at text+0 z 1)) (and))))
+  (traces ((send (enc (enc skey+0 akey+3) akey+0)))
+    ((recv (enc (enc skey+0 akey+3) akey+1)) (send (enc text+0 skey+0))
+      (recv text+0)))
+  (label 0)
+  (unrealized (1 0) (1 2))
+  (origs (skey+0 (0 0)) (text+0 (1 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton doorsep
+  (vars (skey+0 skey) (text+0 text) (self peer akey))
+  (defstrand resp 3 (skey skey+0) (data text+0) (self peer) (peer self))
+  (defstrand init 3 (skey skey+0) (data text+0) (self self) (peer peer))
+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
+  (non-orig (invk self) (invk peer))
+  (uniq-orig skey+0 text+0)
+  (operation nonce-test (displaced 0 2 init 3) text+0 (1 2)
+    (enc text+0 skey+0))
+  (traces
+    ((recv (enc (enc skey+0 (invk self)) peer))
+      (send (enc text+0 skey+0)) (recv text+0))
+    ((send (enc (enc skey+0 (invk self)) peer))
+      (recv (enc text+0 skey+0)) (send text+0)))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps
+    ((1 0)
+      ((text+0 text+0) (skey+0 skey+0) (akey+1 peer) (akey+0 peer)
+        (akey+3 (invk self)))))
+  (origs (skey+0 (1 0)) (text+0 (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/doorsep_shapes.tst b/tst/doorsep_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/doorsep_shapes.tst
@@ -0,0 +1,63 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald doorsep (comment "Door Simple Example Protocol"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/doorsep.scm")
+
+(defprotocol doorsep basic
+  (defrole person
+    (vars (d p 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 (d p akey) (k skey) (t text))
+    (trace (recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
+    (uniq-orig t))
+  (defrule trust
+    (forall ((z strd) (p d akey))
+      (implies
+        (and (p "person" z 1) (p "person" "p" z p) (p "person" "d" z d)
+          (non (invk p)))
+        (non (invk d))))
+    (comment "The trust rule"))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Doorsep protocol using unnamed asymmetric keys"))
+
+(defskeleton doorsep
+  (vars (k skey) (t text) (p d akey))
+  (defstrand door 3 (k k) (t t) (d d) (p p))
+  (non-orig (invk p))
+  (uniq-orig t)
+  (comment "Analyze from the doors's perspective")
+  (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t)))
+  (label 0)
+  (unrealized (0 0))
+  (origs (t (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton doorsep
+  (vars (k skey) (t text) (d p akey))
+  (defstrand door 3 (k k) (t t) (d d) (p p))
+  (defstrand person 3 (k k) (t t) (d d) (p p))
+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
+  (non-orig (invk d) (invk p))
+  (uniq-orig k t)
+  (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 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((p p) (d d) (k k) (t t))))
+  (origs (k (1 0)) (t (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/ds-short.lisp b/tst/ds-short.lisp
deleted file mode 100644
--- a/tst/ds-short.lisp
+++ /dev/null
@@ -1,33 +0,0 @@
-;;; This is something like the Denning Sacco protocol with
-;;; public keys as described by Clark and Jacob, but without
-;;; timestamps.  Since the whole point of the protocol was to
-;;; show how timestamps could be used, this is a funny thing to do!
-
-(defprotocol denning-sacco-with-pk basic
-  (defrole init ; A
-    (vars (a name) (b name) (ks name) (k skey))
-    (trace (send (cat a b))
-	   (recv (cat (enc (cat b (pubk b)) (privk ks)) ; certB
-		      (enc (cat a (pubk a)) (privk ks)))) ; cert A
-	   (send (cat (enc (enc k (privk a)) (pubk b)) ; sign & encr k
-		      (enc (cat b (pubk b)) (privk ks))
-		      (enc (cat a  (pubk a)) (privk ks))))))
-  (defrole resp ; B
-    (vars (a name) (b name) (ks name) (k skey))
-    (trace (recv (cat (enc (enc k (privk a)) (pubk b))
-		      (enc (cat b (pubk b)) (privk ks))
-		      (enc (cat a (pubk a)) (privk ks))))))
-  (defrole keyserver
-    (vars (a name) (b name) (ks name))
-    (trace (recv (cat a b))
-	   (send (cat (enc (cat b (pubk b)) (privk ks))
-		      (enc (cat a (pubk a)) (privk ks)))))))
-
-;;; For the preskeleton, I'd like to require every initiator and
-;;; respondent to use the same ks.  How can that be done?
-
-(defskeleton denning-sacco-with-pk
-  (vars (a name) (b name) (ks name) (k skey))
-  (defstrand resp 1 (a a) (b b) (ks ks) (k k))
-  (non-orig (privk b) (privk a) (privk ks))
-  (uniq-orig k))
diff --git a/tst/dy.tst b/tst/dy.tst
# file too large to diff: tst/dy.tst
diff --git a/tst/dy_shapes.tst b/tst/dy_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/dy_shapes.tst
@@ -0,0 +1,91 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Example 1.3 from 1983 Dolev-Yao Paper" (bound 12))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/dy.lsp")
+
+(comment "Strand count bounded at 12")
+
+(defprotocol dy basic
+  (defrole init
+    (vars (a b name) (m text))
+    (trace (send (enc (enc m (pubk b)) a (pubk b)))
+      (recv (enc (enc m (pubk a)) b (pubk a)))))
+  (defrole resp
+    (vars (a b name) (m mesg))
+    (trace (recv (enc (enc m (pubk b)) a (pubk b)))
+      (send (enc (enc m (pubk a)) b (pubk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton dy
+  (vars (m text) (a b name))
+  (defstrand init 1 (m m) (a a) (b b))
+  (deflistener m)
+  (non-orig (privk a) (privk b))
+  (uniq-orig m)
+  (traces ((send (enc (enc m (pubk b)) a (pubk b))))
+    ((recv m) (send m)))
+  (label 0)
+  (unrealized (1 0))
+  (preskeleton)
+  (origs (m (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton dy
+  (vars (m text) (a b a-0 a-1 name))
+  (defstrand init 1 (m m) (a a) (b b))
+  (deflistener m)
+  (defstrand resp 2 (m (cat (enc m (pubk b)) a)) (a a-0) (b b))
+  (defstrand resp 2 (m m) (a a-1) (b b))
+  (precedes ((0 0) (2 0)) ((2 1) (3 0)) ((3 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig m)
+  (operation nonce-test (displaced 4 2 resp 2) m (3 0)
+    (enc (enc m (pubk b)) a (pubk b)))
+  (traces ((send (enc (enc m (pubk b)) a (pubk b)))) ((recv m) (send m))
+    ((recv (enc (enc (enc m (pubk b)) a (pubk b)) a-0 (pubk b)))
+      (send (enc (enc (enc m (pubk b)) a (pubk a-0)) b (pubk a-0))))
+    ((recv (enc (enc m (pubk b)) a-1 (pubk b)))
+      (send (enc (enc m (pubk a-1)) b (pubk a-1)))))
+  (label 7)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (m m))))
+  (origs (m (0 0))))
+
+(defskeleton dy
+  (vars (m text) (a b a-0 a-1 name))
+  (defstrand init 1 (m m) (a a) (b b))
+  (deflistener m)
+  (defstrand resp 2 (m m) (a a) (b b))
+  (defstrand resp 2 (m (cat (enc m (pubk a)) b)) (a a-0) (b a))
+  (defstrand resp 2 (m m) (a a-1) (b a))
+  (precedes ((0 0) (2 0)) ((2 1) (3 0)) ((3 1) (4 0)) ((4 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig m)
+  (operation nonce-test (displaced 5 3 resp 2) m (4 0)
+    (enc (enc m (pubk a)) b (pubk a)) (enc (enc m (pubk b)) a (pubk b)))
+  (traces ((send (enc (enc m (pubk b)) a (pubk b)))) ((recv m) (send m))
+    ((recv (enc (enc m (pubk b)) a (pubk b)))
+      (send (enc (enc m (pubk a)) b (pubk a))))
+    ((recv (enc (enc (enc m (pubk a)) b (pubk a)) a-0 (pubk a)))
+      (send (enc (enc (enc m (pubk a)) b (pubk a-0)) a (pubk a-0))))
+    ((recv (enc (enc m (pubk a)) a-1 (pubk a)))
+      (send (enc (enc m (pubk a-1)) a (pubk a-1)))))
+  (label 106)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (m m))))
+  (origs (m (0 0))))
+
+(comment "Step limit exceeded--aborting run")
diff --git a/tst/encsig.tst b/tst/encsig.tst
--- a/tst/encsig.tst
+++ b/tst/encsig.tst
@@ -1,7 +1,7 @@
 (herald "Encrypted Signed Message Example"
   (comment "Shows examples of key usage of asymmetric keys"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/encsig.scm")
 
 (defprotocol mult-keys-enc-sig basic
@@ -45,6 +45,7 @@
   (uniq-orig n1)
   (operation encryption-test (added-strand resp 2)
     (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)) (0 1))
+  (strand-map 0)
   (traces
     ((send (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
       (recv (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
@@ -101,6 +102,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand init 1)
     (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
       (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
@@ -120,6 +122,7 @@
   (uniq-orig n2)
   (operation encryption-test (displaced 1 2 init 3)
     (enc (enc n2 (pubk "enc" b)) (privk "sig" a)) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
       (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
@@ -144,6 +147,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand init 3)
     (enc (enc n2 (pubk "enc" b)) (privk "sig" a)) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
       (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
@@ -202,6 +206,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand init 3) n2 (0 2)
     (enc n1 n2 (pubk "enc" a)))
+  (strand-map 0)
   (traces
     ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
       (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
@@ -259,6 +264,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand init 1)
     (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
       (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
@@ -278,6 +284,7 @@
   (uniq-orig n2)
   (operation encryption-test (displaced 1 2 init 3)
     (enc (enc n2 (pubk "enc" b)) (privk "sig" a)) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
       (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
@@ -302,6 +309,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand init 3)
     (enc (enc n2 (pubk "enc" b)) (privk "sig" a)) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
       (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
@@ -325,6 +333,7 @@
   (uniq-orig n2)
   (operation nonce-test (contracted (n1-0 n1)) n2 (2 1)
     (enc n1 n2 (pubk "enc" a)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
       (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
@@ -350,6 +359,7 @@
   (uniq-orig n2)
   (operation nonce-test (displaced 1 3 init 3) n2 (2 1)
     (enc n1 n2 (pubk "enc" a)))
+  (strand-map 0 2 1)
   (traces
     ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
       (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
@@ -363,6 +373,8 @@
   (label 13)
   (parent 11)
   (seen 10)
+  (seen-ops
+    (10 (operation generalization deleted (1 0)) (strand-map 0 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -377,6 +389,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand init 3) n2 (2 1)
     (enc n1 n2 (pubk "enc" a)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
       (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
diff --git a/tst/encsig_shapes.tst b/tst/encsig_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/encsig_shapes.tst
@@ -0,0 +1,315 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Encrypted Signed Message Example"
+  (comment "Shows examples of key usage of asymmetric keys"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/encsig.scm")
+
+(defprotocol mult-keys-enc-sig basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (recv (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (send (enc (enc n2 (pubk "enc" b)) (privk "sig" a)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (recv (enc (enc n2 (pubk "enc" b)) (privk "sig" a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton mult-keys-enc-sig
+  (vars (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (non-orig (privk "enc" a) (privk "sig" a) (privk "sig" b))
+  (uniq-orig n1)
+  (traces
+    ((send (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (recv (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (send (enc (enc n2 (pubk "enc" b)) (privk "sig" a)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n1 (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton mult-keys-enc-sig
+  (vars (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk "enc" a) (privk "sig" a) (privk "sig" b))
+  (uniq-orig n1)
+  (operation encryption-test (added-strand resp 2)
+    (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)) (0 1))
+  (traces
+    ((send (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (recv (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (send (enc (enc n2 (pubk "enc" b)) (privk "sig" a))))
+    ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol mult-keys-enc-sig basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (recv (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (send (enc (enc n2 (pubk "enc" b)) (privk "sig" a)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (recv (enc (enc n2 (pubk "enc" b)) (privk "sig" a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton mult-keys-enc-sig
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (non-orig (privk "sig" a))
+  (uniq-orig n2)
+  (traces
+    ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (recv (enc (enc n2 (pubk "enc" b)) (privk "sig" a)))))
+  (label 2)
+  (unrealized (0 0) (0 2))
+  (origs (n2 (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton mult-keys-enc-sig
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
+  (non-orig (privk "sig" a))
+  (uniq-orig n2)
+  (operation encryption-test (displaced 1 2 init 3)
+    (enc (enc n2 (pubk "enc" b)) (privk "sig" a)) (0 2))
+  (traces
+    ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (recv (enc (enc n2 (pubk "enc" b)) (privk "sig" a))))
+    ((send (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (recv (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (send (enc (enc n2 (pubk "enc" b)) (privk "sig" a)))))
+  (label 4)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 1))))
+
+(defskeleton mult-keys-enc-sig
+  (vars (n2 n1 n1-0 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 1 (n1 n1) (a a) (b b))
+  (defstrand init 3 (n1 n1-0) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((2 2) (0 2)))
+  (non-orig (privk "sig" a))
+  (uniq-orig n2)
+  (operation encryption-test (added-strand init 3)
+    (enc (enc n2 (pubk "enc" b)) (privk "sig" a)) (0 2))
+  (traces
+    ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (recv (enc (enc n2 (pubk "enc" b)) (privk "sig" a))))
+    ((send (enc (enc n1 a (pubk "enc" b)) (privk "sig" a))))
+    ((send (enc (enc n1-0 a (pubk "enc" b)) (privk "sig" a)))
+      (recv (enc (enc n1-0 n2 (pubk "enc" a)) (privk "sig" b)))
+      (send (enc (enc n2 (pubk "enc" b)) (privk "sig" a)))))
+  (label 5)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol mult-keys-enc-sig basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (recv (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (send (enc (enc n2 (pubk "enc" b)) (privk "sig" a)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (recv (enc (enc n2 (pubk "enc" b)) (privk "sig" a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton mult-keys-enc-sig
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (non-orig (privk "enc" a))
+  (uniq-orig n2)
+  (traces
+    ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (recv (enc (enc n2 (pubk "enc" b)) (privk "sig" a)))))
+  (label 6)
+  (unrealized (0 2))
+  (origs (n2 (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton mult-keys-enc-sig
+  (vars (n2 n1 text) (a b b-0 name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b-0))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig (privk "enc" a))
+  (uniq-orig n2)
+  (operation nonce-test (added-strand init 3) n2 (0 2)
+    (enc n1 n2 (pubk "enc" a)))
+  (traces
+    ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (recv (enc (enc n2 (pubk "enc" b)) (privk "sig" a))))
+    ((send (enc (enc n1 a (pubk "enc" b-0)) (privk "sig" a)))
+      (recv (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b-0)))
+      (send (enc (enc n2 (pubk "enc" b-0)) (privk "sig" a)))))
+  (label 7)
+  (parent 6)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol mult-keys-enc-sig basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (recv (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (send (enc (enc n2 (pubk "enc" b)) (privk "sig" a)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (recv (enc (enc n2 (pubk "enc" b)) (privk "sig" a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton mult-keys-enc-sig
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (non-orig (privk "enc" a) (privk "sig" a))
+  (uniq-orig n2)
+  (traces
+    ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (recv (enc (enc n2 (pubk "enc" b)) (privk "sig" a)))))
+  (label 8)
+  (unrealized (0 0) (0 2))
+  (origs (n2 (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton mult-keys-enc-sig
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
+  (non-orig (privk "enc" a) (privk "sig" a))
+  (uniq-orig n2)
+  (operation encryption-test (displaced 1 2 init 3)
+    (enc (enc n2 (pubk "enc" b)) (privk "sig" a)) (0 2))
+  (traces
+    ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (recv (enc (enc n2 (pubk "enc" b)) (privk "sig" a))))
+    ((send (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (recv (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (send (enc (enc n2 (pubk "enc" b)) (privk "sig" a)))))
+  (label 10)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 1))))
+
+(defskeleton mult-keys-enc-sig
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 1 (n1 n1) (a a) (b b))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((2 2) (0 2)))
+  (non-orig (privk "enc" a) (privk "sig" a))
+  (uniq-orig n2)
+  (operation nonce-test (contracted (n1-0 n1)) n2 (2 1)
+    (enc n1 n2 (pubk "enc" a)))
+  (traces
+    ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (recv (enc (enc n2 (pubk "enc" b)) (privk "sig" a))))
+    ((send (enc (enc n1 a (pubk "enc" b)) (privk "sig" a))))
+    ((send (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (recv (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (send (enc (enc n2 (pubk "enc" b)) (privk "sig" a)))))
+  (label 12)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 1))))
+
+(defskeleton mult-keys-enc-sig
+  (vars (n2 n1 n1-0 text) (a b b-0 name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 1 (n1 n1) (a a) (b b))
+  (defstrand init 3 (n1 n1-0) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b-0))
+  (precedes ((0 1) (3 1)) ((1 0) (0 0)) ((2 2) (0 2)) ((3 2) (2 1)))
+  (non-orig (privk "enc" a) (privk "sig" a))
+  (uniq-orig n2)
+  (operation nonce-test (added-strand init 3) n2 (2 1)
+    (enc n1 n2 (pubk "enc" a)))
+  (traces
+    ((recv (enc (enc n1 a (pubk "enc" b)) (privk "sig" a)))
+      (send (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b)))
+      (recv (enc (enc n2 (pubk "enc" b)) (privk "sig" a))))
+    ((send (enc (enc n1 a (pubk "enc" b)) (privk "sig" a))))
+    ((send (enc (enc n1-0 a (pubk "enc" b)) (privk "sig" a)))
+      (recv (enc (enc n1-0 n2 (pubk "enc" a)) (privk "sig" b)))
+      (send (enc (enc n2 (pubk "enc" b)) (privk "sig" a))))
+    ((send (enc (enc n1 a (pubk "enc" b-0)) (privk "sig" a)))
+      (recv (enc (enc n1 n2 (pubk "enc" a)) (privk "sig" b-0)))
+      (send (enc (enc n2 (pubk "enc" b-0)) (privk "sig" a)))))
+  (label 14)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/envelope.tst b/tst/envelope.tst
--- a/tst/envelope.tst
+++ b/tst/envelope.tst
@@ -1,6 +1,6 @@
 (herald "Envelope Protocol" (bound 15))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/envelope.scm")
 (comment "Strand count bounded at 15")
 
@@ -102,6 +102,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -125,6 +126,7 @@
   (uniq-orig v n k)
   (operation encryption-test (displaced 3 1 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (2 0))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -149,6 +151,7 @@
   (non-orig esk pcrkey aik aik-0 (invk k))
   (uniq-orig v n k)
   (operation nonce-test (added-strand tpm-decrypt 4) v (0 0) (enc v k))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -177,6 +180,7 @@
   (uniq-orig v n k)
   (operation encryption-test (displaced 4 2 tpm-create-key 2)
     (enc "created" k pcrvals aik-0) (3 1))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -208,6 +212,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-extend 3)
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -242,6 +247,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -276,6 +282,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -310,6 +317,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-extend 3)
     (enc (hash "0" n) (hash pcrkey)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -349,6 +357,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash "0" n) (hash pcrkey)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -386,6 +395,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash "0" n) (hash pcrkey)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -424,6 +434,7 @@
   (uniq-orig v n k)
   (operation encryption-test (displaced 6 1 alice 1)
     (enc "extend" n esk-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -463,6 +474,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-power-on 2)
     (enc "0" (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -505,6 +517,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc "0" (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -631,6 +644,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -656,6 +670,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 3 1 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -684,6 +699,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik) (0 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -718,6 +734,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend 3)
     (enc (hash (hash "0" n) "refuse") (hash pcrkey)) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -755,6 +772,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash (hash "0" n) "refuse") (hash pcrkey)) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -792,6 +810,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash (hash "0" n) "refuse") (hash pcrkey)) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -829,6 +848,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend 3)
     (enc (hash "0" n) (hash pcrkey)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -871,6 +891,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash "0" n) (hash pcrkey)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -911,6 +932,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash "0" n) (hash pcrkey)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -952,6 +974,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 6 1 alice 1)
     (enc "extend" n esk-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -994,6 +1017,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-power-on 2)
     (enc "0" (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1039,6 +1063,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc "0" (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1172,6 +1197,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (2 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1199,6 +1225,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 4 2 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1228,6 +1255,7 @@
   (non-orig esk pcrkey aik aik-0 (invk k))
   (uniq-orig n v k)
   (operation nonce-test (added-strand tpm-decrypt 4) v (1 0) (enc v k))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1261,6 +1289,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 5 3 tpm-create-key 2)
     (enc "created" k pcrvals aik-0) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1296,6 +1325,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend 3)
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1334,6 +1364,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1372,6 +1403,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1410,6 +1442,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend 3)
     (enc (hash "0" n) (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1453,6 +1486,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash "0" n) (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1494,6 +1528,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash "0" n) (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1536,6 +1571,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 7 2 alice 1)
     (enc "extend" n esk-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1580,6 +1616,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-power-on 2)
     (enc "0" (hash pcrkey)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1625,6 +1662,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc "0" (hash pcrkey)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1674,6 +1712,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik) (0 0))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1727,6 +1766,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend 3)
     (enc (hash (hash "0" n) "refuse") (hash pcrkey-0)) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1783,6 +1823,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash (hash "0" n) "refuse") (hash pcrkey-0)) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1839,6 +1880,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey-0))
     (enc (hash (hash "0" n) "refuse") (hash pcrkey-0)) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1894,6 +1936,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 10 6 tpm-extend-enc 3)
     (enc (hash "0" n) (hash pcrkey-0)) (9 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -1955,6 +1998,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend 3)
     (enc (hash "0" n) (hash pcrkey-0)) (9 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2017,6 +2061,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash "0" n) (hash pcrkey-0)) (9 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2076,6 +2121,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey-0))
     (enc (hash "0" n) (hash pcrkey-0)) (9 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2137,6 +2183,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 11 2 alice 1)
     (enc "extend" n esk-0) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2198,6 +2245,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 11 7 tpm-power-on 2)
     (enc "0" (hash pcrkey-0)) (10 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2262,6 +2310,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-power-on 2)
     (enc "0" (hash pcrkey-0)) (10 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2327,6 +2376,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey-0))
     (enc "0" (hash pcrkey-0)) (10 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2471,6 +2521,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2494,6 +2545,7 @@
   (uniq-orig v n k)
   (operation encryption-test (displaced 3 1 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (2 0))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2518,6 +2570,7 @@
   (non-orig esk pcrkey aik aik-0 (invk k))
   (uniq-orig v n k)
   (operation nonce-test (added-strand tpm-decrypt 4) v (0 0) (enc v k))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2546,6 +2599,7 @@
   (uniq-orig v n k)
   (operation encryption-test (displaced 4 2 tpm-create-key 2)
     (enc "created" k pcrvals aik-0) (3 1))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2577,6 +2631,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-extend 3)
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2611,6 +2666,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2645,6 +2701,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2680,6 +2737,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash "0" n) (hash pcrkey)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2717,6 +2775,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash "0" n) (hash pcrkey)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2755,6 +2814,7 @@
   (uniq-orig v n k)
   (operation encryption-test (displaced 6 1 alice 1)
     (enc "extend" n esk-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2794,6 +2854,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-power-on 2)
     (enc "0" (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2836,6 +2897,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc "0" (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -2972,6 +3034,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -2997,6 +3060,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 3 1 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3025,6 +3089,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik) (0 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3059,6 +3124,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend 3)
     (enc (hash (hash "0" n) "refuse") (hash pcrkey)) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3096,6 +3162,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash (hash "0" n) "refuse") (hash pcrkey)) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3133,6 +3200,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash (hash "0" n) "refuse") (hash pcrkey)) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3171,6 +3239,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash "0" n) (hash pcrkey)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3211,6 +3280,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash "0" n) (hash pcrkey)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3252,6 +3322,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 6 1 alice 1)
     (enc "extend" n esk-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3294,6 +3365,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-power-on 2)
     (enc "0" (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3339,6 +3411,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc "0" (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3482,6 +3555,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (2 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3509,6 +3583,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 4 2 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3538,6 +3613,7 @@
   (non-orig esk pcrkey aik aik-0 (invk k))
   (uniq-orig n v k)
   (operation nonce-test (added-strand tpm-decrypt 4) v (1 0) (enc v k))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3571,6 +3647,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 5 3 tpm-create-key 2)
     (enc "created" k pcrvals aik-0) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3606,6 +3683,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend 3)
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3644,6 +3722,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3682,6 +3761,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3721,6 +3801,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash "0" n) (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3762,6 +3843,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash "0" n) (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3804,6 +3886,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 7 2 alice 1)
     (enc "extend" n esk-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3848,6 +3931,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-power-on 2)
     (enc "0" (hash pcrkey)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3893,6 +3977,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc "0" (hash pcrkey)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3942,6 +4027,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik) (0 0))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -3995,6 +4081,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend 3)
     (enc (hash (hash "0" n) "refuse") (hash pcrkey-0)) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4051,6 +4138,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash (hash "0" n) "refuse") (hash pcrkey-0)) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4107,6 +4195,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey-0))
     (enc (hash (hash "0" n) "refuse") (hash pcrkey-0)) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4165,6 +4254,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash "0" n) (hash pcrkey-0)) (9 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4224,6 +4314,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey-0))
     (enc (hash "0" n) (hash pcrkey-0)) (9 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4285,6 +4376,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 11 2 alice 1)
     (enc "extend" n esk-0) (10 0))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4347,6 +4439,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-power-on 2)
     (enc "0" (hash pcrkey-0)) (10 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4412,6 +4505,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey-0))
     (enc "0" (hash pcrkey-0)) (10 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9 10)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -4566,6 +4660,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -4589,6 +4684,7 @@
   (uniq-orig v n k)
   (operation encryption-test (displaced 3 1 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (2 0))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -4613,6 +4709,7 @@
   (non-orig esk pcrkey aik aik-0 (invk k))
   (uniq-orig v n k)
   (operation nonce-test (added-strand tpm-decrypt 4) v (0 0) (enc v k))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -4641,6 +4738,7 @@
   (uniq-orig v n k)
   (operation encryption-test (displaced 4 2 tpm-create-key 2)
     (enc "created" k pcrvals aik-0) (3 1))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -4672,6 +4770,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-extend 3)
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -4706,6 +4805,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -4740,6 +4840,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -4775,6 +4876,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash "0" n) (hash pcrkey)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -4812,6 +4914,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash "0" n) (hash pcrkey)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -4850,6 +4953,7 @@
   (uniq-orig v n k)
   (operation encryption-test (displaced 6 1 alice 1)
     (enc "extend" n esk-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -4889,6 +4993,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-strand tpm-power-on 2)
     (enc "0" (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -4931,6 +5036,7 @@
   (uniq-orig v n k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc "0" (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send (enc "extend" n esk))
       (send (enc "create key" (hash (hash "0" n) "obtain") esk))
@@ -5077,6 +5183,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5102,6 +5209,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 3 1 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5130,6 +5238,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik) (0 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5164,6 +5273,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend 3)
     (enc (hash (hash "0" n) "refuse") (hash pcrkey)) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5201,6 +5311,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash (hash "0" n) "refuse") (hash pcrkey)) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5238,6 +5349,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash (hash "0" n) "refuse") (hash pcrkey)) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5276,6 +5388,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash "0" n) (hash pcrkey)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5316,6 +5429,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash "0" n) (hash pcrkey)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5357,6 +5471,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 6 1 alice 1)
     (enc "extend" n esk-0) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5399,6 +5514,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-power-on 2)
     (enc "0" (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5444,6 +5560,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc "0" (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5597,6 +5714,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k (hash (hash "0" n) "obtain") aik) (2 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5624,6 +5742,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 4 2 alice 2)
     (enc "create key" (hash (hash "0" n) "obtain") esk-0) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5653,6 +5772,7 @@
   (non-orig esk pcrkey aik aik-0 (invk k))
   (uniq-orig n v k)
   (operation nonce-test (added-strand tpm-decrypt 4) v (1 0) (enc v k))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5686,6 +5806,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 5 3 tpm-create-key 2)
     (enc "created" k pcrvals aik-0) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5721,6 +5842,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend 3)
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5759,6 +5881,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5797,6 +5920,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash (hash "0" n) "obtain") (hash pcrkey)) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5836,6 +5960,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash "0" n) (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5877,6 +6002,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc (hash "0" n) (hash pcrkey)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5919,6 +6045,7 @@
   (uniq-orig n v k)
   (operation encryption-test (displaced 7 2 alice 1)
     (enc "extend" n esk-0) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -5963,6 +6090,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-power-on 2)
     (enc "0" (hash pcrkey)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -6008,6 +6136,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey))
     (enc "0" (hash pcrkey)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -6057,6 +6186,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik) (0 0))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -6110,6 +6240,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend 3)
     (enc (hash (hash "0" n) "refuse") (hash pcrkey-0)) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -6166,6 +6297,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash (hash "0" n) "refuse") (hash pcrkey-0)) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -6222,6 +6354,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey-0))
     (enc (hash (hash "0" n) "refuse") (hash pcrkey-0)) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -6280,6 +6413,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-strand tpm-extend-enc 3)
     (enc (hash "0" n) (hash pcrkey-0)) (9 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
@@ -6340,6 +6474,7 @@
   (uniq-orig n v k)
   (operation encryption-test (added-listener (hash pcrkey-0))
     (enc (hash "0" n) (hash pcrkey-0)) (9 1))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
   (traces
     ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
       (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
diff --git a/tst/envelope_shapes.tst b/tst/envelope_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/envelope_shapes.tst
@@ -0,0 +1,1248 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Envelope Protocol" (bound 15))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/envelope.scm")
+
+(comment "Strand count bounded at 15")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (pcrkey skey))
+    (trace (recv "power on") (send (enc "0" (hash pcrkey))))
+    (non-orig pcrkey))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (pcrkey skey))
+    (trace (recv (cat "extend" value))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcrkey esk skey))
+    (trace (recv (enc "extend" value esk))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey esk))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcrkey skey) (aik akey))
+    (trace (recv (cat "quote" nonce))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig pcrkey aik))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (pcrkey skey))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik))
+      (recv (enc pcrvals (hash pcrkey))) (send m))
+    (non-orig pcrkey aik))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (v n data) (esk skey) (k aik akey))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig v n)
+  (traces ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 0)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (v n data) (esk pcrkey skey) (k aik akey))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcrvals (hash (hash "0" n) "obtain"))
+    (pcrkey pcrkey) (k k) (aik aik))
+  (defstrand tpm-extend 3 (value "obtain") (current-value (hash "0" n))
+    (pcrkey pcrkey))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcrkey pcrkey) (esk esk))
+  (defstrand tpm-power-on 2 (pcrkey pcrkey))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 3) (0 0)) ((4 2) (3 2)) ((5 2) (4 1)) ((6 1) (5 1)))
+  (non-orig esk pcrkey aik (invk k))
+  (uniq-orig v n k)
+  (operation encryption-test (added-strand tpm-power-on 2)
+    (enc "0" (hash pcrkey)) (5 1))
+  (traces ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (recv (enc (hash (hash "0" n) "obtain") (hash pcrkey))) (send v))
+    ((recv (cat "extend" "obtain"))
+      (recv (enc (hash "0" n) (hash pcrkey)))
+      (send (enc (hash (hash "0" n) "obtain") (hash pcrkey))))
+    ((recv (enc "extend" n esk)) (recv (enc "0" (hash pcrkey)))
+      (send (enc (hash "0" n) (hash pcrkey))))
+    ((recv "power on") (send (enc "0" (hash pcrkey)))))
+  (label 13)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((v v) (n n) (esk esk) (k k) (aik aik))))
+  (origs (n (1 0)) (k (2 1)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (pcrkey skey))
+    (trace (recv "power on") (send (enc "0" (hash pcrkey))))
+    (non-orig pcrkey))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (pcrkey skey))
+    (trace (recv (cat "extend" value))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcrkey esk skey))
+    (trace (recv (enc "extend" value esk))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey esk))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcrkey skey) (aik akey))
+    (trace (recv (cat "quote" nonce))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig pcrkey aik))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (pcrkey skey))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik))
+      (recv (enc pcrvals (hash pcrkey))) (send m))
+    (non-orig pcrkey aik))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig n v)
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 15)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (n v data) (esk pcrkey skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (pcrkey pcrkey)
+    (aik aik))
+  (defstrand tpm-extend 3 (value "refuse") (current-value (hash "0" n))
+    (pcrkey pcrkey))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcrkey pcrkey) (esk esk))
+  (defstrand tpm-power-on 2 (pcrkey pcrkey))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 2) (0 0)) ((4 2) (3 1)) ((5 2) (4 1)) ((6 1) (5 1)))
+  (non-orig esk pcrkey aik (invk k))
+  (uniq-orig n v k)
+  (operation encryption-test (added-strand tpm-power-on 2)
+    (enc "0" (hash pcrkey)) (5 1))
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "quote" (enc v k)))
+      (recv (enc (hash (hash "0" n) "refuse") (hash pcrkey)))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv (cat "extend" "refuse"))
+      (recv (enc (hash "0" n) (hash pcrkey)))
+      (send (enc (hash (hash "0" n) "refuse") (hash pcrkey))))
+    ((recv (enc "extend" n esk)) (recv (enc "0" (hash pcrkey)))
+      (send (enc (hash "0" n) (hash pcrkey))))
+    ((recv "power on") (send (enc "0" (hash pcrkey)))))
+  (label 27)
+  (parent 15)
+  (realized)
+  (shape)
+  (maps ((0 1) ((n n) (v v) (k k) (aik aik) (esk esk))))
+  (origs (n (1 0)) (k (2 1)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (pcrkey skey))
+    (trace (recv "power on") (send (enc "0" (hash pcrkey))))
+    (non-orig pcrkey))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (pcrkey skey))
+    (trace (recv (cat "extend" value))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcrkey esk skey))
+    (trace (recv (enc "extend" value esk))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey esk))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcrkey skey) (aik akey))
+    (trace (recv (cat "quote" nonce))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig pcrkey aik))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (pcrkey skey))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik))
+      (recv (enc pcrvals (hash pcrkey))) (send m))
+    (non-orig pcrkey aik))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig n v)
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 29)
+  (unrealized (0 0) (1 0) (2 2))
+  (preskeleton)
+  (origs (v (2 3)) (n (2 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (n v data) (esk pcrkey skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcrvals (hash (hash "0" n) "obtain"))
+    (pcrkey pcrkey) (k k) (aik aik))
+  (defstrand tpm-extend 3 (value "obtain") (current-value (hash "0" n))
+    (pcrkey pcrkey))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcrkey pcrkey) (esk esk))
+  (defstrand tpm-power-on 2 (pcrkey pcrkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (pcrkey pcrkey)
+    (aik aik))
+  (defstrand tpm-extend 3 (value "refuse") (current-value (hash "0" n))
+    (pcrkey pcrkey))
+  (precedes ((2 0) (6 0)) ((2 1) (3 0)) ((2 3) (4 0)) ((2 3) (8 0))
+    ((3 1) (2 2)) ((4 3) (1 0)) ((5 2) (4 2)) ((6 2) (5 1))
+    ((6 2) (9 1)) ((7 1) (6 1)) ((8 2) (0 0)) ((9 2) (8 1)))
+  (non-orig esk pcrkey aik (invk k))
+  (uniq-orig n v k)
+  (operation encryption-test (displaced 10 6 tpm-extend-enc 3)
+    (enc (hash "0" n) (hash pcrkey-0)) (9 1))
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (recv (enc (hash (hash "0" n) "obtain") (hash pcrkey))) (send v))
+    ((recv (cat "extend" "obtain"))
+      (recv (enc (hash "0" n) (hash pcrkey)))
+      (send (enc (hash (hash "0" n) "obtain") (hash pcrkey))))
+    ((recv (enc "extend" n esk)) (recv (enc "0" (hash pcrkey)))
+      (send (enc (hash "0" n) (hash pcrkey))))
+    ((recv "power on") (send (enc "0" (hash pcrkey))))
+    ((recv (cat "quote" (enc v k)))
+      (recv (enc (hash (hash "0" n) "refuse") (hash pcrkey)))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv (cat "extend" "refuse"))
+      (recv (enc (hash "0" n) (hash pcrkey)))
+      (send (enc (hash (hash "0" n) "refuse") (hash pcrkey)))))
+  (label 48)
+  (parent 29)
+  (realized)
+  (shape)
+  (maps ((0 1 2) ((n n) (v v) (k k) (aik aik) (esk esk))))
+  (origs (n (2 0)) (k (3 1)) (v (2 3))))
+
+(defskeleton envelope
+  (vars (n v data) (esk pcrkey skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcrvals (hash (hash "0" n) "obtain"))
+    (pcrkey pcrkey) (k k) (aik aik))
+  (defstrand tpm-extend 3 (value "obtain") (current-value (hash "0" n))
+    (pcrkey pcrkey))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcrkey pcrkey) (esk esk))
+  (defstrand tpm-power-on 2 (pcrkey pcrkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (pcrkey pcrkey)
+    (aik aik))
+  (defstrand tpm-extend 3 (value "refuse") (current-value (hash "0" n))
+    (pcrkey pcrkey))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcrkey pcrkey) (esk esk))
+  (precedes ((2 0) (6 0)) ((2 0) (10 0)) ((2 1) (3 0)) ((2 3) (4 0))
+    ((2 3) (8 0)) ((3 1) (2 2)) ((4 3) (1 0)) ((5 2) (4 2))
+    ((6 2) (5 1)) ((7 1) (6 1)) ((7 1) (10 1)) ((8 2) (0 0))
+    ((9 2) (8 1)) ((10 2) (9 1)))
+  (non-orig esk pcrkey aik (invk k))
+  (uniq-orig n v k)
+  (operation encryption-test (displaced 11 7 tpm-power-on 2)
+    (enc "0" (hash pcrkey-0)) (10 1))
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (recv (enc (hash (hash "0" n) "obtain") (hash pcrkey))) (send v))
+    ((recv (cat "extend" "obtain"))
+      (recv (enc (hash "0" n) (hash pcrkey)))
+      (send (enc (hash (hash "0" n) "obtain") (hash pcrkey))))
+    ((recv (enc "extend" n esk)) (recv (enc "0" (hash pcrkey)))
+      (send (enc (hash "0" n) (hash pcrkey))))
+    ((recv "power on") (send (enc "0" (hash pcrkey))))
+    ((recv (cat "quote" (enc v k)))
+      (recv (enc (hash (hash "0" n) "refuse") (hash pcrkey)))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv (cat "extend" "refuse"))
+      (recv (enc (hash "0" n) (hash pcrkey)))
+      (send (enc (hash (hash "0" n) "refuse") (hash pcrkey))))
+    ((recv (enc "extend" n esk)) (recv (enc "0" (hash pcrkey)))
+      (send (enc (hash "0" n) (hash pcrkey)))))
+  (label 53)
+  (parent 29)
+  (realized)
+  (shape)
+  (maps ((0 1 2) ((n n) (v v) (k k) (aik aik) (esk esk))))
+  (origs (n (2 0)) (k (3 1)) (v (2 3))))
+
+(defskeleton envelope
+  (vars (n v data) (esk pcrkey pcrkey-0 skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcrvals (hash (hash "0" n) "obtain"))
+    (pcrkey pcrkey) (k k) (aik aik))
+  (defstrand tpm-extend 3 (value "obtain") (current-value (hash "0" n))
+    (pcrkey pcrkey))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcrkey pcrkey) (esk esk))
+  (defstrand tpm-power-on 2 (pcrkey pcrkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (pcrkey pcrkey-0)
+    (aik aik))
+  (defstrand tpm-extend 3 (value "refuse") (current-value (hash "0" n))
+    (pcrkey pcrkey-0))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcrkey pcrkey-0) (esk esk))
+  (defstrand tpm-power-on 2 (pcrkey pcrkey-0))
+  (precedes ((2 0) (6 0)) ((2 0) (10 0)) ((2 1) (3 0)) ((2 3) (4 0))
+    ((2 3) (8 0)) ((3 1) (2 2)) ((4 3) (1 0)) ((5 2) (4 2))
+    ((6 2) (5 1)) ((7 1) (6 1)) ((8 2) (0 0)) ((9 2) (8 1))
+    ((10 2) (9 1)) ((11 1) (10 1)))
+  (non-orig esk pcrkey pcrkey-0 aik (invk k))
+  (uniq-orig n v k)
+  (operation encryption-test (added-strand tpm-power-on 2)
+    (enc "0" (hash pcrkey-0)) (10 1))
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (recv (enc (hash (hash "0" n) "obtain") (hash pcrkey))) (send v))
+    ((recv (cat "extend" "obtain"))
+      (recv (enc (hash "0" n) (hash pcrkey)))
+      (send (enc (hash (hash "0" n) "obtain") (hash pcrkey))))
+    ((recv (enc "extend" n esk)) (recv (enc "0" (hash pcrkey)))
+      (send (enc (hash "0" n) (hash pcrkey))))
+    ((recv "power on") (send (enc "0" (hash pcrkey))))
+    ((recv (cat "quote" (enc v k)))
+      (recv (enc (hash (hash "0" n) "refuse") (hash pcrkey-0)))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv (cat "extend" "refuse"))
+      (recv (enc (hash "0" n) (hash pcrkey-0)))
+      (send (enc (hash (hash "0" n) "refuse") (hash pcrkey-0))))
+    ((recv (enc "extend" n esk)) (recv (enc "0" (hash pcrkey-0)))
+      (send (enc (hash "0" n) (hash pcrkey-0))))
+    ((recv "power on") (send (enc "0" (hash pcrkey-0)))))
+  (label 54)
+  (parent 29)
+  (realized)
+  (shape)
+  (maps ((0 1 2) ((n n) (v v) (k k) (aik aik) (esk esk))))
+  (origs (n (2 0)) (k (3 1)) (v (2 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (pcrkey skey))
+    (trace (recv "power on") (send (enc "0" (hash pcrkey))))
+    (non-orig pcrkey))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (pcrkey skey))
+    (trace (recv (cat "extend" value))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcrkey esk skey))
+    (trace (recv (enc "extend" value esk))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey esk))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcrkey skey) (aik akey))
+    (trace (recv (cat "quote" nonce))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig pcrkey aik))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (pcrkey skey))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik))
+      (recv (enc pcrvals (hash pcrkey))) (send m))
+    (non-orig pcrkey aik))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defrule ordered-extends
+    (forall ((y z strd) (pcrkey skey))
+      (implies
+        (and (p "tpm-extend" y 3) (p "tpm-extend" z 3)
+          (p "tpm-extend" "pcrkey" y pcrkey)
+          (p "tpm-extend" "pcrkey" z pcrkey))
+        (or (= y z) (prec y 2 z 3) (prec z 2 y 3)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (v n data) (esk skey) (k aik akey))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig v n)
+  (traces ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 56)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (v n data) (esk pcrkey skey) (k aik akey))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcrvals (hash (hash "0" n) "obtain"))
+    (pcrkey pcrkey) (k k) (aik aik))
+  (defstrand tpm-extend 3 (value "obtain") (current-value (hash "0" n))
+    (pcrkey pcrkey))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcrkey pcrkey) (esk esk))
+  (defstrand tpm-power-on 2 (pcrkey pcrkey))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 3) (0 0)) ((4 2) (3 2)) ((5 2) (4 1)) ((6 1) (5 1)))
+  (non-orig esk pcrkey aik (invk k))
+  (uniq-orig v n k)
+  (operation encryption-test (added-strand tpm-power-on 2)
+    (enc "0" (hash pcrkey)) (5 1))
+  (traces ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (recv (enc (hash (hash "0" n) "obtain") (hash pcrkey))) (send v))
+    ((recv (cat "extend" "obtain"))
+      (recv (enc (hash "0" n) (hash pcrkey)))
+      (send (enc (hash (hash "0" n) "obtain") (hash pcrkey))))
+    ((recv (enc "extend" n esk)) (recv (enc "0" (hash pcrkey)))
+      (send (enc (hash "0" n) (hash pcrkey))))
+    ((recv "power on") (send (enc "0" (hash pcrkey)))))
+  (label 68)
+  (parent 56)
+  (realized)
+  (shape)
+  (maps ((0 1) ((v v) (n n) (esk esk) (k k) (aik aik))))
+  (origs (n (1 0)) (k (2 1)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (pcrkey skey))
+    (trace (recv "power on") (send (enc "0" (hash pcrkey))))
+    (non-orig pcrkey))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (pcrkey skey))
+    (trace (recv (cat "extend" value))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcrkey esk skey))
+    (trace (recv (enc "extend" value esk))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey esk))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcrkey skey) (aik akey))
+    (trace (recv (cat "quote" nonce))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig pcrkey aik))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (pcrkey skey))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik))
+      (recv (enc pcrvals (hash pcrkey))) (send m))
+    (non-orig pcrkey aik))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defrule ordered-extends
+    (forall ((y z strd) (pcrkey skey))
+      (implies
+        (and (p "tpm-extend" y 3) (p "tpm-extend" z 3)
+          (p "tpm-extend" "pcrkey" y pcrkey)
+          (p "tpm-extend" "pcrkey" z pcrkey))
+        (or (= y z) (prec y 2 z 3) (prec z 2 y 3)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig n v)
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 70)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (n v data) (esk pcrkey skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (pcrkey pcrkey)
+    (aik aik))
+  (defstrand tpm-extend 3 (value "refuse") (current-value (hash "0" n))
+    (pcrkey pcrkey))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcrkey pcrkey) (esk esk))
+  (defstrand tpm-power-on 2 (pcrkey pcrkey))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 2) (0 0)) ((4 2) (3 1)) ((5 2) (4 1)) ((6 1) (5 1)))
+  (non-orig esk pcrkey aik (invk k))
+  (uniq-orig n v k)
+  (operation encryption-test (added-strand tpm-power-on 2)
+    (enc "0" (hash pcrkey)) (5 1))
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "quote" (enc v k)))
+      (recv (enc (hash (hash "0" n) "refuse") (hash pcrkey)))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv (cat "extend" "refuse"))
+      (recv (enc (hash "0" n) (hash pcrkey)))
+      (send (enc (hash (hash "0" n) "refuse") (hash pcrkey))))
+    ((recv (enc "extend" n esk)) (recv (enc "0" (hash pcrkey)))
+      (send (enc (hash "0" n) (hash pcrkey))))
+    ((recv "power on") (send (enc "0" (hash pcrkey)))))
+  (label 81)
+  (parent 70)
+  (realized)
+  (shape)
+  (maps ((0 1) ((n n) (v v) (k k) (aik aik) (esk esk))))
+  (origs (n (1 0)) (k (2 1)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (pcrkey skey))
+    (trace (recv "power on") (send (enc "0" (hash pcrkey))))
+    (non-orig pcrkey))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (pcrkey skey))
+    (trace (recv (cat "extend" value))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcrkey esk skey))
+    (trace (recv (enc "extend" value esk))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey esk))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcrkey skey) (aik akey))
+    (trace (recv (cat "quote" nonce))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig pcrkey aik))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (pcrkey skey))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik))
+      (recv (enc pcrvals (hash pcrkey))) (send m))
+    (non-orig pcrkey aik))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defrule ordered-extends
+    (forall ((y z strd) (pcrkey skey))
+      (implies
+        (and (p "tpm-extend" y 3) (p "tpm-extend" z 3)
+          (p "tpm-extend" "pcrkey" y pcrkey)
+          (p "tpm-extend" "pcrkey" z pcrkey))
+        (or (= y z) (prec y 2 z 3) (prec z 2 y 3)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig n v)
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 83)
+  (unrealized (0 0) (1 0) (2 2))
+  (preskeleton)
+  (origs (v (2 3)) (n (2 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (n v data) (esk pcrkey pcrkey-0 skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcrvals (hash (hash "0" n) "obtain"))
+    (pcrkey pcrkey) (k k) (aik aik))
+  (defstrand tpm-extend 3 (value "obtain") (current-value (hash "0" n))
+    (pcrkey pcrkey))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcrkey pcrkey) (esk esk))
+  (defstrand tpm-power-on 2 (pcrkey pcrkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (pcrkey pcrkey-0)
+    (aik aik))
+  (defstrand tpm-extend 3 (value "refuse") (current-value (hash "0" n))
+    (pcrkey pcrkey-0))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcrkey pcrkey-0) (esk esk))
+  (defstrand tpm-power-on 2 (pcrkey pcrkey-0))
+  (precedes ((2 0) (6 0)) ((2 0) (10 0)) ((2 1) (3 0)) ((2 3) (4 0))
+    ((2 3) (8 0)) ((3 1) (2 2)) ((4 3) (1 0)) ((5 2) (4 2))
+    ((6 2) (5 1)) ((7 1) (6 1)) ((8 2) (0 0)) ((9 2) (8 1))
+    ((10 2) (9 1)) ((11 1) (10 1)))
+  (non-orig esk pcrkey pcrkey-0 aik (invk k))
+  (uniq-orig n v k)
+  (operation encryption-test (added-strand tpm-power-on 2)
+    (enc "0" (hash pcrkey-0)) (10 1))
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (recv (enc (hash (hash "0" n) "obtain") (hash pcrkey))) (send v))
+    ((recv (cat "extend" "obtain"))
+      (recv (enc (hash "0" n) (hash pcrkey)))
+      (send (enc (hash (hash "0" n) "obtain") (hash pcrkey))))
+    ((recv (enc "extend" n esk)) (recv (enc "0" (hash pcrkey)))
+      (send (enc (hash "0" n) (hash pcrkey))))
+    ((recv "power on") (send (enc "0" (hash pcrkey))))
+    ((recv (cat "quote" (enc v k)))
+      (recv (enc (hash (hash "0" n) "refuse") (hash pcrkey-0)))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv (cat "extend" "refuse"))
+      (recv (enc (hash "0" n) (hash pcrkey-0)))
+      (send (enc (hash (hash "0" n) "refuse") (hash pcrkey-0))))
+    ((recv (enc "extend" n esk)) (recv (enc "0" (hash pcrkey-0)))
+      (send (enc (hash "0" n) (hash pcrkey-0))))
+    ((recv "power on") (send (enc "0" (hash pcrkey-0)))))
+  (label 104)
+  (parent 83)
+  (realized)
+  (shape)
+  (maps ((0 1 2) ((n n) (v v) (k k) (aik aik) (esk esk))))
+  (origs (n (2 0)) (k (3 1)) (v (2 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (pcrkey skey))
+    (trace (recv "power on") (send (enc "0" (hash pcrkey))))
+    (non-orig pcrkey))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (pcrkey skey))
+    (trace (recv (cat "extend" value))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcrkey esk skey))
+    (trace (recv (enc "extend" value esk))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey esk))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcrkey skey) (aik akey))
+    (trace (recv (cat "quote" nonce))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig pcrkey aik))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (pcrkey skey))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik))
+      (recv (enc pcrvals (hash pcrkey))) (send m))
+    (non-orig pcrkey aik))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defrule ordered-extends
+    (forall ((y z strd) (pcrkey skey))
+      (implies
+        (and (p "tpm-extend" y 3) (p "tpm-extend" z 3)
+          (p "tpm-extend" "pcrkey" y pcrkey)
+          (p "tpm-extend" "pcrkey" z pcrkey))
+        (or (= y z) (prec y 2 z 3) (prec z 2 y 3)))))
+  (defrule esk-same-as-pcrkey
+    (forall ((y z strd) (esk pcrkey pcrkey-0 skey))
+      (implies
+        (and (p "tpm-extend-enc" y 3) (p "tpm-extend-enc" z 3)
+          (p "tpm-extend-enc" "esk" y esk)
+          (p "tpm-extend-enc" "esk" z esk)
+          (p "tpm-extend-enc" "pcrkey" y pcrkey)
+          (p "tpm-extend-enc" "pcrkey" z pcrkey-0))
+        (= pcrkey pcrkey-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (v n data) (esk skey) (k aik akey))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig v n)
+  (traces ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 106)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (v n data) (esk pcrkey skey) (k aik akey))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcrvals (hash (hash "0" n) "obtain"))
+    (pcrkey pcrkey) (k k) (aik aik))
+  (defstrand tpm-extend 3 (value "obtain") (current-value (hash "0" n))
+    (pcrkey pcrkey))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcrkey pcrkey) (esk esk))
+  (defstrand tpm-power-on 2 (pcrkey pcrkey))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 3) (0 0)) ((4 2) (3 2)) ((5 2) (4 1)) ((6 1) (5 1)))
+  (non-orig esk pcrkey aik (invk k))
+  (uniq-orig v n k)
+  (operation encryption-test (added-strand tpm-power-on 2)
+    (enc "0" (hash pcrkey)) (5 1))
+  (traces ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (recv (enc (hash (hash "0" n) "obtain") (hash pcrkey))) (send v))
+    ((recv (cat "extend" "obtain"))
+      (recv (enc (hash "0" n) (hash pcrkey)))
+      (send (enc (hash (hash "0" n) "obtain") (hash pcrkey))))
+    ((recv (enc "extend" n esk)) (recv (enc "0" (hash pcrkey)))
+      (send (enc (hash "0" n) (hash pcrkey))))
+    ((recv "power on") (send (enc "0" (hash pcrkey)))))
+  (label 118)
+  (parent 106)
+  (realized)
+  (shape)
+  (maps ((0 1) ((v v) (n n) (esk esk) (k k) (aik aik))))
+  (origs (n (1 0)) (k (2 1)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (pcrkey skey))
+    (trace (recv "power on") (send (enc "0" (hash pcrkey))))
+    (non-orig pcrkey))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (pcrkey skey))
+    (trace (recv (cat "extend" value))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcrkey esk skey))
+    (trace (recv (enc "extend" value esk))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey esk))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcrkey skey) (aik akey))
+    (trace (recv (cat "quote" nonce))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig pcrkey aik))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (pcrkey skey))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik))
+      (recv (enc pcrvals (hash pcrkey))) (send m))
+    (non-orig pcrkey aik))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defrule ordered-extends
+    (forall ((y z strd) (pcrkey skey))
+      (implies
+        (and (p "tpm-extend" y 3) (p "tpm-extend" z 3)
+          (p "tpm-extend" "pcrkey" y pcrkey)
+          (p "tpm-extend" "pcrkey" z pcrkey))
+        (or (= y z) (prec y 2 z 3) (prec z 2 y 3)))))
+  (defrule esk-same-as-pcrkey
+    (forall ((y z strd) (esk pcrkey pcrkey-0 skey))
+      (implies
+        (and (p "tpm-extend-enc" y 3) (p "tpm-extend-enc" z 3)
+          (p "tpm-extend-enc" "esk" y esk)
+          (p "tpm-extend-enc" "esk" z esk)
+          (p "tpm-extend-enc" "pcrkey" y pcrkey)
+          (p "tpm-extend-enc" "pcrkey" z pcrkey-0))
+        (= pcrkey pcrkey-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig n v)
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 120)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (n v data) (esk pcrkey skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (esk esk) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (pcrkey pcrkey)
+    (aik aik))
+  (defstrand tpm-extend 3 (value "refuse") (current-value (hash "0" n))
+    (pcrkey pcrkey))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcrkey pcrkey) (esk esk))
+  (defstrand tpm-power-on 2 (pcrkey pcrkey))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 2) (0 0)) ((4 2) (3 1)) ((5 2) (4 1)) ((6 1) (5 1)))
+  (non-orig esk pcrkey aik (invk k))
+  (uniq-orig n v k)
+  (operation encryption-test (added-strand tpm-power-on 2)
+    (enc "0" (hash pcrkey)) (5 1))
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (send (enc "created" k (hash (hash "0" n) "obtain") aik)))
+    ((recv (cat "quote" (enc v k)))
+      (recv (enc (hash (hash "0" n) "refuse") (hash pcrkey)))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv (cat "extend" "refuse"))
+      (recv (enc (hash "0" n) (hash pcrkey)))
+      (send (enc (hash (hash "0" n) "refuse") (hash pcrkey))))
+    ((recv (enc "extend" n esk)) (recv (enc "0" (hash pcrkey)))
+      (send (enc (hash "0" n) (hash pcrkey))))
+    ((recv "power on") (send (enc "0" (hash pcrkey)))))
+  (label 131)
+  (parent 120)
+  (realized)
+  (shape)
+  (maps ((0 1) ((n n) (v v) (k k) (aik aik) (esk esk))))
+  (origs (n (1 0)) (k (2 1)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (pcrkey skey))
+    (trace (recv "power on") (send (enc "0" (hash pcrkey))))
+    (non-orig pcrkey))
+  (defrole tpm-extend
+    (vars (value current-value mesg) (pcrkey skey))
+    (trace (recv (cat "extend" value))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcrkey esk skey))
+    (trace (recv (enc "extend" value esk))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc (hash current-value value) (hash pcrkey)))
+      (send "ext ok"))
+    (non-orig pcrkey esk))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcrkey skey) (aik akey))
+    (trace (recv (cat "quote" nonce))
+      (recv (enc current-value (hash pcrkey)))
+      (send (enc "quote" current-value nonce aik)))
+    (non-orig pcrkey aik))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcrval mesg) (esk skey))
+    (trace (recv (enc "create key" pcrval esk))
+      (send (enc "created" k pcrval aik)))
+    (non-orig esk aik (invk k))
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcrvals mesg) (k aik akey) (pcrkey skey))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcrvals aik))
+      (recv (enc pcrvals (hash pcrkey))) (send m))
+    (non-orig pcrkey aik))
+  (defrole alice
+    (vars (n v data) (esk skey) (k aik akey))
+    (trace (send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig esk aik)
+    (uniq-orig n v))
+  (defrule ordered-extends
+    (forall ((y z strd) (pcrkey skey))
+      (implies
+        (and (p "tpm-extend" y 3) (p "tpm-extend" z 3)
+          (p "tpm-extend" "pcrkey" y pcrkey)
+          (p "tpm-extend" "pcrkey" z pcrkey))
+        (or (= y z) (prec y 2 z 3) (prec z 2 y 3)))))
+  (defrule esk-same-as-pcrkey
+    (forall ((y z strd) (esk pcrkey pcrkey-0 skey))
+      (implies
+        (and (p "tpm-extend-enc" y 3) (p "tpm-extend-enc" z 3)
+          (p "tpm-extend-enc" "esk" y esk)
+          (p "tpm-extend-enc" "esk" z esk)
+          (p "tpm-extend-enc" "pcrkey" y pcrkey)
+          (p "tpm-extend-enc" "pcrkey" z pcrkey-0))
+        (= pcrkey pcrkey-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton envelope
+  (vars (n v data) (esk skey) (k aik akey))
+  (deflistener (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (esk esk) (k k) (aik aik))
+  (non-orig esk aik)
+  (uniq-orig n v)
+  (traces
+    ((recv (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send (enc "quote" (hash (hash "0" n) "refuse") (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (enc "extend" n esk))
+      (send (enc "create key" (hash (hash "0" n) "obtain") esk))
+      (recv (enc "created" k (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 133)
+  (unrealized (0 0) (1 0) (2 2))
+  (preskeleton)
+  (origs (v (2 3)) (n (2 0)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
diff --git a/tst/epmo-hash.tst b/tst/epmo-hash.tst
--- a/tst/epmo-hash.tst
+++ b/tst/epmo-hash.tst
@@ -1,7 +1,7 @@
 (herald "Electronic Purchase with Money Order Protocol with Key Hashing"
   (comment "Annotated with trust management formulas"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/epmo-hash.scm")
 
 (defprotocol epmo basic
@@ -100,6 +100,7 @@
   (uniq-orig nc nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 1)
     (enc c nc goods price (pubk m)))
+  (strand-map 0)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -126,6 +127,7 @@
   (uniq-orig nc nm)
   (operation nonce-test (contracted (nm-0 nm)) nc (0 1)
     (enc nc nm m goods price (pubk c)) (enc c nc goods price (pubk m)))
+  (strand-map 0 1)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -153,6 +155,7 @@
   (uniq-orig nb nc nm)
   (operation encryption-test (added-strand bank 2)
     (enc (hash c nc nb nm price) (privk b)) (0 3))
+  (strand-map 0 1)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -184,6 +187,7 @@
   (uniq-orig nb nc nm)
   (operation nonce-test (displaced 3 0 customer 3) nc (2 0)
     (enc nc nm m goods price (pubk c)) (enc c nc goods price (pubk m)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -223,6 +227,7 @@
   (uniq-orig nb nc nm nm-0)
   (operation nonce-test (added-strand merchant 2) nc (2 0)
     (enc nc nm m goods price (pubk c)) (enc c nc goods price (pubk m)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -261,6 +266,7 @@
     (enc nc nm m goods price (pubk c))
     (enc nc nm-0 m goods price (pubk c))
     (enc c nc goods price (pubk m)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -280,6 +286,8 @@
   (label 6)
   (parent 5)
   (seen 4)
+  (seen-ops
+    (4 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -379,6 +387,7 @@
   (uniq-orig nm nb)
   (operation encryption-test (added-strand merchant 4)
     (enc (hash b nb nm) (privk m)) (0 2))
+  (strand-map 0)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -404,6 +413,7 @@
   (uniq-orig nm nb)
   (operation encryption-test (displaced 2 0 bank 2)
     (enc (hash c-0 nc-0 nb nm price-0) (privk b)) (1 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -433,6 +443,7 @@
   (uniq-orig nc nm nb)
   (operation nonce-test (added-strand customer 5) nb (1 2)
     (enc nc nb (pubk c)))
+  (strand-map 0 1)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -468,6 +479,7 @@
   (uniq-orig nc nm nb)
   (operation encryption-test (displaced 3 0 bank 2)
     (hash c nc nb nm-0 price-0) (2 3))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -505,6 +517,7 @@
   (uniq-orig nc nm nb)
   (operation encryption-test (added-listener (cat c nc nb nm-0 price-0))
     (hash c nc nb nm-0 price-0) (2 3))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -543,6 +556,7 @@
   (uniq-orig nc nm nb)
   (operation nonce-test (contracted (m-0 m) (goods-0 goods)) nm (2 1)
     (enc nc nm m goods price (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -578,6 +592,7 @@
   (uniq-orig nc nm nb)
   (operation nonce-test (displaced 3 2 customer 3) nm (0 0)
     (enc nc nm m goods price (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -695,6 +710,7 @@
   (uniq-orig nb nm)
   (operation encryption-test (added-strand bank 2)
     (enc (hash c nc nb nm price) (privk b)) (0 2))
+  (strand-map 0)
   (traces
     ((recv (enc c nc goods price (pubk m)))
       (send (enc nc nm m goods price (pubk c)))
@@ -721,6 +737,7 @@
   (uniq-orig nb nc nm)
   (operation nonce-test (added-strand customer 3) nm (1 0)
     (enc nc nm m goods price (pubk c)))
+  (strand-map 0 1)
   (traces
     ((recv (enc c nc goods price (pubk m)))
       (send (enc nc nm m goods price (pubk c)))
@@ -751,6 +768,7 @@
   (uniq-orig nb nc nm)
   (operation nonce-test (displaced 2 3 customer 5) nb (0 2)
     (enc nc nb (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc goods price (pubk m)))
       (send (enc nc nm m goods price (pubk c)))
diff --git a/tst/epmo-hash_shapes.tst b/tst/epmo-hash_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/epmo-hash_shapes.tst
@@ -0,0 +1,376 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Electronic Purchase with Money Order Protocol with Key Hashing"
+  (comment "Annotated with trust management formulas"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/epmo-hash.scm")
+
+(defprotocol epmo basic
+  (defrole bank
+    (vars (b c m name) (nc nm nb data) (price text))
+    (trace (recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (hash c nc nb nm price) (privk b))
+          (enc nc nb (pubk c)))) (recv (enc (hash b nb nm) (privk m))))
+    (uniq-orig nb)
+    (annotations b
+      (1
+        (implies
+          (and (forall ((pm name)) (says c (transfer b price pm nm)))
+            (forall ((pm name)) (says pm (transfer b price pm nm))))
+          (forall ((pm name)) (transfer b price pm nm))))
+      (2
+        (and (says c (transfer b price m nm))
+          (says m (transfer b price m nm))))))
+  (defrole customer
+    (vars (b c m name) (nb nc nm data) (goods price text))
+    (trace (send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b)))
+      (recv
+        (cat (enc (hash c nc nb nm price) (privk b))
+          (enc nc nb (pubk c))))
+      (send (cat (enc (hash c nc nb nm price) (privk b)) nb)))
+    (uniq-orig nc)
+    (annotations c
+      (1
+        (says m
+          (forall ((pb name))
+            (implies (transfer pb price m nm) (ship m goods c)))))
+      (3
+        (says b
+          (implies
+            (and (forall ((pm name)) (says c (transfer b price pm nm)))
+              (forall ((pm name)) (says m (transfer b price pm nm))))
+            (transfer b price m nm)))) (4 (transfer b price m nm))))
+  (defrole merchant
+    (vars (b c m name) (nb nc nm data) (goods price text))
+    (trace (recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv (cat (enc (hash c nc nb nm price) (privk b)) nb))
+      (send (enc (hash b nb nm) (privk m))))
+    (uniq-orig nm)
+    (annotations m
+      (1
+        (forall ((pb name))
+          (implies (transfer pb price m nm) (ship m goods c))))
+      (2
+        (and
+          (says b
+            (implies
+              (and
+                (forall ((pm name)) (says c (transfer b price pm nm)))
+                (forall ((pm name)) (says m (transfer b price pm nm))))
+              (transfer b price m nm)))
+          (says c (transfer b price m nm))))
+      (3 (and (transfer b price m nm) (ship m goods c)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton epmo
+  (vars (nb nc nm data) (goods price text) (b c m name))
+  (defstrand customer 5 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b) (c c) (m m))
+  (non-orig (privk b) (privk c) (privk m))
+  (uniq-orig nc)
+  (traces
+    ((send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b)))
+      (recv
+        (cat (enc (hash c nc nb nm price) (privk b))
+          (enc nc nb (pubk c))))
+      (send (cat (enc (hash c nc nb nm price) (privk b)) nb))))
+  (label 0)
+  (unrealized (0 1) (0 3))
+  (origs (nc (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton epmo
+  (vars (nb nc nm data) (goods price text) (b c m name))
+  (defstrand customer 5 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b) (c c) (m m))
+  (defstrand merchant 2 (nc nc) (nm nm) (goods goods) (price price)
+    (c c) (m m))
+  (defstrand bank 2 (nc nc) (nm nm) (nb nb) (price price) (b b) (c c))
+  (precedes ((0 0) (1 0)) ((0 2) (2 0)) ((1 1) (0 1)) ((2 1) (0 3)))
+  (non-orig (privk b) (privk c) (privk m))
+  (uniq-orig nb nc nm)
+  (operation nonce-test (displaced 3 0 customer 3) nc (2 0)
+    (enc nc nm m goods price (pubk c)) (enc c nc goods price (pubk m)))
+  (traces
+    ((send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b)))
+      (recv
+        (cat (enc (hash c nc nb nm price) (privk b))
+          (enc nc nb (pubk c))))
+      (send (cat (enc (hash c nc nb nm price) (privk b)) nb)))
+    ((recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c))))
+    ((recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (hash c nc nb nm price) (privk b))
+          (enc nc nb (pubk c))))))
+  (label 4)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((b b) (c c) (m m) (nb nb) (nc nc) (nm nm) (goods goods)
+        (price price))))
+  (origs (nc (0 0)) (nb (2 1)) (nm (1 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol epmo basic
+  (defrole bank
+    (vars (b c m name) (nc nm nb data) (price text))
+    (trace (recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (hash c nc nb nm price) (privk b))
+          (enc nc nb (pubk c)))) (recv (enc (hash b nb nm) (privk m))))
+    (uniq-orig nb)
+    (annotations b
+      (1
+        (implies
+          (and (forall ((pm name)) (says c (transfer b price pm nm)))
+            (forall ((pm name)) (says pm (transfer b price pm nm))))
+          (forall ((pm name)) (transfer b price pm nm))))
+      (2
+        (and (says c (transfer b price m nm))
+          (says m (transfer b price m nm))))))
+  (defrole customer
+    (vars (b c m name) (nb nc nm data) (goods price text))
+    (trace (send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b)))
+      (recv
+        (cat (enc (hash c nc nb nm price) (privk b))
+          (enc nc nb (pubk c))))
+      (send (cat (enc (hash c nc nb nm price) (privk b)) nb)))
+    (uniq-orig nc)
+    (annotations c
+      (1
+        (says m
+          (forall ((pb name))
+            (implies (transfer pb price m nm) (ship m goods c)))))
+      (3
+        (says b
+          (implies
+            (and (forall ((pm name)) (says c (transfer b price pm nm)))
+              (forall ((pm name)) (says m (transfer b price pm nm))))
+            (transfer b price m nm)))) (4 (transfer b price m nm))))
+  (defrole merchant
+    (vars (b c m name) (nb nc nm data) (goods price text))
+    (trace (recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv (cat (enc (hash c nc nb nm price) (privk b)) nb))
+      (send (enc (hash b nb nm) (privk m))))
+    (uniq-orig nm)
+    (annotations m
+      (1
+        (forall ((pb name))
+          (implies (transfer pb price m nm) (ship m goods c))))
+      (2
+        (and
+          (says b
+            (implies
+              (and
+                (forall ((pm name)) (says c (transfer b price pm nm)))
+                (forall ((pm name)) (says m (transfer b price pm nm))))
+              (transfer b price m nm)))
+          (says c (transfer b price m nm))))
+      (3 (and (transfer b price m nm) (ship m goods c)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton epmo
+  (vars (nc nm nb data) (price text) (b c m name))
+  (defstrand bank 3 (nc nc) (nm nm) (nb nb) (price price) (b b) (c c)
+    (m m))
+  (non-orig (privk b) (privk c) (privk m))
+  (uniq-orig nb)
+  (traces
+    ((recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (hash c nc nb nm price) (privk b))
+          (enc nc nb (pubk c)))) (recv (enc (hash b nb nm) (privk m)))))
+  (label 7)
+  (unrealized (0 2))
+  (origs (nb (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton epmo
+  (vars (nc nm nb data) (price goods text) (b c m b-0 name))
+  (defstrand bank 3 (nc nc) (nm nm) (nb nb) (price price) (b b) (c c)
+    (m m))
+  (defstrand merchant 4 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b) (c c) (m m))
+  (defstrand customer 5 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b-0) (c c) (m m))
+  (precedes ((0 1) (2 3)) ((1 1) (2 1)) ((1 3) (0 2)) ((2 0) (1 0))
+    ((2 2) (0 0)) ((2 4) (1 2)))
+  (non-orig (privk b) (privk c) (privk m))
+  (uniq-orig nc nm nb)
+  (operation nonce-test (displaced 3 2 customer 3) nm (0 0)
+    (enc nc nm m goods price (pubk c)))
+  (traces
+    ((recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (hash c nc nb nm price) (privk b))
+          (enc nc nb (pubk c)))) (recv (enc (hash b nb nm) (privk m))))
+    ((recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv (cat (enc (hash c nc nb nm price) (privk b)) nb))
+      (send (enc (hash b nb nm) (privk m))))
+    ((send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b-0)))
+      (recv
+        (cat (enc (hash c nc nb nm price) (privk b-0))
+          (enc nc nb (pubk c))))
+      (send (cat (enc (hash c nc nb nm price) (privk b-0)) nb))))
+  (label 14)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (c c) (m m) (nc nc) (nm nm) (nb nb) (price price))))
+  (origs (nc (2 0)) (nb (0 1)) (nm (1 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol epmo basic
+  (defrole bank
+    (vars (b c m name) (nc nm nb data) (price text))
+    (trace (recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (hash c nc nb nm price) (privk b))
+          (enc nc nb (pubk c)))) (recv (enc (hash b nb nm) (privk m))))
+    (uniq-orig nb)
+    (annotations b
+      (1
+        (implies
+          (and (forall ((pm name)) (says c (transfer b price pm nm)))
+            (forall ((pm name)) (says pm (transfer b price pm nm))))
+          (forall ((pm name)) (transfer b price pm nm))))
+      (2
+        (and (says c (transfer b price m nm))
+          (says m (transfer b price m nm))))))
+  (defrole customer
+    (vars (b c m name) (nb nc nm data) (goods price text))
+    (trace (send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b)))
+      (recv
+        (cat (enc (hash c nc nb nm price) (privk b))
+          (enc nc nb (pubk c))))
+      (send (cat (enc (hash c nc nb nm price) (privk b)) nb)))
+    (uniq-orig nc)
+    (annotations c
+      (1
+        (says m
+          (forall ((pb name))
+            (implies (transfer pb price m nm) (ship m goods c)))))
+      (3
+        (says b
+          (implies
+            (and (forall ((pm name)) (says c (transfer b price pm nm)))
+              (forall ((pm name)) (says m (transfer b price pm nm))))
+            (transfer b price m nm)))) (4 (transfer b price m nm))))
+  (defrole merchant
+    (vars (b c m name) (nb nc nm data) (goods price text))
+    (trace (recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv (cat (enc (hash c nc nb nm price) (privk b)) nb))
+      (send (enc (hash b nb nm) (privk m))))
+    (uniq-orig nm)
+    (annotations m
+      (1
+        (forall ((pb name))
+          (implies (transfer pb price m nm) (ship m goods c))))
+      (2
+        (and
+          (says b
+            (implies
+              (and
+                (forall ((pm name)) (says c (transfer b price pm nm)))
+                (forall ((pm name)) (says m (transfer b price pm nm))))
+              (transfer b price m nm)))
+          (says c (transfer b price m nm))))
+      (3 (and (transfer b price m nm) (ship m goods c)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton epmo
+  (vars (nb nc nm data) (goods price text) (b c m name))
+  (defstrand merchant 4 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b) (c c) (m m))
+  (non-orig (privk b) (privk c) (privk m))
+  (uniq-orig nm)
+  (traces
+    ((recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv (cat (enc (hash c nc nb nm price) (privk b)) nb))
+      (send (enc (hash b nb nm) (privk m)))))
+  (label 15)
+  (unrealized (0 2))
+  (origs (nm (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton epmo
+  (vars (nb nc nm data) (goods price text) (b c b-0 m name))
+  (defstrand merchant 4 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b) (c c) (m m))
+  (defstrand bank 2 (nc nc) (nm nm) (nb nb) (price price) (b b) (c c))
+  (defstrand customer 5 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b-0) (c c) (m m))
+  (precedes ((0 1) (2 1)) ((1 1) (2 3)) ((2 0) (0 0)) ((2 2) (1 0))
+    ((2 4) (0 2)))
+  (non-orig (privk b) (privk c) (privk m))
+  (uniq-orig nb nc nm)
+  (operation nonce-test (displaced 2 3 customer 5) nb (0 2)
+    (enc nc nb (pubk c)))
+  (traces
+    ((recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv (cat (enc (hash c nc nb nm price) (privk b)) nb))
+      (send (enc (hash b nb nm) (privk m))))
+    ((recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (hash c nc nb nm price) (privk b))
+          (enc nc nb (pubk c)))))
+    ((send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b-0)))
+      (recv
+        (cat (enc (hash c nc nb nm price) (privk b-0))
+          (enc nc nb (pubk c))))
+      (send (cat (enc (hash c nc nb nm price) (privk b-0)) nb))))
+  (label 18)
+  (parent 15)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((b b) (c c) (m m) (nb nb) (nc nc) (nm nm) (goods goods)
+        (price price))))
+  (origs (nc (2 0)) (nb (1 1)) (nm (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/epmo-key-hash.tst b/tst/epmo-key-hash.tst
--- a/tst/epmo-key-hash.tst
+++ b/tst/epmo-key-hash.tst
@@ -1,7 +1,7 @@
 (herald "Electronic Purchase with Money Order Protocol with Key Hashing"
   (comment "Annotated with trust management formulas"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/epmo-key-hash.scm")
 
 (defprotocol epmo basic
@@ -104,6 +104,7 @@
   (uniq-orig nc nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 1)
     (enc c nc goods price (pubk m)))
+  (strand-map 0)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -131,6 +132,7 @@
   (uniq-orig nc nm)
   (operation nonce-test (contracted (nm-0 nm)) nc (0 1)
     (enc nc nm m goods price (pubk c)) (enc c nc goods price (pubk m)))
+  (strand-map 0 1)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -159,6 +161,7 @@
   (uniq-orig nb nc nm)
   (operation encryption-test (added-strand bank 2)
     (enc (enc "hash" (cat c nc nb nm price)) (privk b)) (0 3))
+  (strand-map 0 1)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -191,6 +194,7 @@
   (uniq-orig nb nc nm)
   (operation nonce-test (displaced 3 0 customer 3) nc (2 0)
     (enc nc nm m goods price (pubk c)) (enc c nc goods price (pubk m)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -231,6 +235,7 @@
   (uniq-orig nb nc nm nm-0)
   (operation nonce-test (added-strand merchant 2) nc (2 0)
     (enc nc nm m goods price (pubk c)) (enc c nc goods price (pubk m)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -270,6 +275,7 @@
     (enc nc nm m goods price (pubk c))
     (enc nc nm-0 m goods price (pubk c))
     (enc c nc goods price (pubk m)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -290,6 +296,8 @@
   (label 6)
   (parent 5)
   (seen 4)
+  (seen-ops
+    (4 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -393,6 +401,7 @@
   (uniq-orig nm nb)
   (operation encryption-test (added-strand merchant 4)
     (enc (enc "hash" (cat b nb nm)) (privk m)) (0 2))
+  (strand-map 0)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -420,6 +429,7 @@
   (uniq-orig nm nb)
   (operation encryption-test (displaced 2 0 bank 2)
     (enc (enc "hash" (cat c-0 nc-0 nb nm price-0)) (privk b)) (1 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -451,6 +461,7 @@
   (uniq-orig nc nm nb)
   (operation nonce-test (added-strand customer 5) nb (1 2)
     (enc nc nb (pubk c)))
+  (strand-map 0 1)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -490,6 +501,7 @@
   (uniq-orig nc nm nb)
   (operation encryption-test (displaced 3 0 bank 2)
     (enc "hash" (cat c nc nb nm-0 price-0)) (2 3))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -531,6 +543,7 @@
   (uniq-orig nc nm nb)
   (operation encryption-test (added-listener (cat c nc nb nm-0 price-0))
     (enc "hash" (cat c nc nb nm-0 price-0)) (2 3))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -573,6 +586,7 @@
   (uniq-orig nc nm nb)
   (operation nonce-test (contracted (m-0 m) (goods-0 goods)) nm (2 1)
     (enc nc nm m goods price (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -612,6 +626,7 @@
   (uniq-orig nc nm nb)
   (operation nonce-test (displaced 3 2 customer 3) nm (0 0)
     (enc nc nm m goods price (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -737,6 +752,7 @@
   (uniq-orig nb nm)
   (operation encryption-test (added-strand bank 2)
     (enc (enc "hash" (cat c nc nb nm price)) (privk b)) (0 2))
+  (strand-map 0)
   (traces
     ((recv (enc c nc goods price (pubk m)))
       (send (enc nc nm m goods price (pubk c)))
@@ -764,6 +780,7 @@
   (uniq-orig nb nc nm)
   (operation nonce-test (added-strand customer 3) nm (1 0)
     (enc nc nm m goods price (pubk c)))
+  (strand-map 0 1)
   (traces
     ((recv (enc c nc goods price (pubk m)))
       (send (enc nc nm m goods price (pubk c)))
@@ -795,6 +812,7 @@
   (uniq-orig nb nc nm)
   (operation nonce-test (displaced 2 3 customer 5) nb (0 2)
     (enc nc nb (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc goods price (pubk m)))
       (send (enc nc nm m goods price (pubk c)))
diff --git a/tst/epmo-key-hash_shapes.tst b/tst/epmo-key-hash_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/epmo-key-hash_shapes.tst
@@ -0,0 +1,396 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Electronic Purchase with Money Order Protocol with Key Hashing"
+  (comment "Annotated with trust management formulas"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/epmo-key-hash.scm")
+
+(defprotocol epmo basic
+  (defrole bank
+    (vars (b c m name) (nc nm nb data) (price text))
+    (trace (recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc "hash" (cat b nb nm)) (privk m))))
+    (uniq-orig nb)
+    (annotations b
+      (1
+        (implies
+          (and (forall ((pm name)) (says c (transfer b price pm nm)))
+            (forall ((pm name)) (says pm (transfer b price pm nm))))
+          (forall ((pm name)) (transfer b price pm nm))))
+      (2
+        (and (says c (transfer b price m nm))
+          (says m (transfer b price m nm))))))
+  (defrole customer
+    (vars (b c m name) (nb nc nm data) (goods price text))
+    (trace (send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb)))
+    (uniq-orig nc)
+    (annotations c
+      (1
+        (says m
+          (forall ((pb name))
+            (implies (transfer pb price m nm) (ship m goods c)))))
+      (3
+        (says b
+          (implies
+            (and (forall ((pm name)) (says c (transfer b price pm nm)))
+              (forall ((pm name)) (says m (transfer b price pm nm))))
+            (transfer b price m nm)))) (4 (transfer b price m nm))))
+  (defrole merchant
+    (vars (b c m name) (nb nc nm data) (goods price text))
+    (trace (recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb))
+      (send (enc (enc "hash" (cat b nb nm)) (privk m))))
+    (uniq-orig nm)
+    (annotations m
+      (1
+        (forall ((pb name))
+          (implies (transfer pb price m nm) (ship m goods c))))
+      (2
+        (and
+          (says b
+            (implies
+              (and
+                (forall ((pm name)) (says c (transfer b price pm nm)))
+                (forall ((pm name)) (says m (transfer b price pm nm))))
+              (transfer b price m nm)))
+          (says c (transfer b price m nm))))
+      (3 (and (transfer b price m nm) (ship m goods c)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton epmo
+  (vars (nb nc nm data) (goods price text) (b c m name))
+  (defstrand customer 5 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b) (c c) (m m))
+  (non-orig (privk b) (privk c) (privk m))
+  (uniq-orig nc)
+  (traces
+    ((send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb))))
+  (label 0)
+  (unrealized (0 1) (0 3))
+  (origs (nc (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton epmo
+  (vars (nb nc nm data) (goods price text) (b c m name))
+  (defstrand customer 5 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b) (c c) (m m))
+  (defstrand merchant 2 (nc nc) (nm nm) (goods goods) (price price)
+    (c c) (m m))
+  (defstrand bank 2 (nc nc) (nm nm) (nb nb) (price price) (b b) (c c))
+  (precedes ((0 0) (1 0)) ((0 2) (2 0)) ((1 1) (0 1)) ((2 1) (0 3)))
+  (non-orig (privk b) (privk c) (privk m))
+  (uniq-orig nb nc nm)
+  (operation nonce-test (displaced 3 0 customer 3) nc (2 0)
+    (enc nc nm m goods price (pubk c)) (enc c nc goods price (pubk m)))
+  (traces
+    ((send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb)))
+    ((recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c))))
+    ((recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))))
+  (label 4)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((b b) (c c) (m m) (nb nb) (nc nc) (nm nm) (goods goods)
+        (price price))))
+  (origs (nc (0 0)) (nb (2 1)) (nm (1 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol epmo basic
+  (defrole bank
+    (vars (b c m name) (nc nm nb data) (price text))
+    (trace (recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc "hash" (cat b nb nm)) (privk m))))
+    (uniq-orig nb)
+    (annotations b
+      (1
+        (implies
+          (and (forall ((pm name)) (says c (transfer b price pm nm)))
+            (forall ((pm name)) (says pm (transfer b price pm nm))))
+          (forall ((pm name)) (transfer b price pm nm))))
+      (2
+        (and (says c (transfer b price m nm))
+          (says m (transfer b price m nm))))))
+  (defrole customer
+    (vars (b c m name) (nb nc nm data) (goods price text))
+    (trace (send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb)))
+    (uniq-orig nc)
+    (annotations c
+      (1
+        (says m
+          (forall ((pb name))
+            (implies (transfer pb price m nm) (ship m goods c)))))
+      (3
+        (says b
+          (implies
+            (and (forall ((pm name)) (says c (transfer b price pm nm)))
+              (forall ((pm name)) (says m (transfer b price pm nm))))
+            (transfer b price m nm)))) (4 (transfer b price m nm))))
+  (defrole merchant
+    (vars (b c m name) (nb nc nm data) (goods price text))
+    (trace (recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb))
+      (send (enc (enc "hash" (cat b nb nm)) (privk m))))
+    (uniq-orig nm)
+    (annotations m
+      (1
+        (forall ((pb name))
+          (implies (transfer pb price m nm) (ship m goods c))))
+      (2
+        (and
+          (says b
+            (implies
+              (and
+                (forall ((pm name)) (says c (transfer b price pm nm)))
+                (forall ((pm name)) (says m (transfer b price pm nm))))
+              (transfer b price m nm)))
+          (says c (transfer b price m nm))))
+      (3 (and (transfer b price m nm) (ship m goods c)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton epmo
+  (vars (nc nm nb data) (price text) (b c m name))
+  (defstrand bank 3 (nc nc) (nm nm) (nb nb) (price price) (b b) (c c)
+    (m m))
+  (non-orig (privk b) (privk c) (privk m))
+  (uniq-orig nb)
+  (traces
+    ((recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc "hash" (cat b nb nm)) (privk m)))))
+  (label 7)
+  (unrealized (0 2))
+  (origs (nb (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton epmo
+  (vars (nc nm nb data) (price goods text) (b c m b-0 name))
+  (defstrand bank 3 (nc nc) (nm nm) (nb nb) (price price) (b b) (c c)
+    (m m))
+  (defstrand merchant 4 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b) (c c) (m m))
+  (defstrand customer 5 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b-0) (c c) (m m))
+  (precedes ((0 1) (2 3)) ((1 1) (2 1)) ((1 3) (0 2)) ((2 0) (1 0))
+    ((2 2) (0 0)) ((2 4) (1 2)))
+  (non-orig (privk b) (privk c) (privk m))
+  (uniq-orig nc nm nb)
+  (operation nonce-test (displaced 3 2 customer 3) nm (0 0)
+    (enc nc nm m goods price (pubk c)))
+  (traces
+    ((recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc "hash" (cat b nb nm)) (privk m))))
+    ((recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb))
+      (send (enc (enc "hash" (cat b nb nm)) (privk m))))
+    ((send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b-0)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b-0))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b-0))
+          nb))))
+  (label 14)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (c c) (m m) (nc nc) (nm nm) (nb nb) (price price))))
+  (origs (nc (2 0)) (nb (0 1)) (nm (1 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol epmo basic
+  (defrole bank
+    (vars (b c m name) (nc nm nb data) (price text))
+    (trace (recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc "hash" (cat b nb nm)) (privk m))))
+    (uniq-orig nb)
+    (annotations b
+      (1
+        (implies
+          (and (forall ((pm name)) (says c (transfer b price pm nm)))
+            (forall ((pm name)) (says pm (transfer b price pm nm))))
+          (forall ((pm name)) (transfer b price pm nm))))
+      (2
+        (and (says c (transfer b price m nm))
+          (says m (transfer b price m nm))))))
+  (defrole customer
+    (vars (b c m name) (nb nc nm data) (goods price text))
+    (trace (send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb)))
+    (uniq-orig nc)
+    (annotations c
+      (1
+        (says m
+          (forall ((pb name))
+            (implies (transfer pb price m nm) (ship m goods c)))))
+      (3
+        (says b
+          (implies
+            (and (forall ((pm name)) (says c (transfer b price pm nm)))
+              (forall ((pm name)) (says m (transfer b price pm nm))))
+            (transfer b price m nm)))) (4 (transfer b price m nm))))
+  (defrole merchant
+    (vars (b c m name) (nb nc nm data) (goods price text))
+    (trace (recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb))
+      (send (enc (enc "hash" (cat b nb nm)) (privk m))))
+    (uniq-orig nm)
+    (annotations m
+      (1
+        (forall ((pb name))
+          (implies (transfer pb price m nm) (ship m goods c))))
+      (2
+        (and
+          (says b
+            (implies
+              (and
+                (forall ((pm name)) (says c (transfer b price pm nm)))
+                (forall ((pm name)) (says m (transfer b price pm nm))))
+              (transfer b price m nm)))
+          (says c (transfer b price m nm))))
+      (3 (and (transfer b price m nm) (ship m goods c)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton epmo
+  (vars (nb nc nm data) (goods price text) (b c m name))
+  (defstrand merchant 4 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b) (c c) (m m))
+  (non-orig (privk b) (privk c) (privk m))
+  (uniq-orig nm)
+  (traces
+    ((recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb))
+      (send (enc (enc "hash" (cat b nb nm)) (privk m)))))
+  (label 15)
+  (unrealized (0 2))
+  (origs (nm (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton epmo
+  (vars (nb nc nm data) (goods price text) (b c b-0 m name))
+  (defstrand merchant 4 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b) (c c) (m m))
+  (defstrand bank 2 (nc nc) (nm nm) (nb nb) (price price) (b b) (c c))
+  (defstrand customer 5 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b-0) (c c) (m m))
+  (precedes ((0 1) (2 1)) ((1 1) (2 3)) ((2 0) (0 0)) ((2 2) (1 0))
+    ((2 4) (0 2)))
+  (non-orig (privk b) (privk c) (privk m))
+  (uniq-orig nb nc nm)
+  (operation nonce-test (displaced 2 3 customer 5) nb (0 2)
+    (enc nc nb (pubk c)))
+  (traces
+    ((recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb))
+      (send (enc (enc "hash" (cat b nb nm)) (privk m))))
+    ((recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c)))))
+    ((send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b-0)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b-0))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b-0))
+          nb))))
+  (label 18)
+  (parent 15)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((b b) (c c) (m m) (nb nb) (nc nc) (nm nm) (goods goods)
+        (price price))))
+  (origs (nc (2 0)) (nb (1 1)) (nm (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/epmo.tst b/tst/epmo.tst
--- a/tst/epmo.tst
+++ b/tst/epmo.tst
@@ -1,7 +1,7 @@
 (herald "Electronic Purchase with Money Order Protocol"
   (comment "Annotated with trust management formulas"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/epmo.scm")
 
 (defprotocol epmo basic
@@ -105,6 +105,7 @@
   (uniq-orig nc nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 1)
     (enc c nc goods price (pubk m)))
+  (strand-map 0)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -131,6 +132,7 @@
   (uniq-orig nc nm)
   (operation nonce-test (contracted (nm-0 nm)) nc (0 1)
     (enc nc nm m goods price (pubk c)) (enc c nc goods price (pubk m)))
+  (strand-map 0 1)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -159,6 +161,7 @@
   (uniq-orig nb nc nm)
   (operation encryption-test (added-strand bank 2)
     (enc (enc c nc nb nm price hash) (privk b)) (0 3))
+  (strand-map 0 1)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -191,6 +194,7 @@
   (uniq-orig nb nc nm)
   (operation nonce-test (displaced 3 0 customer 3) nc (2 0)
     (enc nc nm m goods price (pubk c)) (enc c nc goods price (pubk m)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -232,6 +236,7 @@
   (uniq-orig nb nc nm nm-0)
   (operation nonce-test (added-strand merchant 2) nc (2 0)
     (enc nc nm m goods price (pubk c)) (enc c nc goods price (pubk m)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -272,6 +277,7 @@
     (enc nc nm m goods price (pubk c))
     (enc nc nm-0 m goods price (pubk c))
     (enc c nc goods price (pubk m)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc c nc goods price (pubk m)))
       (recv (enc nc nm m goods price (pubk c)))
@@ -291,6 +297,8 @@
   (label 6)
   (parent 5)
   (seen 4)
+  (seen-ops
+    (4 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -395,6 +403,7 @@
   (uniq-orig nm nb)
   (operation encryption-test (added-strand merchant 4)
     (enc (enc b nb nm hash) (privk m)) (0 2))
+  (strand-map 0)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -421,6 +430,7 @@
   (uniq-orig nm nb)
   (operation encryption-test (displaced 2 0 bank 2)
     (enc (enc c-0 nc-0 nb nm price-0 hash) (privk b)) (1 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -451,6 +461,7 @@
   (uniq-orig nc nm nb)
   (operation nonce-test (added-strand customer 5) nb (1 2)
     (enc nc nb (pubk c)) (enc c nc nb nm price hash))
+  (strand-map 0 1)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -487,6 +498,7 @@
   (uniq-orig nc nm nb)
   (operation nonce-test (contracted (m-0 m) (goods-0 goods)) nm (2 1)
     (enc nc nm m goods price (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -523,6 +535,7 @@
   (uniq-orig nc nm nb)
   (operation nonce-test (displaced 3 2 customer 3) nm (0 0)
     (enc nc nm m goods price (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm price (pubk b)))
       (send
@@ -649,6 +662,7 @@
   (uniq-orig nb nm)
   (operation encryption-test (added-strand bank 2)
     (enc (enc c nc nb nm price hash) (privk b)) (0 2))
+  (strand-map 0)
   (traces
     ((recv (enc c nc goods price (pubk m)))
       (send (enc nc nm m goods price (pubk c)))
@@ -676,6 +690,7 @@
   (uniq-orig nb nc nm)
   (operation nonce-test (added-strand customer 3) nm (1 0)
     (enc nc nm m goods price (pubk c)))
+  (strand-map 0 1)
   (traces
     ((recv (enc c nc goods price (pubk m)))
       (send (enc nc nm m goods price (pubk c)))
@@ -707,6 +722,7 @@
   (uniq-orig nb nc nm)
   (operation nonce-test (displaced 2 3 customer 5) nb (0 2)
     (enc nc nb (pubk c)) (enc c nc nb nm price hash))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc goods price (pubk m)))
       (send (enc nc nm m goods price (pubk c)))
diff --git a/tst/epmo_acctnum-key-hash.tst b/tst/epmo_acctnum-key-hash.tst
--- a/tst/epmo_acctnum-key-hash.tst
+++ b/tst/epmo_acctnum-key-hash.tst
@@ -2,7 +2,7 @@
   "Electronic Purchase with Money Order Protocol Variant with Key Hashing"
   (comment "This version includes account numbers in exchanges"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/epmo_acctnum-key-hash.scm")
 
 (defprotocol epmo_acctnum basic
@@ -110,6 +110,7 @@
   (uniq-orig nm nc nb)
   (operation encryption-test (added-strand bank 2)
     (enc (enc "hash" (cat c nc nb nm price)) (privk b)) (0 2))
+  (strand-map 0)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -139,6 +140,7 @@
   (uniq-orig nm nc nb)
   (operation nonce-test (added-strand customer 3) nm (1 0)
     (enc nc nm m price (pubk c)))
+  (strand-map 0 1)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -171,6 +173,7 @@
   (operation nonce-test (contracted (b-0 b) (acctnum-0 acctnum)) nm
     (1 0) (enc nc nm m price (pubk c))
     (enc c nc nm acctnum price (pubk b)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -202,6 +205,7 @@
   (uniq-orig nm nc nb)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -237,6 +241,7 @@
   (uniq-orig nm nc nb nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -271,6 +276,7 @@
   (uniq-orig nc nb nm)
   (operation nonce-test (displaced 2 3 customer 5) nb (0 2)
     (enc nc nb (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -315,6 +321,7 @@
   (uniq-orig nm nc nb nm-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm-0 m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -351,6 +358,7 @@
   (uniq-orig nc nb nm nm-0)
   (operation nonce-test (displaced 2 4 customer 5) nb (0 2)
     (enc nc nb (pubk c)))
+  (strand-map 0 1 3 2)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm-0 m price-0 (pubk c)))
@@ -375,6 +383,8 @@
   (label 8)
   (parent 7)
   (seen 6)
+  (seen-ops
+    (6 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -486,6 +496,7 @@
   (uniq-orig nm nb nc)
   (operation encryption-test (added-strand merchant 4)
     (enc (enc "hash" (cat b m nb nm)) (privk m)) (0 2))
+  (strand-map 0)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -513,6 +524,7 @@
   (uniq-orig nm nb nc)
   (operation encryption-test (displaced 2 0 bank 2)
     (enc (enc "hash" (cat c-0 nc-0 nb nm price-0)) (privk b)) (1 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -545,6 +557,7 @@
   (uniq-orig nm nb nc)
   (operation nonce-test (added-strand customer 5) nb (1 2)
     (enc nc nb (pubk c)))
+  (strand-map 0 1)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -585,6 +598,7 @@
   (uniq-orig nm nb nc)
   (operation encryption-test (displaced 3 0 bank 2)
     (enc (enc "hash" (cat c nc nb nm-0 price-0)) (privk b-0)) (2 3))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -624,6 +638,7 @@
   (uniq-orig nm nb nc)
   (operation nonce-test (contracted (m-0 m)) nm (2 1)
     (enc nc nm m price (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -662,6 +677,7 @@
   (uniq-orig nm nb nc)
   (operation nonce-test (contracted (goods-0 goods)) nc (1 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -704,6 +720,7 @@
   (uniq-orig nm nb nc nm-0)
   (operation nonce-test (added-strand merchant 2) nc (1 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -744,6 +761,7 @@
   (uniq-orig nm nb nc)
   (operation nonce-test (displaced 3 2 customer 3) nm (0 0)
     (enc nc nm m price (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -785,6 +803,7 @@
   (uniq-orig nm nb nc nm-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (1 0)
     (enc nc nm-0 m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -825,6 +844,7 @@
   (uniq-orig nm nb nc)
   (operation nonce-test (contracted (acctnum-0 acctnum)) nm (0 0)
     (enc nc nm m price (pubk c)) (enc c nc nm acctnum price (pubk b)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -871,6 +891,7 @@
   (uniq-orig nm nb nc nm-0)
   (operation nonce-test (displaced 4 2 customer 3) nm (0 0)
     (enc nc nm m price (pubk c)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -913,6 +934,7 @@
   (uniq-orig nm nb nc nm-0)
   (operation nonce-test (contracted (acctnum-0 acctnum)) nm (0 0)
     (enc nc nm m price (pubk c)) (enc c nc nm acctnum price (pubk b)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -937,6 +959,8 @@
   (label 21)
   (parent 20)
   (seen 19)
+  (seen-ops
+    (19 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/epmo_acctnum-key-hash_shapes.tst b/tst/epmo_acctnum-key-hash_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/epmo_acctnum-key-hash_shapes.tst
@@ -0,0 +1,287 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald
+  "Electronic Purchase with Money Order Protocol Variant with Key Hashing"
+  (comment "This version includes account numbers in exchanges"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/epmo_acctnum-key-hash.scm")
+
+(defprotocol epmo_acctnum basic
+  (defrole bank
+    (vars (b c m name) (acctnum nc nm nb price text))
+    (trace (recv (enc c nc nm acctnum price (pubk b)))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc "hash" (cat b m nb nm)) (privk m))))
+    (annotations b
+      (1
+        (forall ((pm name))
+          (implies
+            (and (authtransfer c acctnum b price pm nm)
+              (reqtransfer pm b price pm nm))
+            (dotransfer acctnum b price pm nm))))
+      (2
+        (and (says c (authtransfer c acctnum b price m nm))
+          (says m (reqtransfer m b price m nm))))))
+  (defrole customer
+    (vars (b c m name) (acctnum nb nc nm goods price text))
+    (trace (send (enc c nc goods (pubk m)))
+      (recv (enc nc nm m price (pubk c)))
+      (send (enc c nc nm acctnum price (pubk b)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb)))
+    (non-orig (privk b))
+    (uniq-orig nc)
+    (annotations c
+      (1
+        (says m
+          (implies
+            (exists ((acctnum2 text))
+              (dotransfer acctnum2 b price m nm)) (doship m goods c))))
+      (3
+        (says b
+          (forall ((pm name))
+            (implies
+              (and (authtransfer c acctnum b price m nm)
+                (reqtransfer pm b price pm nm))
+              (dotransfer acctnum b price pm nm)))))
+      (4 (authtransfer c acctnum b price m nm))))
+  (defrole merchant
+    (vars (b c m name) (nb nc nm goods price text))
+    (trace (recv (enc c nc goods (pubk m)))
+      (send (enc nc nm m price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb))
+      (send (enc (enc "hash" (cat b m nb nm)) (privk m))))
+    (uniq-orig nm)
+    (annotations m
+      (1
+        (implies
+          (exists ((acctnum2 text)) (dotransfer acctnum2 b price m nm))
+          (doship m goods c)))
+      (2
+        (and
+          (says b
+            (forall ((pm name))
+              (exists ((acctnum2 text))
+                (implies
+                  (and (authtransfer c acctnum2 b price m nm)
+                    (reqtransfer pm b price pm nm))
+                  (dotransfer acctnum2 b price pm nm)))))
+          (says c
+            (exists ((acctnum2 text))
+              (authtransfer c acctnum2 b price m nm)))))
+      (3 (and (reqtransfer m b price m nm) (doship m goods c)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton epmo_acctnum
+  (vars (nm nc nb goods price text) (b m c name))
+  (defstrand merchant 4 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b) (c c) (m m))
+  (non-orig (privk b) (privk m) (privk c))
+  (uniq-orig nm nc nb)
+  (traces
+    ((recv (enc c nc goods (pubk m)))
+      (send (enc nc nm m price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb))
+      (send (enc (enc "hash" (cat b m nb nm)) (privk m)))))
+  (label 0)
+  (unrealized (0 2))
+  (origs (nm (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton epmo_acctnum
+  (vars (nc nb acctnum nm goods price text) (c b m name))
+  (defstrand merchant 4 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b) (c c) (m m))
+  (defstrand bank 2 (acctnum acctnum) (nc nc) (nm nm) (nb nb)
+    (price price) (b b) (c c))
+  (defstrand customer 5 (acctnum acctnum) (nb nb) (nc nc) (nm nm)
+    (goods goods) (price price) (b b) (c c) (m m))
+  (precedes ((0 1) (2 1)) ((1 1) (2 3)) ((2 0) (0 0)) ((2 2) (1 0))
+    ((2 4) (0 2)))
+  (non-orig (privk c) (privk b) (privk m))
+  (uniq-orig nc nb nm)
+  (operation nonce-test (displaced 2 3 customer 5) nb (0 2)
+    (enc nc nb (pubk c)))
+  (traces
+    ((recv (enc c nc goods (pubk m)))
+      (send (enc nc nm m price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb))
+      (send (enc (enc "hash" (cat b m nb nm)) (privk m))))
+    ((recv (enc c nc nm acctnum price (pubk b)))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c)))))
+    ((send (enc c nc goods (pubk m)))
+      (recv (enc nc nm m price (pubk c)))
+      (send (enc c nc nm acctnum price (pubk b)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb))))
+  (label 6)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((b b) (m m) (c c) (nm nm) (nc nc) (nb nb) (goods goods)
+        (price price))))
+  (origs (nc (2 0)) (nm (0 1)) (nb (1 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol epmo_acctnum basic
+  (defrole bank
+    (vars (b c m name) (acctnum nc nm nb price text))
+    (trace (recv (enc c nc nm acctnum price (pubk b)))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc "hash" (cat b m nb nm)) (privk m))))
+    (annotations b
+      (1
+        (forall ((pm name))
+          (implies
+            (and (authtransfer c acctnum b price pm nm)
+              (reqtransfer pm b price pm nm))
+            (dotransfer acctnum b price pm nm))))
+      (2
+        (and (says c (authtransfer c acctnum b price m nm))
+          (says m (reqtransfer m b price m nm))))))
+  (defrole customer
+    (vars (b c m name) (acctnum nb nc nm goods price text))
+    (trace (send (enc c nc goods (pubk m)))
+      (recv (enc nc nm m price (pubk c)))
+      (send (enc c nc nm acctnum price (pubk b)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb)))
+    (non-orig (privk b))
+    (uniq-orig nc)
+    (annotations c
+      (1
+        (says m
+          (implies
+            (exists ((acctnum2 text))
+              (dotransfer acctnum2 b price m nm)) (doship m goods c))))
+      (3
+        (says b
+          (forall ((pm name))
+            (implies
+              (and (authtransfer c acctnum b price m nm)
+                (reqtransfer pm b price pm nm))
+              (dotransfer acctnum b price pm nm)))))
+      (4 (authtransfer c acctnum b price m nm))))
+  (defrole merchant
+    (vars (b c m name) (nb nc nm goods price text))
+    (trace (recv (enc c nc goods (pubk m)))
+      (send (enc nc nm m price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb))
+      (send (enc (enc "hash" (cat b m nb nm)) (privk m))))
+    (uniq-orig nm)
+    (annotations m
+      (1
+        (implies
+          (exists ((acctnum2 text)) (dotransfer acctnum2 b price m nm))
+          (doship m goods c)))
+      (2
+        (and
+          (says b
+            (forall ((pm name))
+              (exists ((acctnum2 text))
+                (implies
+                  (and (authtransfer c acctnum2 b price m nm)
+                    (reqtransfer pm b price pm nm))
+                  (dotransfer acctnum2 b price pm nm)))))
+          (says c
+            (exists ((acctnum2 text))
+              (authtransfer c acctnum2 b price m nm)))))
+      (3 (and (reqtransfer m b price m nm) (doship m goods c)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton epmo_acctnum
+  (vars (nm nb nc acctnum price text) (b m c name))
+  (defstrand bank 3 (acctnum acctnum) (nc nc) (nm nm) (nb nb)
+    (price price) (b b) (c c) (m m))
+  (non-orig (privk b) (privk m) (privk c))
+  (uniq-orig nm nb nc)
+  (traces
+    ((recv (enc c nc nm acctnum price (pubk b)))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc "hash" (cat b m nb nm)) (privk m)))))
+  (label 9)
+  (unrealized (0 2))
+  (origs (nb (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton epmo_acctnum
+  (vars (nm nb nc price acctnum goods text) (b m c name))
+  (defstrand bank 3 (acctnum acctnum) (nc nc) (nm nm) (nb nb)
+    (price price) (b b) (c c) (m m))
+  (defstrand merchant 4 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b) (c c) (m m))
+  (defstrand customer 5 (acctnum acctnum) (nb nb) (nc nc) (nm nm)
+    (goods goods) (price price) (b b) (c c) (m m))
+  (precedes ((0 1) (2 3)) ((1 1) (2 1)) ((1 3) (0 2)) ((2 0) (1 0))
+    ((2 2) (0 0)) ((2 4) (1 2)))
+  (non-orig (privk b) (privk m) (privk c))
+  (uniq-orig nm nb nc)
+  (operation nonce-test (contracted (acctnum-0 acctnum)) nm (0 0)
+    (enc nc nm m price (pubk c)) (enc c nc nm acctnum price (pubk b)))
+  (traces
+    ((recv (enc c nc nm acctnum price (pubk b)))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc "hash" (cat b m nb nm)) (privk m))))
+    ((recv (enc c nc goods (pubk m)))
+      (send (enc nc nm m price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb))
+      (send (enc (enc "hash" (cat b m nb nm)) (privk m))))
+    ((send (enc c nc goods (pubk m)))
+      (recv (enc nc nm m price (pubk c)))
+      (send (enc c nc nm acctnum price (pubk b)))
+      (recv
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" (cat c nc nb nm price)) (privk b)) nb))))
+  (label 19)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((b b) (m m) (c c) (nm nm) (nb nb) (nc nc) (acctnum acctnum)
+        (price price))))
+  (origs (nc (2 0)) (nm (1 1)) (nb (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/epmo_acctnum.lisp b/tst/epmo_acctnum.lisp
deleted file mode 100644
--- a/tst/epmo_acctnum.lisp
+++ /dev/null
@@ -1,103 +0,0 @@
-(herald "Electronic Purchase with Money Order Protocol Variant"
-  (bound 12) (limit 5000)
-  (comment "This version includes account numbers in exchanges"))
-
-;; The results of running CPSA on this input produces interesting
-;; output.  One of the shapes is produced only as a result of
-;; generalization, not cohort reduction.  It is a counterexample to
-;; the hypthesis that all shapes are produced by cohort reduction, and
-;; the purpose of generalization is to distinguish the shapes from the
-;; other realized skeletons produced by cohort reduction.
-
-;; The shape in question identifies the bank's nonce with price of the
-;; goods.  The variable cannot be separated because the uniquely
-;; originating variable originates on the merchant strand, but after
-;; separation, it would originate on the bank's strand.
-
-;; Adding a role unique origination assumption to the bank role for
-;; its nonce eliminates the undesired shape.
-
-(defprotocol epmo_acctnum basic
-  (defrole bank
-    (vars (b c m name) (acctnum text) (hash name) (nc nm nb price text))
-    (trace
-     (recv (enc c nc nm acctnum price (pubk b)))
-     (send (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
-		(enc nc nb (pubk c))))
-     (recv (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
-    (non-orig (privk hash))
-    (annotations b
-      (1
-        (forall ((pm name))
-          (implies
-            (and (authtransfer c acctnum b price pm nm)
-              (reqtransfer pm b price pm nm))
-            (dotransfer acctnum b price pm nm))))
-      (2
-        (and (says c (authtransfer c acctnum b price m nm))
-          (says m (reqtransfer m b price m nm))))))
-  (defrole customer
-    (vars (b c m hash name) (acctnum nb nc nm goods price text))
-    (trace
-     (send (enc c nc goods (pubk m)))
-     (recv (enc nc nm m price (pubk c)))
-     (send (enc c nc nm acctnum price (pubk b)))
-     (recv (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
-		(enc nc nb (pubk c))))
-     (send (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
-		nb)))
-    (non-orig (privk b) (privk hash))
-    (uniq-orig nc)
-    (annotations c
-      (1
-        (says m
-          (implies
-            (exists ((acctnum2 text))
-              (dotransfer acctnum2 b price m nm)) (doship m goods c))))
-      (3
-        (says b
-          (forall ((pm name))
-            (implies
-              (and (authtransfer c acctnum b price m nm)
-                (reqtransfer pm b price pm nm))
-              (dotransfer acctnum b price pm nm)))))
-      (4 (authtransfer c acctnum b price m nm))))
-  (defrole merchant (vars (b c m hash name) (nb nc nm goods price text))
-    (trace
-     (recv (enc c nc goods (pubk m)))
-     (send (enc nc nm m price (pubk c)))
-     (recv (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
-		nb))
-     (send (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
-    (non-orig (privk hash))
-    (uniq-orig nm)
-    (annotations m
-      (1
-        (implies
-          (exists ((acctnum2 text)) (dotransfer acctnum2 b price m nm))
-          (doship m goods c)))
-      (2
-        (and
-          (says b
-            (forall ((pm name))
-              (exists ((acctnum2 text))
-                (implies
-                  (and (authtransfer c acctnum2 b price m nm)
-                    (reqtransfer pm b price pm nm))
-                  (dotransfer acctnum2 b price pm nm)))))
-          (says c
-            (exists ((acctnum2 text))
-              (authtransfer c acctnum2 b price m nm)))))
-      (3 (and (reqtransfer m b price m nm) (doship m goods c))))))
-
-(defskeleton epmo_acctnum
-  (vars (b m c name) (nm nc nb text) (hash name))
-  (defstrand merchant 4 (b b) (m m) (c c) (nm nm) (nc nc) (nb nb) (hash hash))
-  (non-orig (privk b) (privk m) (privk c) (privk hash))
-  (uniq-orig nm nc nb))
-
-(defskeleton epmo_acctnum
-  (vars (b m c name) (nm nb nc text) (hash name) (price acctnum text))
-  (defstrand bank 3 (b b) (m m) (c c) (nm nm) (nb nb) (nc nc) (hash hash))
-  (non-orig (privk b) (privk m) (privk c) (privk hash))
-  (uniq-orig nm nc nb))
diff --git a/tst/epmo_acctnum.lsp b/tst/epmo_acctnum.lsp
new file mode 100644
--- /dev/null
+++ b/tst/epmo_acctnum.lsp
@@ -0,0 +1,103 @@
+(herald "Electronic Purchase with Money Order Protocol Variant"
+  (bound 12) (limit 5000)
+  (comment "This version includes account numbers in exchanges"))
+
+;; The results of running CPSA on this input produces interesting
+;; output.  One of the shapes is produced only as a result of
+;; generalization, not cohort reduction.  It is a counterexample to
+;; the hypthesis that all shapes are produced by cohort reduction, and
+;; the purpose of generalization is to distinguish the shapes from the
+;; other realized skeletons produced by cohort reduction.
+
+;; The shape in question identifies the bank's nonce with price of the
+;; goods.  The variable cannot be separated because the uniquely
+;; originating variable originates on the merchant strand, but after
+;; separation, it would originate on the bank's strand.
+
+;; Adding a role unique origination assumption to the bank role for
+;; its nonce eliminates the undesired shape.
+
+(defprotocol epmo_acctnum basic
+  (defrole bank
+    (vars (b c m name) (acctnum text) (hash name) (nc nm nb price text))
+    (trace
+     (recv (enc c nc nm acctnum price (pubk b)))
+     (send (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+		(enc nc nb (pubk c))))
+     (recv (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
+    (non-orig (privk hash))
+    (annotations b
+      (1
+        (forall ((pm name))
+          (implies
+            (and (authtransfer c acctnum b price pm nm)
+              (reqtransfer pm b price pm nm))
+            (dotransfer acctnum b price pm nm))))
+      (2
+        (and (says c (authtransfer c acctnum b price m nm))
+          (says m (reqtransfer m b price m nm))))))
+  (defrole customer
+    (vars (b c m hash name) (acctnum nb nc nm goods price text))
+    (trace
+     (send (enc c nc goods (pubk m)))
+     (recv (enc nc nm m price (pubk c)))
+     (send (enc c nc nm acctnum price (pubk b)))
+     (recv (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+		(enc nc nb (pubk c))))
+     (send (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+		nb)))
+    (non-orig (privk b) (privk hash))
+    (uniq-orig nc)
+    (annotations c
+      (1
+        (says m
+          (implies
+            (exists ((acctnum2 text))
+              (dotransfer acctnum2 b price m nm)) (doship m goods c))))
+      (3
+        (says b
+          (forall ((pm name))
+            (implies
+              (and (authtransfer c acctnum b price m nm)
+                (reqtransfer pm b price pm nm))
+              (dotransfer acctnum b price pm nm)))))
+      (4 (authtransfer c acctnum b price m nm))))
+  (defrole merchant (vars (b c m hash name) (nb nc nm goods price text))
+    (trace
+     (recv (enc c nc goods (pubk m)))
+     (send (enc nc nm m price (pubk c)))
+     (recv (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+		nb))
+     (send (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
+    (non-orig (privk hash))
+    (uniq-orig nm)
+    (annotations m
+      (1
+        (implies
+          (exists ((acctnum2 text)) (dotransfer acctnum2 b price m nm))
+          (doship m goods c)))
+      (2
+        (and
+          (says b
+            (forall ((pm name))
+              (exists ((acctnum2 text))
+                (implies
+                  (and (authtransfer c acctnum2 b price m nm)
+                    (reqtransfer pm b price pm nm))
+                  (dotransfer acctnum2 b price pm nm)))))
+          (says c
+            (exists ((acctnum2 text))
+              (authtransfer c acctnum2 b price m nm)))))
+      (3 (and (reqtransfer m b price m nm) (doship m goods c))))))
+
+(defskeleton epmo_acctnum
+  (vars (b m c name) (nm nc nb text) (hash name))
+  (defstrand merchant 4 (b b) (m m) (c c) (nm nm) (nc nc) (nb nb) (hash hash))
+  (non-orig (privk b) (privk m) (privk c) (privk hash))
+  (uniq-orig nm nc nb))
+
+(defskeleton epmo_acctnum
+  (vars (b m c name) (nm nb nc text) (hash name) (price acctnum text))
+  (defstrand bank 3 (b b) (m m) (c c) (nm nm) (nb nb) (nc nc) (hash hash))
+  (non-orig (privk b) (privk m) (privk c) (privk hash))
+  (uniq-orig nm nc nb))
diff --git a/tst/epmo_acctnum.tst b/tst/epmo_acctnum.tst
# file too large to diff: tst/epmo_acctnum.tst
diff --git a/tst/epmo_acctnum_shapes.tst b/tst/epmo_acctnum_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/epmo_acctnum_shapes.tst
@@ -0,0 +1,292 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Electronic Purchase with Money Order Protocol Variant"
+  (bound 12) (limit 5000)
+  (comment "This version includes account numbers in exchanges"))
+
+(comment "CPSA 2.3.1")
+
+(comment "All input read from epmo_acctnum.scm")
+
+(comment "Step count limited to 5000")
+
+(comment "Strand count bounded at 12")
+
+(defprotocol epmo_acctnum basic
+  (defrole bank
+    (vars (b c m name) (acctnum text) (hash name) (nc nm nb price text))
+    (trace (recv (enc c nc nm acctnum price (pubk b)))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
+    (non-orig (privk hash))
+    (annotations b
+      (1
+        (forall ((pm name))
+          (implies
+            (and (authtransfer c acctnum b price pm nm)
+              (reqtransfer pm b price pm nm))
+            (dotransfer acctnum b price pm nm))))
+      (2
+        (and (says c (authtransfer c acctnum b price m nm))
+          (says m (reqtransfer m b price m nm))))))
+  (defrole customer
+    (vars (b c m hash name) (acctnum nb nc nm goods price text))
+    (trace (send (enc c nc goods (pubk m)))
+      (recv (enc nc nm m price (pubk c)))
+      (send (enc c nc nm acctnum price (pubk b)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb)))
+    (non-orig (privk b) (privk hash))
+    (uniq-orig nc)
+    (annotations c
+      (1
+        (says m
+          (implies
+            (exists ((acctnum2 text))
+              (dotransfer acctnum2 b price m nm)) (doship m goods c))))
+      (3
+        (says b
+          (forall ((pm name))
+            (implies
+              (and (authtransfer c acctnum b price m nm)
+                (reqtransfer pm b price pm nm))
+              (dotransfer acctnum b price pm nm)))))
+      (4 (authtransfer c acctnum b price m nm))))
+  (defrole merchant
+    (vars (b c m hash name) (nb nc nm goods price text))
+    (trace (recv (enc c nc goods (pubk m)))
+      (send (enc nc nm m price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb))
+      (send (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
+    (non-orig (privk hash))
+    (uniq-orig nm)
+    (annotations m
+      (1
+        (implies
+          (exists ((acctnum2 text)) (dotransfer acctnum2 b price m nm))
+          (doship m goods c)))
+      (2
+        (and
+          (says b
+            (forall ((pm name))
+              (exists ((acctnum2 text))
+                (implies
+                  (and (authtransfer c acctnum2 b price m nm)
+                    (reqtransfer pm b price pm nm))
+                  (dotransfer acctnum2 b price pm nm)))))
+          (says c
+            (exists ((acctnum2 text))
+              (authtransfer c acctnum2 b price m nm)))))
+      (3 (and (reqtransfer m b price m nm) (doship m goods c))))))
+
+(defskeleton epmo_acctnum
+  (vars (nm nc nb goods price text) (b m c hash name))
+  (defstrand merchant 4 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b) (c c) (m m) (hash hash))
+  (non-orig (privk b) (privk m) (privk c) (privk hash))
+  (uniq-orig nm nc nb)
+  (traces
+    ((recv (enc c nc goods (pubk m)))
+      (send (enc nc nm m price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb))
+      (send (enc (enc "hash" b m nb nm (pubk hash)) (privk m)))))
+  (label 0)
+  (unrealized (0 2))
+  (origs (nm (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton epmo_acctnum
+  (vars (nm nc nb price acctnum goods text) (c hash b m name))
+  (defstrand merchant 4 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b) (c c) (m m) (hash hash))
+  (defstrand bank 2 (acctnum acctnum) (nc nc) (nm nm) (nb nb)
+    (price price) (b b) (c c) (hash hash))
+  (defstrand customer 5 (acctnum acctnum) (nb nb) (nc nc) (nm nm)
+    (goods goods) (price price) (b b) (c c) (m m) (hash hash))
+  (precedes ((0 1) (2 1)) ((1 1) (2 3)) ((2 0) (0 0)) ((2 2) (1 0))
+    ((2 4) (0 2)))
+  (non-orig (privk c) (privk hash) (privk b) (privk m))
+  (uniq-orig nm nc nb)
+  (operation nonce-test (displaced 2 3 customer 5) nb (0 2)
+    (enc "hash" c nc nb nm price (pubk hash)) (enc nc nb (pubk c)))
+  (traces
+    ((recv (enc c nc goods (pubk m)))
+      (send (enc nc nm m price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb))
+      (send (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
+    ((recv (enc c nc nm acctnum price (pubk b)))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c)))))
+    ((send (enc c nc goods (pubk m)))
+      (recv (enc nc nm m price (pubk c)))
+      (send (enc c nc nm acctnum price (pubk b)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb))))
+  (label 8)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((b b) (m m) (c c) (nm nm) (nc nc) (nb nb) (hash hash)
+        (goods goods) (price price))))
+  (origs (nc (2 0)) (nm (0 1)) (nb (1 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol epmo_acctnum basic
+  (defrole bank
+    (vars (b c m name) (acctnum text) (hash name) (nc nm nb price text))
+    (trace (recv (enc c nc nm acctnum price (pubk b)))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
+    (non-orig (privk hash))
+    (annotations b
+      (1
+        (forall ((pm name))
+          (implies
+            (and (authtransfer c acctnum b price pm nm)
+              (reqtransfer pm b price pm nm))
+            (dotransfer acctnum b price pm nm))))
+      (2
+        (and (says c (authtransfer c acctnum b price m nm))
+          (says m (reqtransfer m b price m nm))))))
+  (defrole customer
+    (vars (b c m hash name) (acctnum nb nc nm goods price text))
+    (trace (send (enc c nc goods (pubk m)))
+      (recv (enc nc nm m price (pubk c)))
+      (send (enc c nc nm acctnum price (pubk b)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb)))
+    (non-orig (privk b) (privk hash))
+    (uniq-orig nc)
+    (annotations c
+      (1
+        (says m
+          (implies
+            (exists ((acctnum2 text))
+              (dotransfer acctnum2 b price m nm)) (doship m goods c))))
+      (3
+        (says b
+          (forall ((pm name))
+            (implies
+              (and (authtransfer c acctnum b price m nm)
+                (reqtransfer pm b price pm nm))
+              (dotransfer acctnum b price pm nm)))))
+      (4 (authtransfer c acctnum b price m nm))))
+  (defrole merchant
+    (vars (b c m hash name) (nb nc nm goods price text))
+    (trace (recv (enc c nc goods (pubk m)))
+      (send (enc nc nm m price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb))
+      (send (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
+    (non-orig (privk hash))
+    (uniq-orig nm)
+    (annotations m
+      (1
+        (implies
+          (exists ((acctnum2 text)) (dotransfer acctnum2 b price m nm))
+          (doship m goods c)))
+      (2
+        (and
+          (says b
+            (forall ((pm name))
+              (exists ((acctnum2 text))
+                (implies
+                  (and (authtransfer c acctnum2 b price m nm)
+                    (reqtransfer pm b price pm nm))
+                  (dotransfer acctnum2 b price pm nm)))))
+          (says c
+            (exists ((acctnum2 text))
+              (authtransfer c acctnum2 b price m nm)))))
+      (3 (and (reqtransfer m b price m nm) (doship m goods c))))))
+
+(defskeleton epmo_acctnum
+  (vars (nm nb nc acctnum price text) (b m c hash name))
+  (defstrand bank 3 (acctnum acctnum) (nc nc) (nm nm) (nb nb)
+    (price price) (b b) (c c) (m m) (hash hash))
+  (non-orig (privk b) (privk m) (privk c) (privk hash))
+  (uniq-orig nm nb nc)
+  (traces
+    ((recv (enc c nc nm acctnum price (pubk b)))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc "hash" b m nb nm (pubk hash)) (privk m)))))
+  (label 4559)
+  (unrealized (0 2))
+  (origs (nb (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton epmo_acctnum
+  (vars (nm nb nc price acctnum goods text) (b m c hash name))
+  (defstrand bank 3 (acctnum acctnum) (nc nc) (nm nm) (nb nb)
+    (price price) (b b) (c c) (m m) (hash hash))
+  (defstrand merchant 4 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (b b) (c c) (m m) (hash hash))
+  (defstrand customer 5 (acctnum acctnum) (nb nb) (nc nc) (nm nm)
+    (goods goods) (price price) (b b) (c c) (m m) (hash hash))
+  (precedes ((0 1) (2 3)) ((1 1) (2 1)) ((1 3) (0 2)) ((2 0) (1 0))
+    ((2 2) (0 0)) ((2 4) (1 2)))
+  (non-orig (privk b) (privk m) (privk c) (privk hash))
+  (uniq-orig nm nb nc)
+  (operation nonce-test (contracted (acctnum-0 acctnum)) nm (0 0)
+    (enc nc nm m price (pubk c)) (enc c nc nm acctnum price (pubk b)))
+  (traces
+    ((recv (enc c nc nm acctnum price (pubk b)))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
+    ((recv (enc c nc goods (pubk m)))
+      (send (enc nc nm m price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb))
+      (send (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
+    ((send (enc c nc goods (pubk m)))
+      (recv (enc nc nm m price (pubk c)))
+      (send (enc c nc nm acctnum price (pubk b)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb))))
+  (label 4569)
+  (parent 4559)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((b b) (m m) (c c) (nm nm) (nb nb) (nc nc) (hash hash)
+        (acctnum acctnum) (price price))))
+  (origs (nc (2 0)) (nm (1 1)) (nb (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/epmo_shapes.tst b/tst/epmo_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/epmo_shapes.tst
@@ -0,0 +1,395 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Electronic Purchase with Money Order Protocol"
+  (comment "Annotated with trust management formulas"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/epmo.scm")
+
+(defprotocol epmo basic
+  (defrole bank
+    (vars (b c m name) (hash akey) (nc nm nb data) (price text))
+    (trace (recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (enc c nc nb nm price hash) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc b nb nm hash) (privk m))))
+    (non-orig (invk hash))
+    (uniq-orig nb)
+    (annotations b
+      (1
+        (implies
+          (and (forall ((pm name)) (says c (transfer b price pm nm)))
+            (forall ((pm name)) (says pm (transfer b price pm nm))))
+          (forall ((pm name)) (transfer b price pm nm))))
+      (2
+        (and (says c (transfer b price m nm))
+          (says m (transfer b price m nm))))))
+  (defrole customer
+    (vars (b c m name) (hash akey) (nb nc nm data) (goods price text))
+    (trace (send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b)))
+      (recv
+        (cat (enc (enc c nc nb nm price hash) (privk b))
+          (enc nc nb (pubk c))))
+      (send (cat (enc (enc c nc nb nm price hash) (privk b)) nb)))
+    (non-orig (invk hash))
+    (uniq-orig nc)
+    (annotations c
+      (1
+        (says m
+          (forall ((pb name))
+            (implies (transfer pb price m nm) (ship m goods c)))))
+      (3
+        (says b
+          (implies
+            (and (forall ((pm name)) (says c (transfer b price pm nm)))
+              (forall ((pm name)) (says m (transfer b price pm nm))))
+            (transfer b price m nm)))) (4 (transfer b price m nm))))
+  (defrole merchant
+    (vars (b c m name) (hash akey) (nb nc nm data) (goods price text))
+    (trace (recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv (cat (enc (enc c nc nb nm price hash) (privk b)) nb))
+      (send (enc (enc b nb nm hash) (privk m))))
+    (non-orig (invk hash))
+    (uniq-orig nm)
+    (annotations m
+      (1
+        (forall ((pb name))
+          (implies (transfer pb price m nm) (ship m goods c))))
+      (2
+        (and
+          (says b
+            (implies
+              (and
+                (forall ((pm name)) (says c (transfer b price pm nm)))
+                (forall ((pm name)) (says m (transfer b price pm nm))))
+              (transfer b price m nm)))
+          (says c (transfer b price m nm))))
+      (3 (and (transfer b price m nm) (ship m goods c)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton epmo
+  (vars (nb nc nm data) (goods price text) (hash akey) (b c m name))
+  (defstrand customer 5 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (hash hash) (b b) (c c) (m m))
+  (non-orig (invk hash) (privk b) (privk c) (privk m))
+  (uniq-orig nc)
+  (traces
+    ((send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b)))
+      (recv
+        (cat (enc (enc c nc nb nm price hash) (privk b))
+          (enc nc nb (pubk c))))
+      (send (cat (enc (enc c nc nb nm price hash) (privk b)) nb))))
+  (label 0)
+  (unrealized (0 1) (0 3))
+  (origs (nc (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton epmo
+  (vars (nb nc nm data) (goods price text) (hash akey) (b c m name))
+  (defstrand customer 5 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (hash hash) (b b) (c c) (m m))
+  (defstrand merchant 2 (nc nc) (nm nm) (goods goods) (price price)
+    (c c) (m m))
+  (defstrand bank 2 (nc nc) (nm nm) (nb nb) (price price) (hash hash)
+    (b b) (c c))
+  (precedes ((0 0) (1 0)) ((0 2) (2 0)) ((1 1) (0 1)) ((2 1) (0 3)))
+  (non-orig (invk hash) (privk b) (privk c) (privk m))
+  (uniq-orig nb nc nm)
+  (operation nonce-test (displaced 3 0 customer 3) nc (2 0)
+    (enc nc nm m goods price (pubk c)) (enc c nc goods price (pubk m)))
+  (traces
+    ((send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b)))
+      (recv
+        (cat (enc (enc c nc nb nm price hash) (privk b))
+          (enc nc nb (pubk c))))
+      (send (cat (enc (enc c nc nb nm price hash) (privk b)) nb)))
+    ((recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c))))
+    ((recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (enc c nc nb nm price hash) (privk b))
+          (enc nc nb (pubk c))))))
+  (label 4)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((b b) (c c) (m m) (hash hash) (nb nb) (nc nc) (nm nm)
+        (goods goods) (price price))))
+  (origs (nc (0 0)) (nb (2 1)) (nm (1 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol epmo basic
+  (defrole bank
+    (vars (b c m name) (hash akey) (nc nm nb data) (price text))
+    (trace (recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (enc c nc nb nm price hash) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc b nb nm hash) (privk m))))
+    (non-orig (invk hash))
+    (uniq-orig nb)
+    (annotations b
+      (1
+        (implies
+          (and (forall ((pm name)) (says c (transfer b price pm nm)))
+            (forall ((pm name)) (says pm (transfer b price pm nm))))
+          (forall ((pm name)) (transfer b price pm nm))))
+      (2
+        (and (says c (transfer b price m nm))
+          (says m (transfer b price m nm))))))
+  (defrole customer
+    (vars (b c m name) (hash akey) (nb nc nm data) (goods price text))
+    (trace (send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b)))
+      (recv
+        (cat (enc (enc c nc nb nm price hash) (privk b))
+          (enc nc nb (pubk c))))
+      (send (cat (enc (enc c nc nb nm price hash) (privk b)) nb)))
+    (non-orig (invk hash))
+    (uniq-orig nc)
+    (annotations c
+      (1
+        (says m
+          (forall ((pb name))
+            (implies (transfer pb price m nm) (ship m goods c)))))
+      (3
+        (says b
+          (implies
+            (and (forall ((pm name)) (says c (transfer b price pm nm)))
+              (forall ((pm name)) (says m (transfer b price pm nm))))
+            (transfer b price m nm)))) (4 (transfer b price m nm))))
+  (defrole merchant
+    (vars (b c m name) (hash akey) (nb nc nm data) (goods price text))
+    (trace (recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv (cat (enc (enc c nc nb nm price hash) (privk b)) nb))
+      (send (enc (enc b nb nm hash) (privk m))))
+    (non-orig (invk hash))
+    (uniq-orig nm)
+    (annotations m
+      (1
+        (forall ((pb name))
+          (implies (transfer pb price m nm) (ship m goods c))))
+      (2
+        (and
+          (says b
+            (implies
+              (and
+                (forall ((pm name)) (says c (transfer b price pm nm)))
+                (forall ((pm name)) (says m (transfer b price pm nm))))
+              (transfer b price m nm)))
+          (says c (transfer b price m nm))))
+      (3 (and (transfer b price m nm) (ship m goods c)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton epmo
+  (vars (nc nm nb data) (price text) (hash akey) (b c m name))
+  (defstrand bank 3 (nc nc) (nm nm) (nb nb) (price price) (hash hash)
+    (b b) (c c) (m m))
+  (non-orig (invk hash) (privk b) (privk c) (privk m))
+  (uniq-orig nb)
+  (traces
+    ((recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (enc c nc nb nm price hash) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc b nb nm hash) (privk m)))))
+  (label 7)
+  (unrealized (0 2))
+  (origs (nb (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton epmo
+  (vars (nc nm nb data) (price goods text) (hash akey) (b c m b-0 name))
+  (defstrand bank 3 (nc nc) (nm nm) (nb nb) (price price) (hash hash)
+    (b b) (c c) (m m))
+  (defstrand merchant 4 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (hash hash) (b b) (c c) (m m))
+  (defstrand customer 5 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (hash hash) (b b-0) (c c) (m m))
+  (precedes ((0 1) (2 3)) ((1 1) (2 1)) ((1 3) (0 2)) ((2 0) (1 0))
+    ((2 2) (0 0)) ((2 4) (1 2)))
+  (non-orig (invk hash) (privk b) (privk c) (privk m))
+  (uniq-orig nc nm nb)
+  (operation nonce-test (displaced 3 2 customer 3) nm (0 0)
+    (enc nc nm m goods price (pubk c)))
+  (traces
+    ((recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (enc c nc nb nm price hash) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc b nb nm hash) (privk m))))
+    ((recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv (cat (enc (enc c nc nb nm price hash) (privk b)) nb))
+      (send (enc (enc b nb nm hash) (privk m))))
+    ((send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b-0)))
+      (recv
+        (cat (enc (enc c nc nb nm price hash) (privk b-0))
+          (enc nc nb (pubk c))))
+      (send (cat (enc (enc c nc nb nm price hash) (privk b-0)) nb))))
+  (label 12)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((b b) (c c) (m m) (hash hash) (nc nc) (nm nm) (nb nb)
+        (price price))))
+  (origs (nc (2 0)) (nb (0 1)) (nm (1 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol epmo basic
+  (defrole bank
+    (vars (b c m name) (hash akey) (nc nm nb data) (price text))
+    (trace (recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (enc c nc nb nm price hash) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc b nb nm hash) (privk m))))
+    (non-orig (invk hash))
+    (uniq-orig nb)
+    (annotations b
+      (1
+        (implies
+          (and (forall ((pm name)) (says c (transfer b price pm nm)))
+            (forall ((pm name)) (says pm (transfer b price pm nm))))
+          (forall ((pm name)) (transfer b price pm nm))))
+      (2
+        (and (says c (transfer b price m nm))
+          (says m (transfer b price m nm))))))
+  (defrole customer
+    (vars (b c m name) (hash akey) (nb nc nm data) (goods price text))
+    (trace (send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b)))
+      (recv
+        (cat (enc (enc c nc nb nm price hash) (privk b))
+          (enc nc nb (pubk c))))
+      (send (cat (enc (enc c nc nb nm price hash) (privk b)) nb)))
+    (non-orig (invk hash))
+    (uniq-orig nc)
+    (annotations c
+      (1
+        (says m
+          (forall ((pb name))
+            (implies (transfer pb price m nm) (ship m goods c)))))
+      (3
+        (says b
+          (implies
+            (and (forall ((pm name)) (says c (transfer b price pm nm)))
+              (forall ((pm name)) (says m (transfer b price pm nm))))
+            (transfer b price m nm)))) (4 (transfer b price m nm))))
+  (defrole merchant
+    (vars (b c m name) (hash akey) (nb nc nm data) (goods price text))
+    (trace (recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv (cat (enc (enc c nc nb nm price hash) (privk b)) nb))
+      (send (enc (enc b nb nm hash) (privk m))))
+    (non-orig (invk hash))
+    (uniq-orig nm)
+    (annotations m
+      (1
+        (forall ((pb name))
+          (implies (transfer pb price m nm) (ship m goods c))))
+      (2
+        (and
+          (says b
+            (implies
+              (and
+                (forall ((pm name)) (says c (transfer b price pm nm)))
+                (forall ((pm name)) (says m (transfer b price pm nm))))
+              (transfer b price m nm)))
+          (says c (transfer b price m nm))))
+      (3 (and (transfer b price m nm) (ship m goods c)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton epmo
+  (vars (nb nc nm data) (goods price text) (hash akey) (b c m name))
+  (defstrand merchant 4 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (hash hash) (b b) (c c) (m m))
+  (non-orig (invk hash) (privk b) (privk c) (privk m))
+  (uniq-orig nm)
+  (traces
+    ((recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv (cat (enc (enc c nc nb nm price hash) (privk b)) nb))
+      (send (enc (enc b nb nm hash) (privk m)))))
+  (label 13)
+  (unrealized (0 2))
+  (origs (nm (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton epmo
+  (vars (nb nc nm data) (price goods text) (hash akey) (b c b-0 m name))
+  (defstrand merchant 4 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (hash hash) (b b) (c c) (m m))
+  (defstrand bank 2 (nc nc) (nm nm) (nb nb) (price price) (hash hash)
+    (b b) (c c))
+  (defstrand customer 5 (nb nb) (nc nc) (nm nm) (goods goods)
+    (price price) (hash hash) (b b-0) (c c) (m m))
+  (precedes ((0 1) (2 1)) ((1 1) (2 3)) ((2 0) (0 0)) ((2 2) (1 0))
+    ((2 4) (0 2)))
+  (non-orig (invk hash) (privk b) (privk c) (privk m))
+  (uniq-orig nb nc nm)
+  (operation nonce-test (displaced 2 3 customer 5) nb (0 2)
+    (enc nc nb (pubk c)) (enc c nc nb nm price hash))
+  (traces
+    ((recv (enc c nc goods price (pubk m)))
+      (send (enc nc nm m goods price (pubk c)))
+      (recv (cat (enc (enc c nc nb nm price hash) (privk b)) nb))
+      (send (enc (enc b nb nm hash) (privk m))))
+    ((recv (enc c nc nm price (pubk b)))
+      (send
+        (cat (enc (enc c nc nb nm price hash) (privk b))
+          (enc nc nb (pubk c)))))
+    ((send (enc c nc goods price (pubk m)))
+      (recv (enc nc nm m goods price (pubk c)))
+      (send (enc c nc nm price (pubk b-0)))
+      (recv
+        (cat (enc (enc c nc nb nm price hash) (privk b-0))
+          (enc nc nb (pubk c))))
+      (send (cat (enc (enc c nc nb nm price hash) (privk b-0)) nb))))
+  (label 16)
+  (parent 13)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((b b) (c c) (m m) (hash hash) (nb nb) (nc nc) (nm nm)
+        (goods goods) (price price))))
+  (origs (nc (2 0)) (nb (1 1)) (nm (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/example.scm b/tst/example.scm
new file mode 100644
--- /dev/null
+++ b/tst/example.scm
@@ -0,0 +1,77 @@
+(herald example)
+
+(defprotocol version-1 basic
+  (defrole init ;; I'm B 
+    (vars (a b name) (m text) (s skey))
+    (trace
+     (send (enc s (ltk a b)))
+     (recv (enc m a s))))
+
+  (defrole resp ;; I'm A 
+    (vars (a b name) (m text) (s skey))
+    (trace
+     (recv (enc s (ltk a b)))
+     (send (enc m a s)))))
+
+
+(defskeleton version-1
+  (vars (a b name) (m text) (s skey))
+  (defstrand init 2 (a a) (b b) (m m) (s s))
+  (non-orig (ltk a b))
+  (uniq-orig s))
+
+(defskeleton version-1
+  (vars (a b name) (m text) (s skey))
+  (defstrand resp 2 (a a) (b b) (m m) (s s))
+  (non-orig (ltk a b))
+  ;;  (uniq-orig s)
+  )
+
+(defskeleton version-1
+  (vars (m text) (a b name) (s skey))
+  (defstrand resp 2 (m m) (a a) (b b) (s s))
+  (defstrand init 1 (a a) (b b) (s s))
+  (deflistener m)
+  (precedes ((1 0) (0 0)))
+  (uniq-orig m s)
+  (non-orig (ltk a b)))
+
+
+
+(defskeleton version-1
+  (vars (m text) (a b name) (s skey))
+  (defstrand resp 2 (m m) (a a) (b b) (s s))
+  (defstrand init 1 (a a) (b b) (s s))
+  (deflistener m)
+  (precedes ((1 0) (0 0)))
+  (uniq-orig m ;; s
+	     )
+  (non-orig (ltk a b)))
+
+(defprotocol version-2 basic
+  (defrole init ;; I'm B 
+    (vars (a b name) (m n1 n2 text) (s skey))
+    (trace
+     (send (enc s n1 (ltk a b)))
+     (recv (enc m a n1 s))))
+
+  (defrole resp ;; I'm A 
+    (vars (a b name) (m n1 n2 text) (s skey))
+    (trace
+     (recv (enc s n1 (ltk a b)))
+     (send (enc m a n1 s)))))
+
+
+(defskeleton version-2
+  (vars (a b name) (m text) (s skey))
+  (defstrand init 2 (a a) (b b) (m m) (s s))
+  (non-orig (ltk a b))
+  (uniq-orig s))
+
+(defskeleton version-2
+  (vars (a b name) (m n1 n2 text) (s skey))
+  (defstrand resp 2 (a a) (b b) (m m) (s s) (n1 n1))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  ;;  (uniq-orig s)
+  )
diff --git a/tst/example.tst b/tst/example.tst
new file mode 100644
--- /dev/null
+++ b/tst/example.tst
@@ -0,0 +1,367 @@
+(herald example)
+
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/example.scm")
+
+(defprotocol version-1 basic
+  (defrole init
+    (vars (a b name) (m text) (s skey))
+    (trace (send (enc s (ltk a b))) (recv (enc m a s))))
+  (defrole resp
+    (vars (a b name) (m text) (s skey))
+    (trace (recv (enc s (ltk a b))) (send (enc m a s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b name))
+  (defstrand init 2 (s s) (m m) (a a) (b b))
+  (non-orig (ltk a b))
+  (uniq-orig s)
+  (traces ((send (enc s (ltk a b))) (recv (enc m a s))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (s (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b b-0 name))
+  (defstrand init 2 (s s) (m m) (a a) (b b))
+  (defstrand resp 2 (s s) (m m) (a a) (b b-0))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (ltk a b))
+  (uniq-orig s)
+  (operation encryption-test (added-strand resp 2) (enc m a s) (0 1))
+  (strand-map 0)
+  (traces ((send (enc s (ltk a b))) (recv (enc m a s)))
+    ((recv (enc s (ltk a b-0))) (send (enc m a s))))
+  (label 1)
+  (parent 0)
+  (unrealized (1 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b name))
+  (defstrand init 2 (s s) (m m) (a a) (b b))
+  (deflistener s)
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (ltk a b))
+  (uniq-orig s)
+  (operation encryption-test (added-listener s) (enc m a s) (0 1))
+  (strand-map 0)
+  (traces ((send (enc s (ltk a b))) (recv (enc m a s)))
+    ((recv s) (send s)))
+  (label 2)
+  (parent 0)
+  (unrealized (1 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b name))
+  (defstrand init 2 (s s) (m m) (a a) (b b))
+  (defstrand resp 2 (s s) (m m) (a a) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (ltk a b))
+  (uniq-orig s)
+  (operation nonce-test (contracted (b-0 b)) s (1 0) (enc s (ltk a b)))
+  (strand-map 0 1)
+  (traces ((send (enc s (ltk a b))) (recv (enc m a s)))
+    ((recv (enc s (ltk a b))) (send (enc m a s))))
+  (label 3)
+  (parent 1)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (m m) (s s))))
+  (origs (s (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol version-1 basic
+  (defrole init
+    (vars (a b name) (m text) (s skey))
+    (trace (send (enc s (ltk a b))) (recv (enc m a s))))
+  (defrole resp
+    (vars (a b name) (m text) (s skey))
+    (trace (recv (enc s (ltk a b))) (send (enc m a s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b name))
+  (defstrand resp 2 (s s) (m m) (a a) (b b))
+  (non-orig (ltk a b))
+  (traces ((recv (enc s (ltk a b))) (send (enc m a s))))
+  (label 4)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b name))
+  (defstrand resp 2 (s s) (m m) (a a) (b b))
+  (defstrand init 1 (s s) (a a) (b b))
+  (precedes ((1 0) (0 0)))
+  (non-orig (ltk a b))
+  (operation encryption-test (added-strand init 1) (enc s (ltk a b))
+    (0 0))
+  (strand-map 0)
+  (traces ((recv (enc s (ltk a b))) (send (enc m a s)))
+    ((send (enc s (ltk a b)))))
+  (label 5)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (m m) (s s))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol version-1 basic
+  (defrole init
+    (vars (a b name) (m text) (s skey))
+    (trace (send (enc s (ltk a b))) (recv (enc m a s))))
+  (defrole resp
+    (vars (a b name) (m text) (s skey))
+    (trace (recv (enc s (ltk a b))) (send (enc m a s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b name))
+  (defstrand resp 2 (s s) (m m) (a a) (b b))
+  (defstrand init 1 (s s) (a a) (b b))
+  (deflistener m)
+  (precedes ((1 0) (0 0)))
+  (non-orig (ltk a b))
+  (uniq-orig s m)
+  (traces ((recv (enc s (ltk a b))) (send (enc m a s)))
+    ((send (enc s (ltk a b)))) ((recv m) (send m)))
+  (label 6)
+  (unrealized (2 0))
+  (preskeleton)
+  (origs (m (0 1)) (s (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b name))
+  (defstrand resp 2 (s s) (m m) (a a) (b b))
+  (defstrand init 1 (s s) (a a) (b b))
+  (deflistener m)
+  (precedes ((0 1) (2 0)) ((1 0) (0 0)))
+  (non-orig (ltk a b))
+  (uniq-orig s m)
+  (traces ((recv (enc s (ltk a b))) (send (enc m a s)))
+    ((send (enc s (ltk a b)))) ((recv m) (send m)))
+  (label 7)
+  (parent 6)
+  (unrealized (2 0))
+  (origs (m (0 1)) (s (1 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b name))
+  (defstrand resp 2 (s s) (m m) (a a) (b b))
+  (defstrand init 1 (s s) (a a) (b b))
+  (deflistener m)
+  (deflistener s)
+  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((1 0) (3 0)) ((3 1) (2 0)))
+  (non-orig (ltk a b))
+  (uniq-orig s m)
+  (operation nonce-test (added-listener s) m (2 0) (enc m a s))
+  (strand-map 0 1 2)
+  (traces ((recv (enc s (ltk a b))) (send (enc m a s)))
+    ((send (enc s (ltk a b)))) ((recv m) (send m)) ((recv s) (send s)))
+  (label 8)
+  (parent 7)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol version-1 basic
+  (defrole init
+    (vars (a b name) (m text) (s skey))
+    (trace (send (enc s (ltk a b))) (recv (enc m a s))))
+  (defrole resp
+    (vars (a b name) (m text) (s skey))
+    (trace (recv (enc s (ltk a b))) (send (enc m a s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b name))
+  (defstrand resp 2 (s s) (m m) (a a) (b b))
+  (defstrand init 1 (s s) (a a) (b b))
+  (deflistener m)
+  (precedes ((1 0) (0 0)))
+  (non-orig (ltk a b))
+  (uniq-orig m)
+  (traces ((recv (enc s (ltk a b))) (send (enc m a s)))
+    ((send (enc s (ltk a b)))) ((recv m) (send m)))
+  (label 9)
+  (unrealized (2 0))
+  (preskeleton)
+  (origs (m (0 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b name))
+  (defstrand resp 2 (s s) (m m) (a a) (b b))
+  (defstrand init 1 (s s) (a a) (b b))
+  (deflistener m)
+  (precedes ((0 1) (2 0)) ((1 0) (0 0)))
+  (non-orig (ltk a b))
+  (uniq-orig m)
+  (traces ((recv (enc s (ltk a b))) (send (enc m a s)))
+    ((send (enc s (ltk a b)))) ((recv m) (send m)))
+  (label 10)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps ((0 1 2) ((m m) (a a) (b b) (s s))))
+  (origs (m (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol version-2 basic
+  (defrole init
+    (vars (a b name) (m n1 text) (s skey))
+    (trace (send (enc s n1 (ltk a b))) (recv (enc m a n1 s))))
+  (defrole resp
+    (vars (a b name) (m n1 text) (s skey))
+    (trace (recv (enc s n1 (ltk a b))) (send (enc m a n1 s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton version-2
+  (vars (s skey) (m n1 text) (a b name))
+  (defstrand init 2 (s s) (m m) (n1 n1) (a a) (b b))
+  (non-orig (ltk a b))
+  (uniq-orig s)
+  (traces ((send (enc s n1 (ltk a b))) (recv (enc m a n1 s))))
+  (label 11)
+  (unrealized (0 1))
+  (origs (s (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton version-2
+  (vars (s skey) (m n1 text) (a b b-0 name))
+  (defstrand init 2 (s s) (m m) (n1 n1) (a a) (b b))
+  (defstrand resp 2 (s s) (m m) (n1 n1) (a a) (b b-0))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (ltk a b))
+  (uniq-orig s)
+  (operation encryption-test (added-strand resp 2) (enc m a n1 s) (0 1))
+  (strand-map 0)
+  (traces ((send (enc s n1 (ltk a b))) (recv (enc m a n1 s)))
+    ((recv (enc s n1 (ltk a b-0))) (send (enc m a n1 s))))
+  (label 12)
+  (parent 11)
+  (unrealized (1 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton version-2
+  (vars (s skey) (m n1 text) (a b name))
+  (defstrand init 2 (s s) (m m) (n1 n1) (a a) (b b))
+  (deflistener s)
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (ltk a b))
+  (uniq-orig s)
+  (operation encryption-test (added-listener s) (enc m a n1 s) (0 1))
+  (strand-map 0)
+  (traces ((send (enc s n1 (ltk a b))) (recv (enc m a n1 s)))
+    ((recv s) (send s)))
+  (label 13)
+  (parent 11)
+  (unrealized (1 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton version-2
+  (vars (s skey) (m n1 text) (a b name))
+  (defstrand init 2 (s s) (m m) (n1 n1) (a a) (b b))
+  (defstrand resp 2 (s s) (m m) (n1 n1) (a a) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (ltk a b))
+  (uniq-orig s)
+  (operation nonce-test (contracted (b-0 b)) s (1 0)
+    (enc s n1 (ltk a b)))
+  (strand-map 0 1)
+  (traces ((send (enc s n1 (ltk a b))) (recv (enc m a n1 s)))
+    ((recv (enc s n1 (ltk a b))) (send (enc m a n1 s))))
+  (label 14)
+  (parent 12)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (m m) (s s) (n1 n1))))
+  (origs (s (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol version-2 basic
+  (defrole init
+    (vars (a b name) (m n1 text) (s skey))
+    (trace (send (enc s n1 (ltk a b))) (recv (enc m a n1 s))))
+  (defrole resp
+    (vars (a b name) (m n1 text) (s skey))
+    (trace (recv (enc s n1 (ltk a b))) (send (enc m a n1 s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton version-2
+  (vars (s skey) (m n1 text) (a b name))
+  (defstrand resp 2 (s s) (m m) (n1 n1) (a a) (b b))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (traces ((recv (enc s n1 (ltk a b))) (send (enc m a n1 s))))
+  (label 15)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton version-2
+  (vars (s skey) (m n1 text) (a b name))
+  (defstrand resp 2 (s s) (m m) (n1 n1) (a a) (b b))
+  (defstrand init 1 (s s) (n1 n1) (a a) (b b))
+  (precedes ((1 0) (0 0)))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (operation encryption-test (added-strand init 1) (enc s n1 (ltk a b))
+    (0 0))
+  (strand-map 0)
+  (traces ((recv (enc s n1 (ltk a b))) (send (enc m a n1 s)))
+    ((send (enc s n1 (ltk a b)))))
+  (label 16)
+  (parent 15)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (m m) (n1 n1) (s s))))
+  (origs (n1 (1 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/example_shapes.tst b/tst/example_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/example_shapes.tst
@@ -0,0 +1,266 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald example)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/example.scm")
+
+(defprotocol version-1 basic
+  (defrole init
+    (vars (a b name) (m text) (s skey))
+    (trace (send (enc s (ltk a b))) (recv (enc m a s))))
+  (defrole resp
+    (vars (a b name) (m text) (s skey))
+    (trace (recv (enc s (ltk a b))) (send (enc m a s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b name))
+  (defstrand init 2 (s s) (m m) (a a) (b b))
+  (non-orig (ltk a b))
+  (uniq-orig s)
+  (traces ((send (enc s (ltk a b))) (recv (enc m a s))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (s (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b name))
+  (defstrand init 2 (s s) (m m) (a a) (b b))
+  (defstrand resp 2 (s s) (m m) (a a) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (ltk a b))
+  (uniq-orig s)
+  (operation nonce-test (contracted (b-0 b)) s (1 0) (enc s (ltk a b)))
+  (traces ((send (enc s (ltk a b))) (recv (enc m a s)))
+    ((recv (enc s (ltk a b))) (send (enc m a s))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (m m) (s s))))
+  (origs (s (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol version-1 basic
+  (defrole init
+    (vars (a b name) (m text) (s skey))
+    (trace (send (enc s (ltk a b))) (recv (enc m a s))))
+  (defrole resp
+    (vars (a b name) (m text) (s skey))
+    (trace (recv (enc s (ltk a b))) (send (enc m a s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b name))
+  (defstrand resp 2 (s s) (m m) (a a) (b b))
+  (non-orig (ltk a b))
+  (traces ((recv (enc s (ltk a b))) (send (enc m a s))))
+  (label 4)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b name))
+  (defstrand resp 2 (s s) (m m) (a a) (b b))
+  (defstrand init 1 (s s) (a a) (b b))
+  (precedes ((1 0) (0 0)))
+  (non-orig (ltk a b))
+  (operation encryption-test (added-strand init 1) (enc s (ltk a b))
+    (0 0))
+  (traces ((recv (enc s (ltk a b))) (send (enc m a s)))
+    ((send (enc s (ltk a b)))))
+  (label 5)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (m m) (s s))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol version-1 basic
+  (defrole init
+    (vars (a b name) (m text) (s skey))
+    (trace (send (enc s (ltk a b))) (recv (enc m a s))))
+  (defrole resp
+    (vars (a b name) (m text) (s skey))
+    (trace (recv (enc s (ltk a b))) (send (enc m a s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b name))
+  (defstrand resp 2 (s s) (m m) (a a) (b b))
+  (defstrand init 1 (s s) (a a) (b b))
+  (deflistener m)
+  (precedes ((1 0) (0 0)))
+  (non-orig (ltk a b))
+  (uniq-orig s m)
+  (traces ((recv (enc s (ltk a b))) (send (enc m a s)))
+    ((send (enc s (ltk a b)))) ((recv m) (send m)))
+  (label 6)
+  (unrealized (2 0))
+  (preskeleton)
+  (origs (m (0 1)) (s (1 0)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol version-1 basic
+  (defrole init
+    (vars (a b name) (m text) (s skey))
+    (trace (send (enc s (ltk a b))) (recv (enc m a s))))
+  (defrole resp
+    (vars (a b name) (m text) (s skey))
+    (trace (recv (enc s (ltk a b))) (send (enc m a s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b name))
+  (defstrand resp 2 (s s) (m m) (a a) (b b))
+  (defstrand init 1 (s s) (a a) (b b))
+  (deflistener m)
+  (precedes ((1 0) (0 0)))
+  (non-orig (ltk a b))
+  (uniq-orig m)
+  (traces ((recv (enc s (ltk a b))) (send (enc m a s)))
+    ((send (enc s (ltk a b)))) ((recv m) (send m)))
+  (label 9)
+  (unrealized (2 0))
+  (preskeleton)
+  (origs (m (0 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton version-1
+  (vars (s skey) (m text) (a b name))
+  (defstrand resp 2 (s s) (m m) (a a) (b b))
+  (defstrand init 1 (s s) (a a) (b b))
+  (deflistener m)
+  (precedes ((0 1) (2 0)) ((1 0) (0 0)))
+  (non-orig (ltk a b))
+  (uniq-orig m)
+  (traces ((recv (enc s (ltk a b))) (send (enc m a s)))
+    ((send (enc s (ltk a b)))) ((recv m) (send m)))
+  (label 10)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps ((0 1 2) ((m m) (a a) (b b) (s s))))
+  (origs (m (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol version-2 basic
+  (defrole init
+    (vars (a b name) (m n1 text) (s skey))
+    (trace (send (enc s n1 (ltk a b))) (recv (enc m a n1 s))))
+  (defrole resp
+    (vars (a b name) (m n1 text) (s skey))
+    (trace (recv (enc s n1 (ltk a b))) (send (enc m a n1 s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton version-2
+  (vars (s skey) (m n1 text) (a b name))
+  (defstrand init 2 (s s) (m m) (n1 n1) (a a) (b b))
+  (non-orig (ltk a b))
+  (uniq-orig s)
+  (traces ((send (enc s n1 (ltk a b))) (recv (enc m a n1 s))))
+  (label 11)
+  (unrealized (0 1))
+  (origs (s (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton version-2
+  (vars (s skey) (m n1 text) (a b name))
+  (defstrand init 2 (s s) (m m) (n1 n1) (a a) (b b))
+  (defstrand resp 2 (s s) (m m) (n1 n1) (a a) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (ltk a b))
+  (uniq-orig s)
+  (operation nonce-test (contracted (b-0 b)) s (1 0)
+    (enc s n1 (ltk a b)))
+  (traces ((send (enc s n1 (ltk a b))) (recv (enc m a n1 s)))
+    ((recv (enc s n1 (ltk a b))) (send (enc m a n1 s))))
+  (label 14)
+  (parent 11)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (m m) (s s) (n1 n1))))
+  (origs (s (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol version-2 basic
+  (defrole init
+    (vars (a b name) (m n1 text) (s skey))
+    (trace (send (enc s n1 (ltk a b))) (recv (enc m a n1 s))))
+  (defrole resp
+    (vars (a b name) (m n1 text) (s skey))
+    (trace (recv (enc s n1 (ltk a b))) (send (enc m a n1 s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton version-2
+  (vars (s skey) (m n1 text) (a b name))
+  (defstrand resp 2 (s s) (m m) (n1 n1) (a a) (b b))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (traces ((recv (enc s n1 (ltk a b))) (send (enc m a n1 s))))
+  (label 15)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton version-2
+  (vars (s skey) (m n1 text) (a b name))
+  (defstrand resp 2 (s s) (m m) (n1 n1) (a a) (b b))
+  (defstrand init 1 (s s) (n1 n1) (a a) (b b))
+  (precedes ((1 0) (0 0)))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (operation encryption-test (added-strand init 1) (enc s n1 (ltk a b))
+    (0 0))
+  (traces ((recv (enc s n1 (ltk a b))) (send (enc m a n1 s)))
+    ((send (enc s n1 (ltk a b)))))
+  (label 16)
+  (parent 15)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (m m) (n1 n1) (s s))))
+  (origs (n1 (1 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/expand.tst b/tst/expand.tst
--- a/tst/expand.tst
+++ b/tst/expand.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "Expanded macros")
 
 (herald expand (expand) (comment "test macro expansion"))
diff --git a/tst/expand_shapes.tst b/tst/expand_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/expand_shapes.tst
@@ -0,0 +1,15 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "Expanded macros")
+
+(herald expand (expand) (comment "test macro expansion"))
+
+(defprotocol expand basic
+  (defrole init
+    (vars (t text) (k skey))
+    (trace (send (enc t k)) (recv (cat t k)))))
+
+(defskeleton expand (vars) (defstrand init 2))
diff --git a/tst/facts.tst b/tst/facts.tst
--- a/tst/facts.tst
+++ b/tst/facts.tst
@@ -1,6 +1,6 @@
 (herald facts)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/facts.scm")
 
 (defprotocol unilateral basic
@@ -39,6 +39,7 @@
   (uniq-orig n)
   (facts (foo 0 k) (bar 0 (invk k)))
   (operation nonce-test (added-strand resp 2) n (0 1) (enc n k))
+  (strand-map 0)
   (traces ((send (enc n k)) (recv n)) ((recv (enc n k)) (send n)))
   (label 1)
   (parent 0)
@@ -84,6 +85,7 @@
   (pen-non-orig n)
   (uniq-orig n)
   (operation nonce-test (added-strand init 1) n (0 0))
+  (strand-map 0)
   (traces ((recv (enc n k)) (send n)) ((send (enc n k-0))))
   (label 3)
   (parent 2)
@@ -139,6 +141,7 @@
   (uniq-orig n)
   (facts (foo 0 k) (bar 0 (invk k)))
   (operation nonce-test (added-strand resp 2) n (0 1) (enc n k))
+  (strand-map 0)
   (traces ((send (enc n k)) (recv n)) ((recv (enc n k)) (send n)))
   (label 5)
   (parent 4)
@@ -194,6 +197,7 @@
   (pen-non-orig n)
   (uniq-orig n)
   (operation nonce-test (added-strand init 1) n (0 0))
+  (strand-map 0)
   (traces ((recv (enc n k)) (send n)) ((send (enc n k-0))))
   (label 7)
   (parent 6)
@@ -246,6 +250,7 @@
   (uniq-orig na nb)
   (operation encryption-test (added-strand resp 2)
     (enc na nb b t2 (privk b)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat nb t1))
       (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
@@ -305,6 +310,7 @@
   (uniq-orig na nb)
   (operation encryption-test (added-strand resp 2)
     (enc na nb b t2 (privk b)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat nb t1))
       (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
@@ -365,6 +371,7 @@
   (uniq-orig na nb)
   (operation encryption-test (added-strand resp 2)
     (enc na nb b t2 (privk b)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat nb t1))
       (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
diff --git a/tst/facts_shapes.tst b/tst/facts_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/facts_shapes.tst
@@ -0,0 +1,385 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald facts)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/facts.scm")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (n text) (k akey))
+    (trace (send (enc n k)) (recv n))
+    (uniq-orig n))
+  (defrole resp
+    (vars (n text) (k akey))
+    (trace (recv (enc n k)) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton unilateral
+  (vars (n text) (k akey))
+  (defstrand init 2 (n n) (k k))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (facts (foo 0 k) (bar 0 (invk k)))
+  (traces ((send (enc n k)) (recv n)))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton unilateral
+  (vars (n text) (k akey))
+  (defstrand init 2 (n n) (k k))
+  (defstrand resp 2 (n n) (k k))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (facts (foo 0 k) (bar 0 (invk k)))
+  (operation nonce-test (added-strand resp 2) n (0 1) (enc n k))
+  (traces ((send (enc n k)) (recv n)) ((recv (enc n k)) (send n)))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((k k) (n n))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (n text) (k akey))
+    (trace (send (enc n k)) (recv n))
+    (uniq-orig n))
+  (defrole resp
+    (vars (n text) (k akey))
+    (trace (recv (enc n k)) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton unilateral
+  (vars (n text) (k akey))
+  (defstrand resp 2 (n n) (k k))
+  (non-orig (invk k))
+  (pen-non-orig n)
+  (traces ((recv (enc n k)) (send n)))
+  (label 2)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton unilateral
+  (vars (n text) (k k-0 akey))
+  (defstrand resp 2 (n n) (k k))
+  (defstrand init 1 (n n) (k k-0))
+  (precedes ((1 0) (0 0)))
+  (non-orig (invk k))
+  (pen-non-orig n)
+  (uniq-orig n)
+  (operation nonce-test (added-strand init 1) n (0 0))
+  (traces ((recv (enc n k)) (send n)) ((send (enc n k-0))))
+  (label 3)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (k k))))
+  (origs (n (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (n text) (k akey))
+    (trace (send (enc n k)) (recv n))
+    (uniq-orig n))
+  (defrole resp
+    (vars (n text) (k akey))
+    (trace (recv (enc n k)) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton unilateral
+  (vars (n text) (k akey))
+  (defstrand init 2 (n n) (k k))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (facts (foo 0 k) (bar 0 (invk k)))
+  (goals
+    (forall ((n text) (k akey) (z strd))
+      (implies
+        (and (p "init" z 2) (p "init" "n" z n) (p "init" "k" z k)
+          (non (invk k)) (uniq-at n z 0) (fact foo z k)
+          (fact bar z (invk k)))
+        (exists ((z-0 strd))
+          (and (p "resp" z-0 2) (p "resp" "n" z-0 n)
+            (p "resp" "k" z-0 k) (prec z 0 z-0 0) (prec z-0 1 z 1))))))
+  (traces ((send (enc n k)) (recv n)))
+  (label 4)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton unilateral
+  (vars (n text) (k akey))
+  (defstrand init 2 (n n) (k k))
+  (defstrand resp 2 (n n) (k k))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (facts (foo 0 k) (bar 0 (invk k)))
+  (operation nonce-test (added-strand resp 2) n (0 1) (enc n k))
+  (traces ((send (enc n k)) (recv n)) ((recv (enc n k)) (send n)))
+  (label 5)
+  (parent 4)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((n n) (k k))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (n text) (k akey))
+    (trace (send (enc n k)) (recv n))
+    (uniq-orig n))
+  (defrole resp
+    (vars (n text) (k akey))
+    (trace (recv (enc n k)) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton unilateral
+  (vars (n text) (k akey))
+  (defstrand resp 2 (n n) (k k))
+  (non-orig (invk k))
+  (pen-non-orig n)
+  (goals
+    (forall ((n text) (k akey) (z strd))
+      (implies
+        (and (p "resp" z 2) (p "resp" "n" z n) (p "resp" "k" z k)
+          (non (invk k)) (pnon n))
+        (exists ((k-0 akey) (z-0 strd))
+          (and (p "init" z-0 1) (p "init" "n" z-0 n)
+            (p "init" "k" z-0 k-0) (prec z-0 0 z 0)
+            (uniq-at n z-0 0))))))
+  (traces ((recv (enc n k)) (send n)))
+  (label 6)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton unilateral
+  (vars (n text) (k k-0 akey))
+  (defstrand resp 2 (n n) (k k))
+  (defstrand init 1 (n n) (k k-0))
+  (precedes ((1 0) (0 0)))
+  (non-orig (invk k))
+  (pen-non-orig n)
+  (uniq-orig n)
+  (operation nonce-test (added-strand init 1) n (0 0))
+  (traces ((recv (enc n k)) (send n)) ((send (enc n k-0))))
+  (label 7)
+  (parent 6)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((n n) (k k))))
+  (origs (n (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol iso-unilateral basic
+  (defrole resp
+    (vars (na nb t1 t2 t3 text) (b name))
+    (trace (recv (cat nb t1))
+      (send (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    (uniq-orig na))
+  (defrole init
+    (vars (na nb t1 t2 t3 text) (b name))
+    (trace (send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    (uniq-orig nb))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Two pass authentication"))
+
+(defskeleton iso-unilateral
+  (vars (na nb t1 t2 t3 text) (b name))
+  (defstrand init 2 (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3) (b b))
+  (non-orig (privk b))
+  (uniq-orig nb)
+  (traces
+    ((send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b))))))
+  (label 8)
+  (unrealized (0 1))
+  (origs (nb (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton iso-unilateral
+  (vars (na nb t1 t2 t3 t1-0 t3-0 text) (b name))
+  (defstrand init 2 (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3) (b b))
+  (defstrand resp 2 (na na) (nb nb) (t1 t1-0) (t2 t2) (t3 t3-0) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk b))
+  (uniq-orig na nb)
+  (operation encryption-test (added-strand resp 2)
+    (enc na nb b t2 (privk b)) (0 1))
+  (traces
+    ((send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    ((recv (cat nb t1-0))
+      (send (cat na nb b t3-0 (enc na nb b t2 (privk b))))))
+  (label 9)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3))))
+  (origs (na (1 1)) (nb (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol iso-unilateral basic
+  (defrole resp
+    (vars (na nb t1 t2 t3 text) (b name))
+    (trace (recv (cat nb t1))
+      (send (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    (uniq-orig na))
+  (defrole init
+    (vars (na nb t1 t2 t3 text) (b name))
+    (trace (send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    (uniq-orig nb))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Two pass authentication"))
+
+(defskeleton iso-unilateral
+  (vars (na nb t1 t2 t3 text) (b name))
+  (defstrand init 2 (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3) (b b))
+  (non-orig (privk b))
+  (uniq-orig nb)
+  (goals
+    (forall ((b name) (z strd))
+      (implies (and (p "init" z 2) (p "init" "b" z b) (non (privk b)))
+        (exists ((y strd)) (and (p "resp" y 2) (p "resp" "b" y b))))))
+  (traces
+    ((send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b))))))
+  (label 10)
+  (unrealized (0 1))
+  (origs (nb (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton iso-unilateral
+  (vars (na nb t1 t2 t3 t1-0 t3-0 text) (b name))
+  (defstrand init 2 (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3) (b b))
+  (defstrand resp 2 (na na) (nb nb) (t1 t1-0) (t2 t2) (t3 t3-0) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk b))
+  (uniq-orig na nb)
+  (operation encryption-test (added-strand resp 2)
+    (enc na nb b t2 (privk b)) (0 1))
+  (traces
+    ((send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    ((recv (cat nb t1-0))
+      (send (cat na nb b t3-0 (enc na nb b t2 (privk b))))))
+  (label 11)
+  (parent 10)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((b b) (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3))))
+  (origs (na (1 1)) (nb (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol iso-unilateral basic
+  (defrole resp
+    (vars (na nb t1 t2 t3 text) (b name))
+    (trace (recv (cat nb t1))
+      (send (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    (uniq-orig na))
+  (defrole init
+    (vars (na nb t1 t2 t3 text) (b name))
+    (trace (send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    (uniq-orig nb))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Two pass authentication"))
+
+(defskeleton iso-unilateral
+  (vars (na nb t1 t2 t3 text) (b name))
+  (defstrand init 2 (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3) (b b))
+  (non-orig (privk b))
+  (uniq-orig nb)
+  (goals
+    (forall ((b name) (z strd))
+      (implies (and (p "init" z 2) (p "init" "b" z b) (non (privk b)))
+        (false))))
+  (traces
+    ((send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b))))))
+  (label 12)
+  (unrealized (0 1))
+  (origs (nb (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton iso-unilateral
+  (vars (na nb t1 t2 t3 t1-0 t3-0 text) (b name))
+  (defstrand init 2 (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3) (b b))
+  (defstrand resp 2 (na na) (nb nb) (t1 t1-0) (t2 t2) (t3 t3-0) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk b))
+  (uniq-orig na nb)
+  (operation encryption-test (added-strand resp 2)
+    (enc na nb b t2 (privk b)) (0 1))
+  (traces
+    ((send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    ((recv (cat nb t1-0))
+      (send (cat na nb b t3-0 (enc na nb b t2 (privk b))))))
+  (label 13)
+  (parent 12)
+  (realized)
+  (shape)
+  (satisfies (no (b b) (z 0)))
+  (maps ((0) ((b b) (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3))))
+  (origs (na (1 1)) (nb (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/factvar.tst b/tst/factvar.tst
--- a/tst/factvar.tst
+++ b/tst/factvar.tst
@@ -1,6 +1,6 @@
 (herald factvar)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/factvar.scm")
 
 (defprotocol free-fact-var basic
diff --git a/tst/factvar_shapes.tst b/tst/factvar_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/factvar_shapes.tst
@@ -0,0 +1,79 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald factvar)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/factvar.scm")
+
+(defprotocol free-fact-var basic
+  (defrole resp
+    (vars (n text) (k akey))
+    (trace (recv (enc n k)) (send n)))
+  (defrule add
+    (forall ((z strd))
+      (implies (p "resp" z 1) (exists ((m text)) (fact thing m))))
+    (comment "This rule adds a text variable")
+    (comment "that does not appear in a strand"))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton free-fact-var
+  (vars (n text) (k akey))
+  (defstrand resp 1 (n n) (k k))
+  (non-orig (invk k))
+  (traces ((recv (enc n k))))
+  (label 0)
+  (realized)
+  (origs)
+  (comment "Not closed under rules"))
+
+(defskeleton free-fact-var
+  (vars (m n text) (k akey))
+  (defstrand resp 1 (n n) (k k))
+  (non-orig (invk k))
+  (facts (thing m))
+  (rule add)
+  (traces ((recv (enc n k))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((k k) (n n))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol free-fact-var basic
+  (defrole resp
+    (vars (n text) (k akey))
+    (trace (recv (enc n k)) (send n)))
+  (defrule add
+    (forall ((z strd))
+      (implies (p "resp" z 1) (exists ((m text)) (fact thing m))))
+    (comment "This rule adds a text variable")
+    (comment "that does not appear in a strand"))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton free-fact-var
+  (vars (n text) (k akey))
+  (defstrand resp 1 (n n) (k k))
+  (non-orig (invk k))
+  (pen-non-orig n)
+  (traces ((recv (enc n k))))
+  (label 2)
+  (unrealized (0 0))
+  (origs)
+  (comment "Not closed under rules"))
+
+(comment "Nothing left to do")
diff --git a/tst/ffgg.tst b/tst/ffgg.tst
--- a/tst/ffgg.tst
+++ b/tst/ffgg.tst
@@ -1,7 +1,7 @@
 (herald "The ffgg Protocol"
   (comment "From A Necessarily Parallel Attack by Jon K. Millen"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/ffgg.scm")
 
 (defprotocol ffgg basic
@@ -64,6 +64,7 @@
   (uniq-orig m n1 n2-0)
   (operation nonce-test (added-strand resp 4) m (1 0)
     (enc n1 n2 m (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send a) (recv (cat b n1 n2)) (send (cat a (enc n1 n2 m (pubk b))))
       (recv (cat n1 x (enc x y n1 (pubk b))))) ((recv m) (send m))
@@ -87,6 +88,7 @@
   (uniq-orig m n1 n2 n2-0 n2-1)
   (operation nonce-test (added-strand resp 4) m (1 0)
     (enc n1 n2 m (pubk b)) (enc n2 m n1 (pubk b)))
+  (strand-map 0 1 2)
   (traces
     ((send a) (recv (cat b n1 n2)) (send (cat a (enc n1 n2 m (pubk b))))
       (recv (cat n1 x (enc x y n1 (pubk b))))) ((recv m) (send m))
@@ -113,6 +115,7 @@
   (uniq-orig m n1 n2 n2-0 n2-1)
   (operation nonce-test (displaced 4 2 resp 4) m (3 2)
     (enc n1 n2 m (pubk b)))
+  (strand-map 0 1 2 3)
   (traces
     ((send a) (recv (cat b n1 n2)) (send (cat a (enc n1 n2 m (pubk b))))
       (recv (cat n1 x (enc x y n1 (pubk b))))) ((recv m) (send m))
diff --git a/tst/ffgg_shapes.tst b/tst/ffgg_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/ffgg_shapes.tst
@@ -0,0 +1,73 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "The ffgg Protocol"
+  (comment "From A Necessarily Parallel Attack by Jon K. Millen"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/ffgg.scm")
+
+(defprotocol ffgg basic
+  (defrole init
+    (vars (a b name) (n1 n2 m x y text))
+    (trace (send a) (recv (cat b n1 n2))
+      (send (cat a (enc n1 n2 m (pubk b))))
+      (recv (cat n1 x (enc x y n1 (pubk b))))))
+  (defrole resp
+    (vars (b a name) (n1 n2 x y text))
+    (trace (recv a) (send (cat b n1 n2))
+      (recv (cat a (enc n1 x y (pubk b))))
+      (send (cat n1 x (enc x y n1 (pubk b)))))
+    (uniq-orig n1 n2))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton ffgg
+  (vars (m n1 n2 x y text) (b a name))
+  (defstrand init 4 (n1 n1) (n2 n2) (m m) (x x) (y y) (a a) (b b))
+  (deflistener m)
+  (non-orig (privk b))
+  (uniq-orig m)
+  (traces
+    ((send a) (recv (cat b n1 n2)) (send (cat a (enc n1 n2 m (pubk b))))
+      (recv (cat n1 x (enc x y n1 (pubk b))))) ((recv m) (send m)))
+  (label 0)
+  (unrealized (1 0))
+  (preskeleton)
+  (origs (m (0 2)))
+  (comment "Not a skeleton"))
+
+(defskeleton ffgg
+  (vars (m n1 n2 x y n2-0 n2-1 text) (b a a-0 a-1 name))
+  (defstrand init 4 (n1 n1) (n2 n2) (m m) (x x) (y y) (a a) (b b))
+  (deflistener m)
+  (defstrand resp 4 (n1 n1) (n2 n2-0) (x n2) (y m) (b b) (a a-0))
+  (defstrand resp 4 (n1 n2) (n2 n2-1) (x m) (y n1) (b b) (a a-1))
+  (precedes ((0 2) (2 2)) ((2 1) (0 1)) ((2 3) (3 2)) ((3 1) (0 1))
+    ((3 3) (1 0)))
+  (non-orig (privk b))
+  (uniq-orig m n1 n2 n2-0 n2-1)
+  (operation nonce-test (displaced 4 2 resp 4) m (3 2)
+    (enc n1 n2 m (pubk b)))
+  (traces
+    ((send a) (recv (cat b n1 n2)) (send (cat a (enc n1 n2 m (pubk b))))
+      (recv (cat n1 x (enc x y n1 (pubk b))))) ((recv m) (send m))
+    ((recv a-0) (send (cat b n1 n2-0))
+      (recv (cat a-0 (enc n1 n2 m (pubk b))))
+      (send (cat n1 n2 (enc n2 m n1 (pubk b)))))
+    ((recv a-1) (send (cat b n2 n2-1))
+      (recv (cat a-1 (enc n2 m n1 (pubk b))))
+      (send (cat n2 m (enc m n1 n2 (pubk b))))))
+  (label 4)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((b b) (m m) (a a) (n1 n1) (n2 n2) (x x) (y y))))
+  (origs (n1 (2 1)) (n2-0 (2 1)) (n2 (3 1)) (n2-1 (3 1)) (m (0 2))))
+
+(comment "Nothing left to do")
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,7 +3,7 @@
   (comment
     "Based on the Internet-Draft: https://www.ietf.org/archive/id/draft-hardjono-ace-fluffy-03.txt"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/fluffy_draft03_gske.scm")
 
 (defprotocol fluffy basic
@@ -54,6 +54,7 @@
   (uniq-gen gk)
   (operation encryption-test (added-strand keyserv 4)
     (enc s g nb gk (ltk s b)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat "req" s g (enc b nb (ltk s b))))
       (recv (cat "resp" b (enc s g nb gk (ltk s b)))))
@@ -66,7 +67,8 @@
   (realized)
   (shape)
   (maps ((0) ((b b) (s s) (nb nb) (gk gk) (g g))))
-  (origs (nb (0 0))))
+  (origs (nb (0 0)))
+  (ugens (gk (1 1))))
 
 (defskeleton fluffy
   (vars (gk skey) (nb g text) (b s name))
@@ -78,6 +80,7 @@
   (uniq-gen gk)
   (operation encryption-test (added-strand keyserv 2)
     (enc s g nb gk (ltk s b)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat "req" s g (enc b nb (ltk s b))))
       (recv (cat "resp" b (enc s g nb gk (ltk s b)))))
@@ -88,7 +91,8 @@
   (realized)
   (shape)
   (maps ((0) ((b b) (s s) (nb nb) (gk gk) (g g))))
-  (origs (nb (0 0))))
+  (origs (nb (0 0)))
+  (ugens (gk (1 1))))
 
 (comment "Nothing left to do")
 
@@ -129,6 +133,7 @@
   (label 3)
   (unrealized (0 0) (0 2))
   (origs)
+  (ugens (gk (0 1)))
   (comment "2 in cohort - 2 not yet seen"))
 
 (defskeleton fluffy
@@ -140,6 +145,7 @@
   (uniq-gen gk)
   (operation encryption-test (added-strand sp 1) (enc b nb (ltk s b))
     (0 0))
+  (strand-map 0)
   (traces
     ((recv (cat "req" s g (enc b nb (ltk s b))))
       (send (cat "resp" b (enc s g nb gk (ltk s b))))
@@ -160,6 +166,7 @@
   (uniq-gen gk)
   (operation encryption-test (added-strand client 1)
     (enc b nb (ltk s b)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (cat "req" s g (enc b nb (ltk s b))))
       (send (cat "resp" b (enc s g nb gk (ltk s b))))
@@ -180,6 +187,7 @@
   (uniq-gen gk)
   (operation encryption-test (displaced 2 1 sp 1) (enc a na (ltk s a))
     (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (cat "req" s g (enc b nb (ltk s b))))
       (send (cat "resp" b (enc s g nb gk (ltk s b))))
@@ -191,7 +199,8 @@
   (realized)
   (shape)
   (maps ((0) ((a b) (b b) (s s) (nb nb) (na nb) (gk gk) (g g))))
-  (origs))
+  (origs)
+  (ugens (gk (0 1))))
 
 (defskeleton fluffy
   (vars (gk skey) (nb na g g-0 g-1 text) (a b s name))
@@ -203,6 +212,7 @@
   (uniq-gen gk)
   (operation encryption-test (added-strand sp 1) (enc a na (ltk s a))
     (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (cat "req" s g (enc b nb (ltk s b))))
       (send (cat "resp" b (enc s g nb gk (ltk s b))))
@@ -215,7 +225,8 @@
   (realized)
   (shape)
   (maps ((0) ((a a) (b b) (s s) (nb nb) (na na) (gk gk) (g g))))
-  (origs))
+  (origs)
+  (ugens (gk (0 1))))
 
 (defskeleton fluffy
   (vars (gk skey) (nb na g g-0 g-1 text) (a b s name))
@@ -227,6 +238,7 @@
   (uniq-gen gk)
   (operation encryption-test (added-strand client 1)
     (enc a na (ltk s a)) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (cat "req" s g (enc b nb (ltk s b))))
       (send (cat "resp" b (enc s g nb gk (ltk s b))))
@@ -239,7 +251,8 @@
   (realized)
   (shape)
   (maps ((0) ((a a) (b b) (s s) (nb nb) (na na) (gk gk) (g g))))
-  (origs))
+  (origs)
+  (ugens (gk (0 1))))
 
 (defskeleton fluffy
   (vars (gk skey) (nb na g g-0 g-1 text) (a b s name))
@@ -251,6 +264,7 @@
   (uniq-gen gk)
   (operation encryption-test (added-strand sp 1) (enc a na (ltk s a))
     (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (cat "req" s g (enc b nb (ltk s b))))
       (send (cat "resp" b (enc s g nb gk (ltk s b))))
@@ -263,7 +277,8 @@
   (realized)
   (shape)
   (maps ((0) ((a a) (b b) (s s) (nb nb) (na na) (gk gk) (g g))))
-  (origs))
+  (origs)
+  (ugens (gk (0 1))))
 
 (defskeleton fluffy
   (vars (gk skey) (nb g g-0 text) (b s name))
@@ -274,6 +289,7 @@
   (uniq-gen gk)
   (operation encryption-test (displaced 2 1 client 1)
     (enc a na (ltk s a)) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (cat "req" s g (enc b nb (ltk s b))))
       (send (cat "resp" b (enc s g nb gk (ltk s b))))
@@ -285,7 +301,8 @@
   (realized)
   (shape)
   (maps ((0) ((a b) (b b) (s s) (nb nb) (na nb) (gk gk) (g g))))
-  (origs))
+  (origs)
+  (ugens (gk (0 1))))
 
 (defskeleton fluffy
   (vars (gk skey) (nb na g g-0 g-1 text) (a b s name))
@@ -297,6 +314,7 @@
   (uniq-gen gk)
   (operation encryption-test (added-strand client 1)
     (enc a na (ltk s a)) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (cat "req" s g (enc b nb (ltk s b))))
       (send (cat "resp" b (enc s g nb gk (ltk s b))))
@@ -309,7 +327,8 @@
   (realized)
   (shape)
   (maps ((0) ((a a) (b b) (s s) (nb nb) (na na) (gk gk) (g g))))
-  (origs))
+  (origs)
+  (ugens (gk (0 1))))
 
 (comment "Nothing left to do")
 
@@ -360,6 +379,7 @@
   (uniq-gen gk)
   (operation encryption-test (added-strand keyserv 4)
     (enc s g na gk (ltk s a)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat "fetch" s g (enc a na (ltk s a))))
       (recv (cat "deliver" a (enc s g na gk (ltk s a)))))
@@ -372,7 +392,8 @@
   (realized)
   (shape)
   (maps ((0) ((a a) (s s) (na na) (gk gk) (g g))))
-  (origs (na (0 0))))
+  (origs (na (0 0)))
+  (ugens (gk (1 1))))
 
 (defskeleton fluffy
   (vars (gk skey) (na g text) (a s name))
@@ -384,6 +405,7 @@
   (uniq-gen gk)
   (operation encryption-test (added-strand keyserv 2)
     (enc s g na gk (ltk s a)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat "fetch" s g (enc a na (ltk s a))))
       (recv (cat "deliver" a (enc s g na gk (ltk s a)))))
@@ -394,7 +416,8 @@
   (realized)
   (shape)
   (maps ((0) ((a a) (s s) (na na) (gk gk) (g g))))
-  (origs (na (0 0))))
+  (origs (na (0 0)))
+  (ugens (gk (1 1))))
 
 (comment "Nothing left to do")
 
@@ -459,6 +482,7 @@
   (uniq-gen gk)
   (operation encryption-test (added-strand keyserv 2)
     (enc s g nb gk (ltk s b)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat "req" s g (enc b nb (ltk s b))))
       (recv (cat "resp" b (enc s g nb gk (ltk s b)))))
@@ -469,7 +493,8 @@
   (realized)
   (shape)
   (maps ((0) ((b b) (s s) (nb nb) (gk gk) (g g))))
-  (origs (nb (0 0))))
+  (origs (nb (0 0)))
+  (ugens (gk (1 1))))
 
 (comment "Nothing left to do")
 
@@ -524,6 +549,7 @@
   (label 17)
   (unrealized (0 0) (0 2))
   (origs)
+  (ugens (gk (0 1)))
   (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton fluffy-rule
@@ -535,6 +561,7 @@
   (uniq-gen gk)
   (operation encryption-test (added-strand sp 1) (enc b nb (ltk s b))
     (0 0))
+  (strand-map 0)
   (traces
     ((recv (cat "req" s g (enc b nb (ltk s b))))
       (send (cat "resp" b (enc s g nb gk (ltk s b))))
@@ -556,6 +583,7 @@
   (uniq-gen gk)
   (operation encryption-test (added-strand client 1)
     (enc a na (ltk s a)) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (cat "req" s g (enc b nb (ltk s b))))
       (send (cat "resp" b (enc s g nb gk (ltk s b))))
@@ -568,7 +596,8 @@
   (realized)
   (shape)
   (maps ((0) ((a a) (b b) (s s) (nb nb) (na na) (gk gk) (g g))))
-  (origs))
+  (origs)
+  (ugens (gk (0 1))))
 
 (comment "Nothing left to do")
 
@@ -633,6 +662,7 @@
   (uniq-gen gk)
   (operation encryption-test (added-strand keyserv 4)
     (enc s g na gk (ltk s a)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat "fetch" s g (enc a na (ltk s a))))
       (recv (cat "deliver" a (enc s g na gk (ltk s a)))))
@@ -645,6 +675,7 @@
   (realized)
   (shape)
   (maps ((0) ((a a) (s s) (na na) (gk gk) (g g))))
-  (origs (na (0 0))))
+  (origs (na (0 0)))
+  (ugens (gk (1 1))))
 
 (comment "Nothing left to do")
diff --git a/tst/fluffy_draft03_gske_shapes.tst b/tst/fluffy_draft03_gske_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/fluffy_draft03_gske_shapes.tst
@@ -0,0 +1,588 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald
+  "GSKE, part of Fluffy: Simplified Key Exchange for Constrained Environments draft-hardjono-ace-fluffy-03"
+  (comment
+    "Based on the Internet-Draft: https://www.ietf.org/archive/id/draft-hardjono-ace-fluffy-03.txt"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/fluffy_draft03_gske.scm")
+
+(defprotocol fluffy basic
+  (defrole sp
+    (vars (b s name) (nb g text) (gk skey))
+    (trace (send (cat "req" s g (enc b nb (ltk s b))))
+      (recv (cat "resp" b (enc s g nb gk (ltk s b))))))
+  (defrole keyserv
+    (vars (a b s name) (nb na g text) (gk skey))
+    (trace (recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))
+      (recv (cat "fetch" s g (enc a na (ltk s a))))
+      (send (cat "deliver" a (enc s g na gk (ltk s a)))))
+    (uniq-gen gk))
+  (defrole client
+    (vars (a s name) (na g text) (gk skey))
+    (trace (send (cat "fetch" s g (enc a na (ltk s a))))
+      (recv (cat "deliver" a (enc s g na gk (ltk s a))))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton fluffy
+  (vars (gk skey) (nb g text) (b s name))
+  (defstrand sp 2 (gk gk) (nb nb) (g g) (b b) (s s))
+  (non-orig (ltk s b))
+  (uniq-orig nb)
+  (comment "Service Principal's point-of-view")
+  (traces
+    ((send (cat "req" s g (enc b nb (ltk s b))))
+      (recv (cat "resp" b (enc s g nb gk (ltk s b))))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (nb (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton fluffy
+  (vars (gk skey) (nb g nb-0 text) (b s b-0 name))
+  (defstrand sp 2 (gk gk) (nb nb) (g g) (b b) (s s))
+  (defstrand keyserv 4 (gk gk) (nb nb-0) (na nb) (g g) (a b) (b b-0)
+    (s s))
+  (precedes ((0 0) (1 2)) ((1 3) (0 1)))
+  (non-orig (ltk s b))
+  (uniq-orig nb)
+  (uniq-gen gk)
+  (operation encryption-test (added-strand keyserv 4)
+    (enc s g nb gk (ltk s b)) (0 1))
+  (traces
+    ((send (cat "req" s g (enc b nb (ltk s b))))
+      (recv (cat "resp" b (enc s g nb gk (ltk s b)))))
+    ((recv (cat "req" s g (enc b-0 nb-0 (ltk s b-0))))
+      (send (cat "resp" b-0 (enc s g nb-0 gk (ltk s b-0))))
+      (recv (cat "fetch" s g (enc b nb (ltk s b))))
+      (send (cat "deliver" b (enc s g nb gk (ltk s b))))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (s s) (nb nb) (gk gk) (g g))))
+  (origs (nb (0 0))))
+
+(defskeleton fluffy
+  (vars (gk skey) (nb g text) (b s name))
+  (defstrand sp 2 (gk gk) (nb nb) (g g) (b b) (s s))
+  (defstrand keyserv 2 (gk gk) (nb nb) (g g) (b b) (s s))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (ltk s b))
+  (uniq-orig nb)
+  (uniq-gen gk)
+  (operation encryption-test (added-strand keyserv 2)
+    (enc s g nb gk (ltk s b)) (0 1))
+  (traces
+    ((send (cat "req" s g (enc b nb (ltk s b))))
+      (recv (cat "resp" b (enc s g nb gk (ltk s b)))))
+    ((recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (s s) (nb nb) (gk gk) (g g))))
+  (origs (nb (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol fluffy basic
+  (defrole sp
+    (vars (b s name) (nb g text) (gk skey))
+    (trace (send (cat "req" s g (enc b nb (ltk s b))))
+      (recv (cat "resp" b (enc s g nb gk (ltk s b))))))
+  (defrole keyserv
+    (vars (a b s name) (nb na g text) (gk skey))
+    (trace (recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))
+      (recv (cat "fetch" s g (enc a na (ltk s a))))
+      (send (cat "deliver" a (enc s g na gk (ltk s a)))))
+    (uniq-gen gk))
+  (defrole client
+    (vars (a s name) (na g text) (gk skey))
+    (trace (send (cat "fetch" s g (enc a na (ltk s a))))
+      (recv (cat "deliver" a (enc s g na gk (ltk s a))))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton fluffy
+  (vars (gk skey) (nb na g text) (a b s name))
+  (defstrand keyserv 4 (gk gk) (nb nb) (na na) (g g) (a a) (b b) (s s))
+  (non-orig (ltk s a) (ltk s b))
+  (uniq-gen gk)
+  (comment "SKDC's point-of-view")
+  (traces
+    ((recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))
+      (recv (cat "fetch" s g (enc a na (ltk s a))))
+      (send (cat "deliver" a (enc s g na gk (ltk s a))))))
+  (label 3)
+  (unrealized (0 0) (0 2))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton fluffy
+  (vars (gk skey) (nb g g-0 text) (b s name))
+  (defstrand keyserv 4 (gk gk) (nb nb) (na nb) (g g) (a b) (b b) (s s))
+  (defstrand sp 1 (nb nb) (g g-0) (b b) (s s))
+  (precedes ((1 0) (0 0)))
+  (non-orig (ltk s b))
+  (uniq-gen gk)
+  (operation encryption-test (displaced 2 1 sp 1) (enc a na (ltk s a))
+    (0 2))
+  (traces
+    ((recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))
+      (recv (cat "fetch" s g (enc b nb (ltk s b))))
+      (send (cat "deliver" b (enc s g nb gk (ltk s b)))))
+    ((send (cat "req" s g-0 (enc b nb (ltk s b))))))
+  (label 6)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((a b) (b b) (s s) (nb nb) (na nb) (gk gk) (g g))))
+  (origs))
+
+(defskeleton fluffy
+  (vars (gk skey) (nb na g g-0 g-1 text) (a b s name))
+  (defstrand keyserv 4 (gk gk) (nb nb) (na na) (g g) (a a) (b b) (s s))
+  (defstrand sp 1 (nb nb) (g g-0) (b b) (s s))
+  (defstrand sp 1 (nb na) (g g-1) (b a) (s s))
+  (precedes ((1 0) (0 0)) ((2 0) (0 2)))
+  (non-orig (ltk s a) (ltk s b))
+  (uniq-gen gk)
+  (operation encryption-test (added-strand sp 1) (enc a na (ltk s a))
+    (0 2))
+  (traces
+    ((recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))
+      (recv (cat "fetch" s g (enc a na (ltk s a))))
+      (send (cat "deliver" a (enc s g na gk (ltk s a)))))
+    ((send (cat "req" s g-0 (enc b nb (ltk s b)))))
+    ((send (cat "req" s g-1 (enc a na (ltk s a))))))
+  (label 7)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (nb nb) (na na) (gk gk) (g g))))
+  (origs))
+
+(defskeleton fluffy
+  (vars (gk skey) (nb na g g-0 g-1 text) (a b s name))
+  (defstrand keyserv 4 (gk gk) (nb nb) (na na) (g g) (a a) (b b) (s s))
+  (defstrand sp 1 (nb nb) (g g-0) (b b) (s s))
+  (defstrand client 1 (na na) (g g-1) (a a) (s s))
+  (precedes ((1 0) (0 0)) ((2 0) (0 2)))
+  (non-orig (ltk s a) (ltk s b))
+  (uniq-gen gk)
+  (operation encryption-test (added-strand client 1)
+    (enc a na (ltk s a)) (0 2))
+  (traces
+    ((recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))
+      (recv (cat "fetch" s g (enc a na (ltk s a))))
+      (send (cat "deliver" a (enc s g na gk (ltk s a)))))
+    ((send (cat "req" s g-0 (enc b nb (ltk s b)))))
+    ((send (cat "fetch" s g-1 (enc a na (ltk s a))))))
+  (label 8)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (nb nb) (na na) (gk gk) (g g))))
+  (origs))
+
+(defskeleton fluffy
+  (vars (gk skey) (nb na g g-0 g-1 text) (a b s name))
+  (defstrand keyserv 4 (gk gk) (nb nb) (na na) (g g) (a a) (b b) (s s))
+  (defstrand client 1 (na nb) (g g-0) (a b) (s s))
+  (defstrand sp 1 (nb na) (g g-1) (b a) (s s))
+  (precedes ((1 0) (0 0)) ((2 0) (0 2)))
+  (non-orig (ltk s a) (ltk s b))
+  (uniq-gen gk)
+  (operation encryption-test (added-strand sp 1) (enc a na (ltk s a))
+    (0 2))
+  (traces
+    ((recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))
+      (recv (cat "fetch" s g (enc a na (ltk s a))))
+      (send (cat "deliver" a (enc s g na gk (ltk s a)))))
+    ((send (cat "fetch" s g-0 (enc b nb (ltk s b)))))
+    ((send (cat "req" s g-1 (enc a na (ltk s a))))))
+  (label 9)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (nb nb) (na na) (gk gk) (g g))))
+  (origs))
+
+(defskeleton fluffy
+  (vars (gk skey) (nb g g-0 text) (b s name))
+  (defstrand keyserv 4 (gk gk) (nb nb) (na nb) (g g) (a b) (b b) (s s))
+  (defstrand client 1 (na nb) (g g-0) (a b) (s s))
+  (precedes ((1 0) (0 0)))
+  (non-orig (ltk s b))
+  (uniq-gen gk)
+  (operation encryption-test (displaced 2 1 client 1)
+    (enc a na (ltk s a)) (0 2))
+  (traces
+    ((recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))
+      (recv (cat "fetch" s g (enc b nb (ltk s b))))
+      (send (cat "deliver" b (enc s g nb gk (ltk s b)))))
+    ((send (cat "fetch" s g-0 (enc b nb (ltk s b))))))
+  (label 10)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((a b) (b b) (s s) (nb nb) (na nb) (gk gk) (g g))))
+  (origs))
+
+(defskeleton fluffy
+  (vars (gk skey) (nb na g g-0 g-1 text) (a b s name))
+  (defstrand keyserv 4 (gk gk) (nb nb) (na na) (g g) (a a) (b b) (s s))
+  (defstrand client 1 (na nb) (g g-0) (a b) (s s))
+  (defstrand client 1 (na na) (g g-1) (a a) (s s))
+  (precedes ((1 0) (0 0)) ((2 0) (0 2)))
+  (non-orig (ltk s a) (ltk s b))
+  (uniq-gen gk)
+  (operation encryption-test (added-strand client 1)
+    (enc a na (ltk s a)) (0 2))
+  (traces
+    ((recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))
+      (recv (cat "fetch" s g (enc a na (ltk s a))))
+      (send (cat "deliver" a (enc s g na gk (ltk s a)))))
+    ((send (cat "fetch" s g-0 (enc b nb (ltk s b)))))
+    ((send (cat "fetch" s g-1 (enc a na (ltk s a))))))
+  (label 11)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (nb nb) (na na) (gk gk) (g g))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol fluffy basic
+  (defrole sp
+    (vars (b s name) (nb g text) (gk skey))
+    (trace (send (cat "req" s g (enc b nb (ltk s b))))
+      (recv (cat "resp" b (enc s g nb gk (ltk s b))))))
+  (defrole keyserv
+    (vars (a b s name) (nb na g text) (gk skey))
+    (trace (recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))
+      (recv (cat "fetch" s g (enc a na (ltk s a))))
+      (send (cat "deliver" a (enc s g na gk (ltk s a)))))
+    (uniq-gen gk))
+  (defrole client
+    (vars (a s name) (na g text) (gk skey))
+    (trace (send (cat "fetch" s g (enc a na (ltk s a))))
+      (recv (cat "deliver" a (enc s g na gk (ltk s a))))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton fluffy
+  (vars (gk skey) (na g text) (a s name))
+  (defstrand client 2 (gk gk) (na na) (g g) (a a) (s s))
+  (non-orig (ltk s a))
+  (uniq-orig na)
+  (comment "Clients's point-of-view")
+  (traces
+    ((send (cat "fetch" s g (enc a na (ltk s a))))
+      (recv (cat "deliver" a (enc s g na gk (ltk s a))))))
+  (label 12)
+  (unrealized (0 1))
+  (origs (na (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton fluffy
+  (vars (gk skey) (na g nb text) (a s b name))
+  (defstrand client 2 (gk gk) (na na) (g g) (a a) (s s))
+  (defstrand keyserv 4 (gk gk) (nb nb) (na na) (g g) (a a) (b b) (s s))
+  (precedes ((0 0) (1 2)) ((1 3) (0 1)))
+  (non-orig (ltk s a))
+  (uniq-orig na)
+  (uniq-gen gk)
+  (operation encryption-test (added-strand keyserv 4)
+    (enc s g na gk (ltk s a)) (0 1))
+  (traces
+    ((send (cat "fetch" s g (enc a na (ltk s a))))
+      (recv (cat "deliver" a (enc s g na gk (ltk s a)))))
+    ((recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))
+      (recv (cat "fetch" s g (enc a na (ltk s a))))
+      (send (cat "deliver" a (enc s g na gk (ltk s a))))))
+  (label 13)
+  (parent 12)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (s s) (na na) (gk gk) (g g))))
+  (origs (na (0 0))))
+
+(defskeleton fluffy
+  (vars (gk skey) (na g text) (a s name))
+  (defstrand client 2 (gk gk) (na na) (g g) (a a) (s s))
+  (defstrand keyserv 2 (gk gk) (nb na) (g g) (b a) (s s))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (ltk s a))
+  (uniq-orig na)
+  (uniq-gen gk)
+  (operation encryption-test (added-strand keyserv 2)
+    (enc s g na gk (ltk s a)) (0 1))
+  (traces
+    ((send (cat "fetch" s g (enc a na (ltk s a))))
+      (recv (cat "deliver" a (enc s g na gk (ltk s a)))))
+    ((recv (cat "req" s g (enc a na (ltk s a))))
+      (send (cat "resp" a (enc s g na gk (ltk s a))))))
+  (label 14)
+  (parent 12)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (s s) (na na) (gk gk) (g g))))
+  (origs (na (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol fluffy-rule basic
+  (defrole sp
+    (vars (b s name) (nb g text) (gk skey))
+    (trace (send (cat "req" s g (enc b nb (ltk s b))))
+      (recv (cat "resp" b (enc s g nb gk (ltk s b))))))
+  (defrole keyserv
+    (vars (a b s name) (nb na g text) (gk skey))
+    (trace (recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))
+      (recv (cat "fetch" s g (enc a na (ltk s a))))
+      (send (cat "deliver" a (enc s g na gk (ltk s a)))))
+    (uniq-gen gk))
+  (defrole client
+    (vars (a s name) (na g text) (gk skey))
+    (trace (send (cat "fetch" s g (enc a na (ltk s a))))
+      (recv (cat "deliver" a (enc s g na gk (ltk s a))))))
+  (defrule client-no-request
+    (forall ((a s name) (y z strd))
+      (implies
+        (and (p "client" z 1) (p "client" "s" z s) (p "client" "a" z a)
+          (p "keyserv" y 1) (p "keyserv" "s" y s) (p "keyserv" "b" y a))
+        (false))))
+  (defrule sp-no-fetch
+    (forall ((b s name) (y z strd))
+      (implies
+        (and (p "sp" z 1) (p "sp" "s" z s) (p "sp" "b" z b)
+          (p "keyserv" y 3) (p "keyserv" "s" y s) (p "keyserv" "a" y b))
+        (false))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton fluffy-rule
+  (vars (gk skey) (nb g text) (b s name))
+  (defstrand sp 2 (gk gk) (nb nb) (g g) (b b) (s s))
+  (non-orig (ltk s b))
+  (uniq-orig nb)
+  (comment "Service Principal's point-of-view")
+  (traces
+    ((send (cat "req" s g (enc b nb (ltk s b))))
+      (recv (cat "resp" b (enc s g nb gk (ltk s b))))))
+  (label 15)
+  (unrealized (0 1))
+  (origs (nb (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton fluffy-rule
+  (vars (gk skey) (nb g text) (b s name))
+  (defstrand sp 2 (gk gk) (nb nb) (g g) (b b) (s s))
+  (defstrand keyserv 2 (gk gk) (nb nb) (g g) (b b) (s s))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (ltk s b))
+  (uniq-orig nb)
+  (uniq-gen gk)
+  (operation encryption-test (added-strand keyserv 2)
+    (enc s g nb gk (ltk s b)) (0 1))
+  (traces
+    ((send (cat "req" s g (enc b nb (ltk s b))))
+      (recv (cat "resp" b (enc s g nb gk (ltk s b)))))
+    ((recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))))
+  (label 16)
+  (parent 15)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (s s) (nb nb) (gk gk) (g g))))
+  (origs (nb (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol fluffy-rule basic
+  (defrole sp
+    (vars (b s name) (nb g text) (gk skey))
+    (trace (send (cat "req" s g (enc b nb (ltk s b))))
+      (recv (cat "resp" b (enc s g nb gk (ltk s b))))))
+  (defrole keyserv
+    (vars (a b s name) (nb na g text) (gk skey))
+    (trace (recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))
+      (recv (cat "fetch" s g (enc a na (ltk s a))))
+      (send (cat "deliver" a (enc s g na gk (ltk s a)))))
+    (uniq-gen gk))
+  (defrole client
+    (vars (a s name) (na g text) (gk skey))
+    (trace (send (cat "fetch" s g (enc a na (ltk s a))))
+      (recv (cat "deliver" a (enc s g na gk (ltk s a))))))
+  (defrule client-no-request
+    (forall ((a s name) (y z strd))
+      (implies
+        (and (p "client" z 1) (p "client" "s" z s) (p "client" "a" z a)
+          (p "keyserv" y 1) (p "keyserv" "s" y s) (p "keyserv" "b" y a))
+        (false))))
+  (defrule sp-no-fetch
+    (forall ((b s name) (y z strd))
+      (implies
+        (and (p "sp" z 1) (p "sp" "s" z s) (p "sp" "b" z b)
+          (p "keyserv" y 3) (p "keyserv" "s" y s) (p "keyserv" "a" y b))
+        (false))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton fluffy-rule
+  (vars (gk skey) (nb na g text) (a b s name))
+  (defstrand keyserv 4 (gk gk) (nb nb) (na na) (g g) (a a) (b b) (s s))
+  (non-orig (ltk s a) (ltk s b))
+  (uniq-gen gk)
+  (comment "SKDC's point-of-view")
+  (traces
+    ((recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))
+      (recv (cat "fetch" s g (enc a na (ltk s a))))
+      (send (cat "deliver" a (enc s g na gk (ltk s a))))))
+  (label 17)
+  (unrealized (0 0) (0 2))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton fluffy-rule
+  (vars (gk skey) (nb na g g-0 g-1 text) (a b s name))
+  (defstrand keyserv 4 (gk gk) (nb nb) (na na) (g g) (a a) (b b) (s s))
+  (defstrand sp 1 (nb nb) (g g-0) (b b) (s s))
+  (defstrand client 1 (na na) (g g-1) (a a) (s s))
+  (precedes ((1 0) (0 0)) ((2 0) (0 2)))
+  (non-orig (ltk s a) (ltk s b))
+  (uniq-gen gk)
+  (operation encryption-test (added-strand client 1)
+    (enc a na (ltk s a)) (0 2))
+  (traces
+    ((recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))
+      (recv (cat "fetch" s g (enc a na (ltk s a))))
+      (send (cat "deliver" a (enc s g na gk (ltk s a)))))
+    ((send (cat "req" s g-0 (enc b nb (ltk s b)))))
+    ((send (cat "fetch" s g-1 (enc a na (ltk s a))))))
+  (label 19)
+  (parent 17)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (nb nb) (na na) (gk gk) (g g))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol fluffy-rule basic
+  (defrole sp
+    (vars (b s name) (nb g text) (gk skey))
+    (trace (send (cat "req" s g (enc b nb (ltk s b))))
+      (recv (cat "resp" b (enc s g nb gk (ltk s b))))))
+  (defrole keyserv
+    (vars (a b s name) (nb na g text) (gk skey))
+    (trace (recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))
+      (recv (cat "fetch" s g (enc a na (ltk s a))))
+      (send (cat "deliver" a (enc s g na gk (ltk s a)))))
+    (uniq-gen gk))
+  (defrole client
+    (vars (a s name) (na g text) (gk skey))
+    (trace (send (cat "fetch" s g (enc a na (ltk s a))))
+      (recv (cat "deliver" a (enc s g na gk (ltk s a))))))
+  (defrule client-no-request
+    (forall ((a s name) (y z strd))
+      (implies
+        (and (p "client" z 1) (p "client" "s" z s) (p "client" "a" z a)
+          (p "keyserv" y 1) (p "keyserv" "s" y s) (p "keyserv" "b" y a))
+        (false))))
+  (defrule sp-no-fetch
+    (forall ((b s name) (y z strd))
+      (implies
+        (and (p "sp" z 1) (p "sp" "s" z s) (p "sp" "b" z b)
+          (p "keyserv" y 3) (p "keyserv" "s" y s) (p "keyserv" "a" y b))
+        (false))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton fluffy-rule
+  (vars (gk skey) (na g text) (a s name))
+  (defstrand client 2 (gk gk) (na na) (g g) (a a) (s s))
+  (non-orig (ltk s a))
+  (uniq-orig na)
+  (comment "Clients's point-of-view")
+  (traces
+    ((send (cat "fetch" s g (enc a na (ltk s a))))
+      (recv (cat "deliver" a (enc s g na gk (ltk s a))))))
+  (label 20)
+  (unrealized (0 1))
+  (origs (na (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton fluffy-rule
+  (vars (gk skey) (na g nb text) (a s b name))
+  (defstrand client 2 (gk gk) (na na) (g g) (a a) (s s))
+  (defstrand keyserv 4 (gk gk) (nb nb) (na na) (g g) (a a) (b b) (s s))
+  (precedes ((0 0) (1 2)) ((1 3) (0 1)))
+  (non-orig (ltk s a))
+  (uniq-orig na)
+  (uniq-gen gk)
+  (operation encryption-test (added-strand keyserv 4)
+    (enc s g na gk (ltk s a)) (0 1))
+  (traces
+    ((send (cat "fetch" s g (enc a na (ltk s a))))
+      (recv (cat "deliver" a (enc s g na gk (ltk s a)))))
+    ((recv (cat "req" s g (enc b nb (ltk s b))))
+      (send (cat "resp" b (enc s g nb gk (ltk s b))))
+      (recv (cat "fetch" s g (enc a na (ltk s a))))
+      (send (cat "deliver" a (enc s g na gk (ltk s a))))))
+  (label 21)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (s s) (na na) (gk gk) (g g))))
+  (origs (na (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/fragile_pruning.tst b/tst/fragile_pruning.tst
--- a/tst/fragile_pruning.tst
+++ b/tst/fragile_pruning.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/fragile_pruning.scm")
 
 (defprotocol fragile_pruning basic
@@ -45,6 +45,7 @@
   (non-orig (invk k))
   (uniq-orig n n1 n2 n3 new)
   (operation nonce-test (added-strand adder 2) n (0 1) (enc n k))
+  (strand-map 0)
   (traces
     ((send (enc n k)) (recv (enc n n1 k)) (recv (enc n n2 k))
       (recv (enc n n3 k)) (send (enc n n1 n2 n3 k))
@@ -64,6 +65,7 @@
   (uniq-orig n n2 n3 new)
   (operation nonce-test (contracted (n1 new)) n (0 1) (enc n k)
     (enc n new k))
+  (strand-map 0 1)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n n2 k))
       (recv (enc n n3 k)) (send (enc n new n2 n3 k))
@@ -83,6 +85,7 @@
   (uniq-orig n n3 new)
   (operation nonce-test (contracted (n2 new)) n (0 2) (enc n k)
     (enc n new k))
+  (strand-map 0 1)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n n3 k)) (send (enc n new new n3 k))
@@ -103,6 +106,7 @@
   (uniq-orig n n2 n3 new new-0)
   (operation nonce-test (added-strand adder 2) n (0 2) (enc n k)
     (enc n new k))
+  (strand-map 0 1)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n n2 k))
       (recv (enc n n3 k)) (send (enc n new n2 n3 k))
@@ -123,6 +127,7 @@
   (uniq-orig n new)
   (operation nonce-test (contracted (n3 new)) n (0 3) (enc n k)
     (enc n new k))
+  (strand-map 0 1)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -143,6 +148,7 @@
   (uniq-orig n n3 new new-0)
   (operation nonce-test (added-strand adder 2) n (0 3) (enc n k)
     (enc n new k))
+  (strand-map 0 1)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n n3 k)) (send (enc n new new n3 k))
@@ -164,6 +170,7 @@
   (uniq-orig n n3 new new-0)
   (operation nonce-test (contracted (n2 new)) n (0 2) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n n3 k)) (send (enc n new new n3 k))
@@ -185,6 +192,7 @@
   (uniq-orig n n3 new new-0)
   (operation nonce-test (contracted (n2 new-0)) n (0 2) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n n3 k)) (send (enc n new new-0 n3 k))
@@ -206,6 +214,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (added-strand adder 2) n (0 5) (enc n k)
     (enc n new k) (enc n new new new k))
+  (strand-map 0 1)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -227,6 +236,7 @@
   (uniq-orig n new)
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new new new k))
+  (strand-map 0 1)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -248,6 +258,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (contracted (n3 new)) n (0 3) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -269,6 +280,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (contracted (n3 new-0)) n (0 3) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -290,6 +302,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (contracted (n3 new)) n (0 3) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -311,6 +324,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (contracted (n3 new-0)) n (0 3) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -334,6 +348,7 @@
   (uniq-orig n n3 new new-0 new-1)
   (operation nonce-test (added-strand adder 2) n (0 3) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n n3 k)) (send (enc n new new n3 k))
@@ -356,6 +371,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (contracted (n3 new)) n (0 3) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -377,6 +393,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (contracted (n3 new-0)) n (0 3) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -400,6 +417,7 @@
   (uniq-orig n n3 new new-0 new-1)
   (operation nonce-test (added-strand adder 2) n (0 3) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n n3 k)) (send (enc n new new-0 n3 k))
@@ -424,6 +442,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new new new k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -434,6 +453,10 @@
   (label 19)
   (parent 9)
   (seen 21)
+  (seen-ops
+    (21
+      (operation nonce-test (displaced 4 2 adder 2) n (3 0) (enc n k)
+        (enc n new k)) (strand-map 0 1 3 2)))
   (unrealized (3 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -447,6 +470,7 @@
   (uniq-orig n new)
   (operation nonce-test (displaced 3 0 init 5) n (2 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -472,6 +496,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (added-strand adder 2) n (2 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -496,6 +521,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand adder 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new new new k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -520,6 +546,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new new new k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -544,6 +571,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand adder 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new new new-0 k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -568,6 +596,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new new new-0 k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -592,6 +621,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand adder 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new new new k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -616,6 +646,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new new new k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -640,6 +671,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand adder 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new new new-0 k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -664,6 +696,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new new new-0 k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -688,6 +721,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (contracted (n3 new)) n (0 3) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -712,6 +746,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (contracted (n3 new-0)) n (0 3) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -736,6 +771,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (contracted (n3 new-1)) n (0 3) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-1 k)) (send (enc n new new new-1 k))
@@ -760,6 +796,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand adder 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new new-0 new k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -784,6 +821,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new new-0 new k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -808,6 +846,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand adder 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new new-0 new-0 k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -832,6 +871,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new new-0 new-0 k))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -857,6 +897,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (contracted (n3 new)) n (0 3) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -881,6 +922,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (contracted (n3 new-0)) n (0 3) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -905,6 +947,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (contracted (n3 new-1)) n (0 3) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-1 k)) (send (enc n new new-0 new-1 k))
@@ -929,6 +972,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (displaced 4 0 init 5) n (3 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -939,6 +983,8 @@
   (label 40)
   (parent 19)
   (seen 20)
+  (seen-ops
+    (20 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -955,6 +1001,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand adder 2) n (3 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -980,6 +1027,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (displaced 4 0 init 5) n (2 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -990,6 +1038,8 @@
   (label 42)
   (parent 21)
   (seen 20)
+  (seen-ops
+    (20 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1006,6 +1056,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new new new k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -1017,6 +1068,10 @@
   (label 43)
   (parent 22)
   (seen 45)
+  (seen-ops
+    (45
+      (operation nonce-test (displaced 5 3 adder 2) n (4 0) (enc n k)
+        (enc n new k)) (strand-map 0 1 2 4 3)))
   (unrealized (4 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -1032,6 +1087,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (displaced 4 2 adder 2) n (3 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -1057,6 +1113,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand adder 2) n (3 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -1068,6 +1125,10 @@
   (label 45)
   (parent 23)
   (seen 77)
+  (seen-ops
+    (77
+      (operation nonce-test (displaced 5 2 adder 2) n (3 0) (enc n k)
+        (enc n new k) (enc n new-1 k)) (strand-map 0 1 2 3 4)))
   (unrealized (3 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1086,6 +1147,7 @@
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k)
     (enc n new new new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -1097,6 +1159,10 @@
   (label 46)
   (parent 24)
   (seen 48)
+  (seen-ops
+    (48
+      (operation nonce-test (displaced 5 3 adder 2) n (4 0) (enc n k)
+        (enc n new k) (enc n new-0 k)) (strand-map 0 1 2 4 3)))
   (unrealized (4 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -1112,6 +1178,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (displaced 4 0 init 5) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -1140,6 +1207,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand adder 2) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -1166,6 +1234,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new new new k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -1177,6 +1246,10 @@
   (label 49)
   (parent 26)
   (seen 51)
+  (seen-ops
+    (51
+      (operation nonce-test (displaced 5 3 adder 2) n (4 0) (enc n k)
+        (enc n new k)) (strand-map 0 1 2 4 3)))
   (unrealized (4 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -1192,6 +1265,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (displaced 4 2 adder 2) n (3 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -1217,6 +1291,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand adder 2) n (3 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -1228,6 +1303,10 @@
   (label 51)
   (parent 27)
   (seen 84)
+  (seen-ops
+    (84
+      (operation nonce-test (displaced 5 2 adder 2) n (3 0) (enc n k)
+        (enc n new k) (enc n new-1 k)) (strand-map 0 1 2 3 4)))
   (unrealized (3 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1246,6 +1325,7 @@
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k)
     (enc n new new new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -1257,6 +1337,10 @@
   (label 52)
   (parent 28)
   (seen 54)
+  (seen-ops
+    (54
+      (operation nonce-test (displaced 5 3 adder 2) n (4 0) (enc n k)
+        (enc n new k) (enc n new-0 k)) (strand-map 0 1 2 4 3)))
   (unrealized (4 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -1272,6 +1356,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (displaced 4 0 init 5) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -1282,6 +1367,9 @@
   (label 53)
   (parent 29)
   (seen 47)
+  (seen-ops
+    (47 (operation generalization weakened ((2 1) (0 2)))
+      (strand-map 0 1 2 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1299,6 +1387,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand adder 2) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -1325,6 +1414,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new new new k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -1351,6 +1441,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new new new k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -1378,6 +1469,7 @@
   (operation nonce-test (added-strand adder 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k)
     (enc n new new new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -1406,6 +1498,7 @@
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k)
     (enc n new new new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -1433,6 +1526,7 @@
   (operation nonce-test (added-strand adder 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k)
     (enc n new new new-1 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-1 k)) (send (enc n new new new-1 k))
@@ -1461,6 +1555,7 @@
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k)
     (enc n new new new-1 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-1 k)) (send (enc n new new new-1 k))
@@ -1489,6 +1584,7 @@
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k)
     (enc n new new-0 new k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -1500,6 +1596,10 @@
   (label 61)
   (parent 33)
   (seen 63)
+  (seen-ops
+    (63
+      (operation nonce-test (displaced 5 3 adder 2) n (4 0) (enc n k)
+        (enc n new k) (enc n new-0 k)) (strand-map 0 1 2 4 3)))
   (unrealized (4 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -1515,6 +1615,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (displaced 4 0 init 5) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -1543,6 +1644,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand adder 2) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -1571,6 +1673,7 @@
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k)
     (enc n new new-0 new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -1583,6 +1686,10 @@
   (label 64)
   (parent 35)
   (seen 66)
+  (seen-ops
+    (66
+      (operation nonce-test (displaced 5 3 adder 2) n (4 0) (enc n k)
+        (enc n new k) (enc n new-0 k)) (strand-map 0 1 2 4 3)))
   (unrealized (4 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -1598,6 +1705,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (displaced 4 0 init 5) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -1627,6 +1735,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand adder 2) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -1655,6 +1764,7 @@
   (operation nonce-test (added-strand adder 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k)
     (enc n new new-0 new k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -1683,6 +1793,7 @@
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k)
     (enc n new new-0 new k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -1710,6 +1821,7 @@
   (operation nonce-test (added-strand adder 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k)
     (enc n new new-0 new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -1738,6 +1850,7 @@
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k)
     (enc n new new-0 new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -1766,6 +1879,7 @@
   (operation nonce-test (added-strand adder 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k)
     (enc n new new-0 new-1 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-1 k)) (send (enc n new new-0 new-1 k))
@@ -1794,6 +1908,7 @@
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k)
     (enc n new new-0 new-1 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-1 k)) (send (enc n new new-0 new-1 k))
@@ -1821,6 +1936,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (3 0) (enc n k)
     (enc n new k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -1832,6 +1948,8 @@
   (label 73)
   (parent 41)
   (seen 42)
+  (seen-ops
+    (42 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1849,6 +1967,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 2 adder 2) n (4 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -1860,6 +1979,10 @@
   (label 74)
   (parent 43)
   (seen 77)
+  (seen-ops
+    (77
+      (operation nonce-test (displaced 5 3 adder 2) n (4 0) (enc n k)
+        (enc n new k) (enc n new-0 k)) (strand-map 0 1 2 4 3)))
   (unrealized (4 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -1878,6 +2001,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -1890,6 +2014,10 @@
   (label 75)
   (parent 43)
   (seen 114)
+  (seen-ops
+    (114
+      (operation nonce-test (displaced 6 2 adder 2) n (4 0) (enc n k)
+        (enc n new k) (enc n new-2 k)) (strand-map 0 1 2 3 4 5)))
   (unrealized (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1905,6 +2033,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (displaced 4 0 init 5) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -1915,6 +2044,8 @@
   (label 76)
   (parent 44)
   (seen 20)
+  (seen-ops
+    (20 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1932,6 +2063,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand adder 2) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -1958,6 +2090,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -1969,6 +2102,8 @@
   (label 78)
   (parent 46)
   (seen 47)
+  (seen-ops
+    (47 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1987,6 +2122,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -2014,6 +2150,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -2025,6 +2162,8 @@
   (label 80)
   (parent 48)
   (seen 47)
+  (seen-ops
+    (47 (operation generalization deleted (4 0)) (strand-map 0 1 2 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -2042,6 +2181,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 2 adder 2) n (4 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -2053,6 +2193,10 @@
   (label 81)
   (parent 49)
   (seen 84)
+  (seen-ops
+    (84
+      (operation nonce-test (displaced 5 3 adder 2) n (4 0) (enc n k)
+        (enc n new k) (enc n new-0 k)) (strand-map 0 1 2 4 3)))
   (unrealized (4 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -2071,6 +2215,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -2083,6 +2228,10 @@
   (label 82)
   (parent 49)
   (seen 118)
+  (seen-ops
+    (118
+      (operation nonce-test (displaced 6 2 adder 2) n (4 0) (enc n k)
+        (enc n new k) (enc n new-2 k)) (strand-map 0 1 2 3 4 5)))
   (unrealized (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -2098,6 +2247,7 @@
   (uniq-orig n new new-0)
   (operation nonce-test (displaced 4 0 init 5) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -2108,6 +2258,8 @@
   (label 83)
   (parent 50)
   (seen 20)
+  (seen-ops
+    (20 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -2125,6 +2277,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (added-strand adder 2) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -2151,6 +2304,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -2162,6 +2316,8 @@
   (label 85)
   (parent 52)
   (seen 53)
+  (seen-ops
+    (53 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -2180,6 +2336,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -2207,6 +2364,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -2218,6 +2376,8 @@
   (label 87)
   (parent 54)
   (seen 53)
+  (seen-ops
+    (53 (operation generalization deleted (4 0)) (strand-map 0 1 2 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -2237,6 +2397,7 @@
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-2 k)
     (enc n new new new k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -2249,6 +2410,10 @@
   (label 88)
   (parent 55)
   (seen 91)
+  (seen-ops
+    (91
+      (operation nonce-test (displaced 6 4 adder 2) n (5 0) (enc n k)
+        (enc n new k)) (strand-map 0 1 2 3 5 4)))
   (unrealized (5 0))
   (comment "4 in cohort - 3 not yet seen"))
 
@@ -2266,6 +2431,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 2 adder 2) n (4 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -2293,6 +2459,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 3 adder 2) n (4 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -2304,6 +2471,10 @@
   (label 90)
   (parent 56)
   (seen 124)
+  (seen-ops
+    (124
+      (operation nonce-test (displaced 5 2 adder 2) n (4 0) (enc n k)
+        (enc n new k) (enc n new-1 k)) (strand-map 0 1 2 3 4)))
   (unrealized (4 0))
   (comment "2 in cohort - 1 not yet seen"))
 
@@ -2322,6 +2493,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -2334,6 +2506,13 @@
   (label 91)
   (parent 56)
   (seen 125 126)
+  (seen-ops
+    (125
+      (operation nonce-test (displaced 6 2 adder 2) n (4 0) (enc n k)
+        (enc n new k) (enc n new-2 k)) (strand-map 0 1 2 3 4 5))
+    (126
+      (operation nonce-test (displaced 6 3 adder 2) n (4 0) (enc n k)
+        (enc n new k) (enc n new-2 k)) (strand-map 0 1 2 3 4 5)))
   (unrealized (4 0))
   (comment "2 in cohort - 0 not yet seen"))
 
@@ -2353,6 +2532,7 @@
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-2 k)
     (enc n new new new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -2365,6 +2545,10 @@
   (label 92)
   (parent 57)
   (seen 94)
+  (seen-ops
+    (94
+      (operation nonce-test (displaced 6 4 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-0 k)) (strand-map 0 1 2 3 5 4)))
   (unrealized (5 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -2382,6 +2566,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 3 adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -2410,6 +2595,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -2422,6 +2608,11 @@
   (label 94)
   (parent 58)
   (seen 130)
+  (seen-ops
+    (130
+      (operation nonce-test (displaced 6 3 adder 2) n (4 0) (enc n k)
+        (enc n new k) (enc n new-0 k) (enc n new-2 k))
+      (strand-map 0 1 2 3 4 5)))
   (unrealized (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -2441,6 +2632,7 @@
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-2 k)
     (enc n new new new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-1 k)) (send (enc n new new new-1 k))
@@ -2453,6 +2645,10 @@
   (label 95)
   (parent 59)
   (seen 97)
+  (seen-ops
+    (97
+      (operation nonce-test (displaced 6 4 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-1 k)) (strand-map 0 1 2 3 5 4)))
   (unrealized (5 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -2470,6 +2666,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 2 adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-1 k)) (send (enc n new new new-1 k))
@@ -2498,6 +2695,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-1 k)) (send (enc n new new new-1 k))
@@ -2510,6 +2708,11 @@
   (label 97)
   (parent 60)
   (seen 134)
+  (seen-ops
+    (134
+      (operation nonce-test (displaced 6 2 adder 2) n (4 0) (enc n k)
+        (enc n new k) (enc n new-1 k) (enc n new-2 k))
+      (strand-map 0 1 2 3 4 5)))
   (unrealized (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -2526,6 +2729,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -2537,6 +2741,8 @@
   (label 98)
   (parent 61)
   (seen 62)
+  (seen-ops
+    (62 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -2555,6 +2761,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -2582,6 +2789,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -2593,6 +2801,8 @@
   (label 100)
   (parent 63)
   (seen 62)
+  (seen-ops
+    (62 (operation generalization deleted (4 0)) (strand-map 0 1 2 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -2609,6 +2819,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -2621,6 +2832,8 @@
   (label 101)
   (parent 64)
   (seen 65)
+  (seen-ops
+    (65 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -2639,6 +2852,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -2667,6 +2881,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -2679,6 +2894,8 @@
   (label 103)
   (parent 66)
   (seen 65)
+  (seen-ops
+    (65 (operation generalization deleted (4 0)) (strand-map 0 1 2 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -2698,6 +2915,7 @@
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-2 k)
     (enc n new new-0 new k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -2710,6 +2928,10 @@
   (label 104)
   (parent 67)
   (seen 106)
+  (seen-ops
+    (106
+      (operation nonce-test (displaced 6 4 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-0 k)) (strand-map 0 1 2 3 5 4)))
   (unrealized (5 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -2727,6 +2949,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 3 adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -2755,6 +2978,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -2767,6 +2991,11 @@
   (label 106)
   (parent 68)
   (seen 140)
+  (seen-ops
+    (140
+      (operation nonce-test (displaced 6 3 adder 2) n (4 0) (enc n k)
+        (enc n new k) (enc n new-0 k) (enc n new-2 k))
+      (strand-map 0 1 2 3 4 5)))
   (unrealized (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -2786,6 +3015,7 @@
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-2 k)
     (enc n new new-0 new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -2799,6 +3029,10 @@
   (label 107)
   (parent 69)
   (seen 109)
+  (seen-ops
+    (109
+      (operation nonce-test (displaced 6 4 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-0 k)) (strand-map 0 1 2 3 5 4)))
   (unrealized (5 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -2816,6 +3050,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 3 adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -2845,6 +3080,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -2858,6 +3094,11 @@
   (label 109)
   (parent 70)
   (seen 144)
+  (seen-ops
+    (144
+      (operation nonce-test (displaced 6 3 adder 2) n (4 0) (enc n k)
+        (enc n new k) (enc n new-0 k) (enc n new-2 k))
+      (strand-map 0 1 2 3 4 5)))
   (unrealized (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -2877,6 +3118,7 @@
   (operation nonce-test (added-strand final 2) n (0 5) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-2 k)
     (enc n new new-0 new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-1 k)) (send (enc n new new-0 new-1 k))
@@ -2890,6 +3132,11 @@
   (label 110)
   (parent 71)
   (seen 112)
+  (seen-ops
+    (112
+      (operation nonce-test (displaced 6 4 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-0 k) (enc n new-1 k))
+      (strand-map 0 1 2 3 5 4)))
   (unrealized (5 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -2906,6 +3153,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-1 k)) (send (enc n new new-0 new-1 k))
@@ -2937,6 +3185,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-1 k)) (send (enc n new new-0 new-1 k))
@@ -2965,6 +3214,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -2976,6 +3226,8 @@
   (label 113)
   (parent 74)
   (seen 40)
+  (seen-ops
+    (40 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -2994,6 +3246,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -3021,6 +3274,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -3032,6 +3286,8 @@
   (label 115)
   (parent 77)
   (seen 42)
+  (seen-ops
+    (42 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3050,6 +3306,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-2 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -3062,6 +3319,9 @@
   (label 116)
   (parent 79)
   (seen 80)
+  (seen-ops
+    (80 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3078,6 +3338,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -3089,6 +3350,8 @@
   (label 117)
   (parent 81)
   (seen 40)
+  (seen-ops
+    (40 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3107,6 +3370,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -3134,6 +3398,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (3 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -3145,6 +3410,8 @@
   (label 119)
   (parent 84)
   (seen 42)
+  (seen-ops
+    (42 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3163,6 +3430,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-2 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -3175,6 +3443,9 @@
   (label 120)
   (parent 86)
   (seen 87)
+  (seen-ops
+    (87 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3193,6 +3464,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 3 adder 2) n (5 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -3205,6 +3477,10 @@
   (label 121)
   (parent 88)
   (seen 126)
+  (seen-ops
+    (126
+      (operation nonce-test (displaced 6 4 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-1 k)) (strand-map 0 1 2 3 5 4)))
   (unrealized (5 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -3223,6 +3499,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 2 adder 2) n (5 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -3235,6 +3512,13 @@
   (label 122)
   (parent 88)
   (seen 125 150)
+  (seen-ops
+    (125
+      (operation nonce-test (displaced 6 4 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-0 k)) (strand-map 0 1 2 3 5 4))
+    (150
+      (operation nonce-test (displaced 6 3 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-0 k)) (strand-map 0 1 2 3 4 5)))
   (unrealized (5 0))
   (comment "3 in cohort - 1 not yet seen"))
 
@@ -3254,6 +3538,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (added-strand adder 2) n (5 0) (enc n k)
     (enc n new k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -3267,6 +3552,13 @@
   (label 123)
   (parent 88)
   (seen 151 152)
+  (seen-ops
+    (151
+      (operation nonce-test (displaced 7 3 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-3 k)) (strand-map 0 1 2 3 4 5 6))
+    (152
+      (operation nonce-test (displaced 7 2 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-3 k)) (strand-map 0 1 2 3 4 5 6)))
   (unrealized (5 0))
   (comment "2 in cohort - 0 not yet seen"))
 
@@ -3284,6 +3576,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 3 adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -3312,6 +3605,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -3324,6 +3618,11 @@
   (label 125)
   (parent 89)
   (seen 154)
+  (seen-ops
+    (154
+      (operation nonce-test (displaced 6 3 adder 2) n (4 0) (enc n k)
+        (enc n new k) (enc n new-0 k) (enc n new-2 k))
+      (strand-map 0 1 2 3 4 5)))
   (unrealized (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3342,6 +3641,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -3354,6 +3654,11 @@
   (label 126)
   (parent 90)
   (seen 154)
+  (seen-ops
+    (154
+      (operation nonce-test (displaced 6 2 adder 2) n (4 0) (enc n k)
+        (enc n new k) (enc n new-1 k) (enc n new-2 k))
+      (strand-map 0 1 2 3 4 5)))
   (unrealized (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3372,6 +3677,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 3 adder 2) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -3384,6 +3690,11 @@
   (label 127)
   (parent 92)
   (seen 130)
+  (seen-ops
+    (130
+      (operation nonce-test (displaced 6 4 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-0 k) (enc n new-1 k))
+      (strand-map 0 1 2 3 5 4)))
   (unrealized (5 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -3404,6 +3715,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (added-strand adder 2) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -3417,6 +3729,11 @@
   (label 128)
   (parent 92)
   (seen 156)
+  (seen-ops
+    (156
+      (operation nonce-test (displaced 7 3 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-0 k) (enc n new-3 k))
+      (strand-map 0 1 2 3 4 5 6)))
   (unrealized (5 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3433,6 +3750,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -3444,6 +3762,8 @@
   (label 129)
   (parent 93)
   (seen 53)
+  (seen-ops
+    (53 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3462,6 +3782,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -3491,6 +3812,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 2 adder 2) n (5 0) (enc n k)
     (enc n new k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-1 k)) (send (enc n new new new-1 k))
@@ -3503,6 +3825,11 @@
   (label 131)
   (parent 95)
   (seen 134)
+  (seen-ops
+    (134
+      (operation nonce-test (displaced 6 4 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-0 k) (enc n new-1 k))
+      (strand-map 0 1 2 3 5 4)))
   (unrealized (5 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -3523,6 +3850,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (added-strand adder 2) n (5 0) (enc n k)
     (enc n new k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-1 k)) (send (enc n new new new-1 k))
@@ -3536,6 +3864,11 @@
   (label 132)
   (parent 95)
   (seen 159)
+  (seen-ops
+    (159
+      (operation nonce-test (displaced 7 2 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-1 k) (enc n new-3 k))
+      (strand-map 0 1 2 3 4 5 6)))
   (unrealized (5 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3552,6 +3885,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-1 k)) (send (enc n new new new-1 k))
@@ -3563,6 +3897,8 @@
   (label 133)
   (parent 96)
   (seen 47)
+  (seen-ops
+    (47 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3581,6 +3917,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-1 k)) (send (enc n new new new-1 k))
@@ -3610,6 +3947,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-2 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -3622,6 +3960,9 @@
   (label 135)
   (parent 99)
   (seen 100)
+  (seen-ops
+    (100 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3640,6 +3981,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-2 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -3653,6 +3995,9 @@
   (label 136)
   (parent 102)
   (seen 103)
+  (seen-ops
+    (103 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3671,6 +4016,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 3 adder 2) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -3683,6 +4029,11 @@
   (label 137)
   (parent 104)
   (seen 140)
+  (seen-ops
+    (140
+      (operation nonce-test (displaced 6 4 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-0 k) (enc n new-1 k))
+      (strand-map 0 1 2 3 5 4)))
   (unrealized (5 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -3703,6 +4054,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (added-strand adder 2) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -3716,6 +4068,11 @@
   (label 138)
   (parent 104)
   (seen 162)
+  (seen-ops
+    (162
+      (operation nonce-test (displaced 7 3 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-0 k) (enc n new-3 k))
+      (strand-map 0 1 2 3 4 5 6)))
   (unrealized (5 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3732,6 +4089,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -3743,6 +4101,8 @@
   (label 139)
   (parent 105)
   (seen 62)
+  (seen-ops
+    (62 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3761,6 +4121,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -3790,6 +4151,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 3 adder 2) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -3803,6 +4165,11 @@
   (label 141)
   (parent 107)
   (seen 144)
+  (seen-ops
+    (144
+      (operation nonce-test (displaced 6 4 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-0 k) (enc n new-1 k))
+      (strand-map 0 1 2 3 5 4)))
   (unrealized (5 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -3823,6 +4190,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (added-strand adder 2) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -3837,6 +4205,11 @@
   (label 142)
   (parent 107)
   (seen 165)
+  (seen-ops
+    (165
+      (operation nonce-test (displaced 7 3 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-0 k) (enc n new-3 k))
+      (strand-map 0 1 2 3 4 5 6)))
   (unrealized (5 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3853,6 +4226,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -3865,6 +4239,8 @@
   (label 143)
   (parent 108)
   (seen 65)
+  (seen-ops
+    (65 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3883,6 +4259,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -3913,6 +4290,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-1 k)) (send (enc n new new-0 new-1 k))
@@ -3926,6 +4304,9 @@
   (label 145)
   (parent 110)
   (seen 111)
+  (seen-ops
+    (111 (operation generalization deleted (4 0))
+      (strand-map 0 1 2 3 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3946,6 +4327,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (added-strand adder 2) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-1 k)) (send (enc n new new-0 new-1 k))
@@ -3977,6 +4359,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-2 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-1 k)) (send (enc n new new-0 new-1 k))
@@ -3990,6 +4373,9 @@
   (label 147)
   (parent 112)
   (seen 111)
+  (seen-ops
+    (111 (operation generalization deleted (5 0))
+      (strand-map 0 1 2 3 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4008,6 +4394,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-2 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -4020,6 +4407,9 @@
   (label 148)
   (parent 114)
   (seen 73)
+  (seen-ops
+    (73 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4038,6 +4428,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-2 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -4050,6 +4441,9 @@
   (label 149)
   (parent 118)
   (seen 73)
+  (seen-ops
+    (73 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4068,6 +4462,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 2 adder 2) n (5 0) (enc n k)
     (enc n new k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -4080,6 +4475,11 @@
   (label 150)
   (parent 121)
   (seen 154)
+  (seen-ops
+    (154
+      (operation nonce-test (displaced 6 4 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-0 k) (enc n new-1 k))
+      (strand-map 0 1 2 3 5 4)))
   (unrealized (5 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -4100,6 +4500,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (added-strand adder 2) n (5 0) (enc n k)
     (enc n new k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -4113,6 +4514,11 @@
   (label 151)
   (parent 121)
   (seen 169)
+  (seen-ops
+    (169
+      (operation nonce-test (displaced 7 2 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-1 k) (enc n new-3 k))
+      (strand-map 0 1 2 3 4 5 6)))
   (unrealized (5 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4133,6 +4539,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (added-strand adder 2) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -4146,6 +4553,11 @@
   (label 152)
   (parent 122)
   (seen 169)
+  (seen-ops
+    (169
+      (operation nonce-test (displaced 7 3 adder 2) n (5 0) (enc n k)
+        (enc n new k) (enc n new-0 k) (enc n new-3 k))
+      (strand-map 0 1 2 3 4 5 6)))
   (unrealized (5 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4162,6 +4574,7 @@
   (uniq-orig n new new-0 new-1)
   (operation nonce-test (displaced 5 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -4173,6 +4586,8 @@
   (label 153)
   (parent 124)
   (seen 76)
+  (seen-ops
+    (76 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4191,6 +4606,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (added-strand adder 2) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -4220,6 +4636,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -4232,6 +4649,9 @@
   (label 155)
   (parent 127)
   (seen 85)
+  (seen-ops
+    (85 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4252,6 +4672,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (added-strand adder 2) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -4282,6 +4703,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-2 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -4294,6 +4716,9 @@
   (label 157)
   (parent 130)
   (seen 87)
+  (seen-ops
+    (87 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4312,6 +4737,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-1 k)) (send (enc n new new new-1 k))
@@ -4324,6 +4750,9 @@
   (label 158)
   (parent 131)
   (seen 78)
+  (seen-ops
+    (78 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4344,6 +4773,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (added-strand adder 2) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-1 k)) (send (enc n new new new-1 k))
@@ -4374,6 +4804,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-2 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-1 k)) (send (enc n new new new-1 k))
@@ -4386,6 +4817,9 @@
   (label 160)
   (parent 134)
   (seen 80)
+  (seen-ops
+    (80 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4404,6 +4838,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -4416,6 +4851,9 @@
   (label 161)
   (parent 137)
   (seen 98)
+  (seen-ops
+    (98 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4436,6 +4874,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (added-strand adder 2) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -4466,6 +4905,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-2 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -4478,6 +4918,9 @@
   (label 163)
   (parent 140)
   (seen 100)
+  (seen-ops
+    (100 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4496,6 +4939,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -4509,6 +4953,9 @@
   (label 164)
   (parent 141)
   (seen 101)
+  (seen-ops
+    (101 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4529,6 +4976,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (added-strand adder 2) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -4560,6 +5008,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-2 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -4573,6 +5022,9 @@
   (label 166)
   (parent 144)
   (seen 103)
+  (seen-ops
+    (103 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4592,6 +5044,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (displaced 7 0 init 5) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-3 k))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-1 k)) (send (enc n new new-0 new-1 k))
@@ -4606,6 +5059,9 @@
   (label 167)
   (parent 146)
   (seen 147)
+  (seen-ops
+    (147 (operation generalization deleted (4 0))
+      (strand-map 0 1 2 3 5 6)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4624,6 +5080,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -4636,6 +5093,9 @@
   (label 168)
   (parent 150)
   (seen 113)
+  (seen-ops
+    (113 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4656,6 +5116,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (added-strand adder 2) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -4686,6 +5147,7 @@
   (uniq-orig n new new-0 new-1 new-2)
   (operation nonce-test (displaced 6 0 init 5) n (4 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-2 k))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -4698,6 +5160,9 @@
   (label 170)
   (parent 154)
   (seen 115)
+  (seen-ops
+    (115 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4717,6 +5182,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (displaced 7 0 init 5) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-3 k))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-0 k)) (send (enc n new new new-0 k))
@@ -4730,6 +5196,9 @@
   (label 171)
   (parent 156)
   (seen 120)
+  (seen-ops
+    (120 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5 6)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4749,6 +5218,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (displaced 7 0 init 5) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-3 k))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new-1 k)) (send (enc n new new new-1 k))
@@ -4762,6 +5232,9 @@
   (label 172)
   (parent 159)
   (seen 116)
+  (seen-ops
+    (116 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4781,6 +5254,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (displaced 7 0 init 5) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-3 k))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new k)) (send (enc n new new-0 new k))
@@ -4794,6 +5268,9 @@
   (label 173)
   (parent 162)
   (seen 135)
+  (seen-ops
+    (135 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5 6)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4813,6 +5290,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (displaced 7 0 init 5) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-3 k))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
       (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
@@ -4827,6 +5305,9 @@
   (label 174)
   (parent 165)
   (seen 136)
+  (seen-ops
+    (136 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5 6)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4846,6 +5327,7 @@
   (uniq-orig n new new-0 new-1 new-2 new-3)
   (operation nonce-test (displaced 7 0 init 5) n (5 0) (enc n k)
     (enc n new k) (enc n new-0 k) (enc n new-1 k) (enc n new-3 k))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
       (recv (enc n new k)) (send (enc n new new new k))
@@ -4859,6 +5341,9 @@
   (label 175)
   (parent 169)
   (seen 148)
+  (seen-ops
+    (148 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/fragile_pruning_shapes.tst b/tst/fragile_pruning_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/fragile_pruning_shapes.tst
@@ -0,0 +1,175 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/fragile_pruning.scm")
+
+(defprotocol fragile_pruning basic
+  (defrole init
+    (vars (k akey) (n n1 n2 n3 text))
+    (trace (send (enc n k)) (recv (enc n n1 k)) (recv (enc n n2 k))
+      (recv (enc n n3 k)) (send (enc n n1 n2 n3 k))
+      (recv (enc n n1 n2 n3 n k)))
+    (non-orig (invk k))
+    (uniq-orig n))
+  (defrole adder
+    (vars (k akey) (n new text))
+    (trace (recv (enc n k)) (send (enc n new k)))
+    (uniq-orig new))
+  (defrole final
+    (vars (k akey) (n n1 n2 n3 text))
+    (trace (recv (enc n n1 n2 n3 k)) (send (enc n n1 n2 n3 n k))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton fragile_pruning
+  (vars (n n1 n2 n3 text) (k akey))
+  (defstrand init 6 (n n) (n1 n1) (n2 n2) (n3 n3) (k k))
+  (non-orig (invk k))
+  (uniq-orig n n1 n2 n3)
+  (traces
+    ((send (enc n k)) (recv (enc n n1 k)) (recv (enc n n2 k))
+      (recv (enc n n3 k)) (send (enc n n1 n2 n3 k))
+      (recv (enc n n1 n2 n3 n k))))
+  (label 0)
+  (unrealized (0 1) (0 2) (0 3) (0 5))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton fragile_pruning
+  (vars (n new text) (k akey))
+  (defstrand init 6 (n n) (n1 new) (n2 new) (n3 new) (k k))
+  (defstrand adder 2 (n n) (new new) (k k))
+  (defstrand final 2 (n n) (n1 new) (n2 new) (n3 new) (k k))
+  (precedes ((0 0) (1 0)) ((0 4) (2 0)) ((1 1) (0 1)) ((2 1) (0 5)))
+  (non-orig (invk k))
+  (uniq-orig n new)
+  (operation nonce-test (displaced 3 0 init 5) n (2 0) (enc n k)
+    (enc n new k))
+  (traces
+    ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
+      (recv (enc n new k)) (send (enc n new new new k))
+      (recv (enc n new new new n k)))
+    ((recv (enc n k)) (send (enc n new k)))
+    ((recv (enc n new new new k)) (send (enc n new new new n k))))
+  (label 20)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((k k) (n n) (n1 new) (n2 new) (n3 new))))
+  (origs (n (0 0)) (new (1 1))))
+
+(defskeleton fragile_pruning
+  (vars (n new new-0 text) (k akey))
+  (defstrand init 6 (n n) (n1 new) (n2 new) (n3 new-0) (k k))
+  (defstrand adder 2 (n n) (new new) (k k))
+  (defstrand adder 2 (n n) (new new-0) (k k))
+  (defstrand final 2 (n n) (n1 new) (n2 new) (n3 new-0) (k k))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 4) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 3)) ((3 1) (0 5)))
+  (non-orig (invk k))
+  (uniq-orig n new new-0)
+  (operation nonce-test (displaced 4 0 init 5) n (3 0) (enc n k)
+    (enc n new k) (enc n new-0 k))
+  (traces
+    ((send (enc n k)) (recv (enc n new k)) (recv (enc n new k))
+      (recv (enc n new-0 k)) (send (enc n new new new-0 k))
+      (recv (enc n new new new-0 n k)))
+    ((recv (enc n k)) (send (enc n new k)))
+    ((recv (enc n k)) (send (enc n new-0 k)))
+    ((recv (enc n new new new-0 k)) (send (enc n new new new-0 n k))))
+  (label 47)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((k k) (n n) (n1 new) (n2 new) (n3 new-0))))
+  (origs (n (0 0)) (new-0 (2 1)) (new (1 1))))
+
+(defskeleton fragile_pruning
+  (vars (n new new-0 text) (k akey))
+  (defstrand init 6 (n n) (n1 new) (n2 new-0) (n3 new) (k k))
+  (defstrand adder 2 (n n) (new new) (k k))
+  (defstrand adder 2 (n n) (new new-0) (k k))
+  (defstrand final 2 (n n) (n1 new) (n2 new-0) (n3 new) (k k))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 4) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 2)) ((3 1) (0 5)))
+  (non-orig (invk k))
+  (uniq-orig n new new-0)
+  (operation nonce-test (displaced 4 0 init 5) n (3 0) (enc n k)
+    (enc n new k) (enc n new-0 k))
+  (traces
+    ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
+      (recv (enc n new k)) (send (enc n new new-0 new k))
+      (recv (enc n new new-0 new n k)))
+    ((recv (enc n k)) (send (enc n new k)))
+    ((recv (enc n k)) (send (enc n new-0 k)))
+    ((recv (enc n new new-0 new k)) (send (enc n new new-0 new n k))))
+  (label 62)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((k k) (n n) (n1 new) (n2 new-0) (n3 new))))
+  (origs (n (0 0)) (new-0 (2 1)) (new (1 1))))
+
+(defskeleton fragile_pruning
+  (vars (n new new-0 text) (k akey))
+  (defstrand init 6 (n n) (n1 new) (n2 new-0) (n3 new-0) (k k))
+  (defstrand adder 2 (n n) (new new) (k k))
+  (defstrand adder 2 (n n) (new new-0) (k k))
+  (defstrand final 2 (n n) (n1 new) (n2 new-0) (n3 new-0) (k k))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 4) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 2)) ((3 1) (0 5)))
+  (non-orig (invk k))
+  (uniq-orig n new new-0)
+  (operation nonce-test (displaced 4 0 init 5) n (3 0) (enc n k)
+    (enc n new k) (enc n new-0 k))
+  (traces
+    ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
+      (recv (enc n new-0 k)) (send (enc n new new-0 new-0 k))
+      (recv (enc n new new-0 new-0 n k)))
+    ((recv (enc n k)) (send (enc n new k)))
+    ((recv (enc n k)) (send (enc n new-0 k)))
+    ((recv (enc n new new-0 new-0 k))
+      (send (enc n new new-0 new-0 n k))))
+  (label 65)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((k k) (n n) (n1 new) (n2 new-0) (n3 new-0))))
+  (origs (n (0 0)) (new-0 (2 1)) (new (1 1))))
+
+(defskeleton fragile_pruning
+  (vars (n new new-0 new-1 text) (k akey))
+  (defstrand init 6 (n n) (n1 new) (n2 new-0) (n3 new-1) (k k))
+  (defstrand adder 2 (n n) (new new) (k k))
+  (defstrand adder 2 (n n) (new new-0) (k k))
+  (defstrand adder 2 (n n) (new new-1) (k k))
+  (defstrand final 2 (n n) (n1 new) (n2 new-0) (n3 new-1) (k k))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((0 4) (4 0))
+    ((1 1) (0 1)) ((2 1) (0 2)) ((3 1) (0 3)) ((4 1) (0 5)))
+  (non-orig (invk k))
+  (uniq-orig n new new-0 new-1)
+  (operation nonce-test (displaced 5 0 init 5) n (4 0) (enc n k)
+    (enc n new k) (enc n new-0 k) (enc n new-1 k))
+  (traces
+    ((send (enc n k)) (recv (enc n new k)) (recv (enc n new-0 k))
+      (recv (enc n new-1 k)) (send (enc n new new-0 new-1 k))
+      (recv (enc n new new-0 new-1 n k)))
+    ((recv (enc n k)) (send (enc n new k)))
+    ((recv (enc n k)) (send (enc n new-0 k)))
+    ((recv (enc n k)) (send (enc n new-1 k)))
+    ((recv (enc n new new-0 new-1 k))
+      (send (enc n new new-0 new-1 n k))))
+  (label 111)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((k k) (n n) (n1 new) (n2 new-0) (n3 new-1))))
+  (origs (n (0 0)) (new-1 (3 1)) (new-0 (2 1)) (new (1 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/goals.tst b/tst/goals.tst
--- a/tst/goals.tst
+++ b/tst/goals.tst
@@ -1,6 +1,6 @@
 (herald goals)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/goals.scm")
 
 (defprotocol ns basic
@@ -51,6 +51,7 @@
   (uniq-orig n1)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc n1 a (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -112,6 +113,7 @@
   (uniq-orig n1)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc n1 a (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -174,6 +176,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand init 3) n2 (0 2)
     (enc n1 n2 (pubk a)))
+  (strand-map 0)
   (traces
     ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
       (recv (enc n2 (pubk b))))
@@ -238,6 +241,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand init 3) n2 (0 2)
     (enc n1 n2 b (pubk a)))
+  (strand-map 0)
   (traces
     ((recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))
       (recv (enc n2 (pubk b))))
@@ -319,6 +323,7 @@
   (uniq-orig n1)
   (operation nonce-test (added-strand resp 2) n1 (1 1)
     (enc n1 a (pubk b)))
+  (strand-map 0 1)
   (traces ((recv n1))
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -338,6 +343,7 @@
   (uniq-orig n1)
   (operation nonce-test (contracted (n2-0 n2)) n1 (1 1)
     (enc n1 n2 (pubk a)) (enc n1 a (pubk b)))
+  (strand-map 0 1 2)
   (traces ((recv n1))
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -357,6 +363,7 @@
   (uniq-orig n1)
   (operation nonce-test (displaced 3 2 resp 2) n1 (0 0)
     (enc n1 a (pubk b)))
+  (strand-map 0 1 2)
   (traces ((recv n1))
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -377,6 +384,7 @@
   (uniq-orig n1)
   (operation nonce-test (added-strand resp 2) n1 (0 0)
     (enc n1 a (pubk b)))
+  (strand-map 0 1 2)
   (traces ((recv n1))
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -385,6 +393,11 @@
   (label 13)
   (parent 11)
   (seen 15)
+  (seen-ops
+    (15
+      (operation nonce-test (displaced 4 2 resp 2) n1 (0 0)
+        (enc n1 n2-0 (pubk a)) (enc n1 a (pubk b)))
+      (strand-map 0 1 2 3)))
   (unrealized (0 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -398,6 +411,7 @@
   (uniq-orig n2)
   (operation nonce-test (displaced 3 1 init 3) n2 (0 0)
     (enc n2 n2 (pubk a)) (enc n2 a (pubk b)))
+  (strand-map 0 1 2)
   (traces ((recv n2))
     ((send (enc n2 a (pubk b))) (recv (enc n2 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -419,6 +433,7 @@
   (uniq-orig n1)
   (operation nonce-test (added-strand resp 2) n1 (0 0)
     (enc n1 n2 (pubk a)) (enc n1 a (pubk b)))
+  (strand-map 0 1 2)
   (traces ((recv n1))
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -427,6 +442,11 @@
   (label 15)
   (parent 12)
   (seen 16)
+  (seen-ops
+    (16
+      (operation nonce-test (displaced 4 1 init 3) n2 (0 0)
+        (enc n2 n2 (pubk a)) (enc n2 n2-0 (pubk a)) (enc n2 a (pubk b)))
+      (strand-map 0 1 2 3)))
   (unrealized (0 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -442,6 +462,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand resp 2) n2 (0 0) (enc n2 (pubk b))
     (enc n2 n2 (pubk a)) (enc n2 a (pubk b)))
+  (strand-map 0 1 2)
   (traces ((recv n2))
     ((send (enc n2 a (pubk b))) (recv (enc n2 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -497,6 +518,7 @@
   (non-orig (privk a))
   (uniq-orig n)
   (operation nonce-test (added-strand resp 2) n (0 1) (enc n (pubk a)))
+  (strand-map 0)
   (traces ((send (enc n (pubk a))) (recv n))
     ((recv (enc n (pubk a))) (send n)))
   (label 18)
@@ -557,6 +579,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand resp 2) n (0 1)
     (enc n a-0 (pubk a)))
+  (strand-map 0)
   (traces ((send (enc n a-0 (pubk a))) (recv (enc n n2 (pubk a-0))))
     ((recv (enc n a-0 (pubk a))) (send (enc n n2-0 (pubk a-0)))))
   (label 20)
@@ -620,6 +643,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand init 3) n (0 2)
     (enc n1 n (pubk a)))
+  (strand-map 0)
   (traces
     ((recv (enc n1 a (pubk b))) (send (enc n1 n (pubk a)))
       (recv (enc n (pubk b))))
@@ -685,6 +709,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand resp 2) n (0 1)
     (enc n a (pubk b)))
+  (strand-map 0)
   (traces ((send (enc n a (pubk b))) (recv (enc n n2 (pubk a))))
     ((recv (enc n a (pubk b))) (send (enc n n2-0 (pubk a)))))
   (label 24)
@@ -701,6 +726,7 @@
   (uniq-orig n)
   (operation nonce-test (contracted (n2-0 n2)) n (0 1)
     (enc n n2 (pubk a)) (enc n a (pubk b)))
+  (strand-map 0 1)
   (traces ((send (enc n a (pubk b))) (recv (enc n n2 (pubk a))))
     ((recv (enc n a (pubk b))) (send (enc n n2 (pubk a)))))
   (label 25)
@@ -763,6 +789,7 @@
   (uniq-orig n1)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc n1 a (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -843,6 +870,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand init 3) n2 (1 2)
     (enc n1 n2 (pubk a)))
+  (strand-map 0 1)
   (traces ((recv n2))
     ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
       (recv (enc n2 (pubk b))))
@@ -863,6 +891,7 @@
   (uniq-orig n2)
   (operation nonce-test (displaced 3 2 init 3) n2 (0 0)
     (enc n1 n2 (pubk a)))
+  (strand-map 0 1 2)
   (traces ((recv n2))
     ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
       (recv (enc n2 (pubk b))))
@@ -887,6 +916,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand init 3) n2 (0 0)
     (enc n1 n2 (pubk a)))
+  (strand-map 0 1 2)
   (traces ((recv n2))
     ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
       (recv (enc n2 (pubk b))))
@@ -953,6 +983,7 @@
   (non-orig (privk a) (privk b))
   (uniq-orig n1)
   (operation collapsed 1 0)
+  (strand-map 0 0)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b)))))
@@ -971,6 +1002,7 @@
   (uniq-orig n1 n1-0)
   (operation nonce-test (added-strand resp 2) n1-0 (1 1)
     (enc n1-0 a (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -991,6 +1023,7 @@
   (uniq-orig n1)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc n1 a (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -1011,6 +1044,7 @@
   (uniq-orig n1 n1-0)
   (operation nonce-test (contracted (n2-1 n2-0)) n1-0 (1 1)
     (enc n1-0 n2-0 (pubk a)) (enc n1-0 a (pubk b)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -1031,6 +1065,7 @@
   (uniq-orig n1)
   (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
     (enc n1 n2 (pubk a)) (enc n1 a (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -1054,6 +1089,7 @@
   (uniq-orig n1 n1-0)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc n1 a (pubk b)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -1077,6 +1113,7 @@
   (uniq-orig n1 n1-0)
   (operation nonce-test (contracted (n2-1 n2-0)) n1 (0 1)
     (enc n1 n2-0 (pubk a)) (enc n1 a (pubk b)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2-0 (pubk a)))
       (send (enc n2-0 (pubk b))))
@@ -1159,6 +1196,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand init 3) n2 (0 0)
     (enc n1 n2 b (pubk a)))
+  (strand-map 0 1)
   (traces ((recv n2))
     ((recv (enc a n1 (pubk b))) (send (enc n1 n2 b (pubk a))))
     ((send (enc a n1 (pubk b))) (recv (enc n1 n2 b (pubk a)))
@@ -1179,6 +1217,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand resp 2) n2 (0 0)
     (enc a-0 n2 b (pubk a)))
+  (strand-map 0 1)
   (traces ((recv n2))
     ((recv (enc a a-0 (pubk b))) (send (enc a-0 n2 b (pubk a))))
     ((recv (enc a-0 n2 b (pubk a)))
diff --git a/tst/goals_shapes.tst b/tst/goals_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/goals_shapes.tst
@@ -0,0 +1,853 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald goals)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/goals.scm")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n1 n2 text) (b a name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (non-orig (privk b))
+  (uniq-orig n1)
+  (goals
+    (forall ((b name) (n1 text) (z0 strd))
+      (implies
+        (and (p "init" z0 3) (p "init" "n1" z0 n1) (p "init" "b" z0 b)
+          (non (privk b)) (uniq n1))
+        (exists ((z1 strd))
+          (and (p "resp" z1 2) (p "resp" "b" z1 b))))))
+  (comment "Initiator point of view"
+    "Authentication goal: agreement on name b")
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n1 (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton ns
+  (vars (n1 n2 n2-0 text) (b a name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2-0) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk b))
+  (uniq-orig n1)
+  (operation nonce-test (added-strand resp 2) n1 (0 1)
+    (enc n1 a (pubk b)))
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2-0 (pubk a)))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((b b) (n1 n1) (a a) (n2 n2))))
+  (origs (n1 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n1 n2 text) (b a name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (non-orig (privk b))
+  (uniq-orig n1)
+  (goals
+    (forall ((b name) (n1 text) (z0 strd))
+      (implies
+        (and (p "init" z0 3) (p "init" "n1" z0 n1) (p "init" "b" z0 b)
+          (non (privk b)) (uniq n1))
+        (exists ((z1 strd))
+          (and (p "resp" z1 2) (p "resp" "b" z1 b) (prec z1 1 z0 2))))))
+  (comment "Prec example")
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (label 2)
+  (unrealized (0 1))
+  (origs (n1 (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton ns
+  (vars (n1 n2 n2-0 text) (b a name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2-0) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk b))
+  (uniq-orig n1)
+  (operation nonce-test (added-strand resp 2) n1 (0 1)
+    (enc n1 a (pubk b)))
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2-0 (pubk a)))))
+  (label 3)
+  (parent 2)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((b b) (n1 n1) (a a) (n2 n2))))
+  (origs (n1 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (non-orig (privk a))
+  (uniq-orig n2)
+  (goals
+    (forall ((a b name) (n2 text) (z0 strd))
+      (implies
+        (and (p "resp" z0 3) (p "resp" "n2" z0 n2) (p "resp" "a" z0 a)
+          (p "resp" "b" z0 b) (non (privk a)) (uniq n2))
+        (exists ((z1 strd))
+          (and (p "init" z1 2) (p "init" "b" z1 b))))))
+  (comment "Responder point of view"
+    "Failed authentication goal: agreement on name b")
+  (traces
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (label 4)
+  (unrealized (0 2))
+  (origs (n2 (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton ns
+  (vars (n2 n1 text) (a b b-0 name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b-0))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig (privk a))
+  (uniq-orig n2)
+  (operation nonce-test (added-strand init 3) n2 (0 2)
+    (enc n1 n2 (pubk a)))
+  (traces
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b))))
+    ((send (enc n1 a (pubk b-0))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b-0)))))
+  (label 5)
+  (parent 4)
+  (realized)
+  (shape)
+  (satisfies (no (a a) (b b) (n2 n2) (z0 0)))
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol nsl basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Needham-Schroeder-Lowe with no role origination assumptions"))
+
+(defskeleton nsl
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (non-orig (privk a))
+  (uniq-orig n2)
+  (goals
+    (forall ((a b name) (n2 text) (z0 strd))
+      (implies
+        (and (p "resp" z0 3) (p "resp" "n2" z0 n2) (p "resp" "a" z0 a)
+          (p "resp" "b" z0 b) (non (privk a)) (uniq n2))
+        (exists ((z1 strd))
+          (and (p "init" z1 2) (p "init" "b" z1 b))))))
+  (comment "Responder point of view"
+    "Authentication goal: agreement on name b")
+  (traces
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (label 6)
+  (unrealized (0 2))
+  (origs (n2 (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton nsl
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig (privk a))
+  (uniq-orig n2)
+  (operation nonce-test (added-strand init 3) n2 (0 2)
+    (enc n1 n2 b (pubk a)))
+  (traces
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))
+      (recv (enc n2 (pubk b))))
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (label 7)
+  (parent 6)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n1 n2 text) (a b name))
+  (deflistener n1)
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (goals
+    (forall ((a b name) (n1 text) (z0 z1 strd))
+      (implies
+        (and (p "init" z0 3) (p "init" "n1" z0 n1) (p "init" "a" z0 a)
+          (p "init" "b" z0 b) (p "" z1 1) (p "" "x" z1 n1)
+          (non (privk a)) (non (privk b)) (uniq n1)) (false))))
+  (comment "Initiator point of view"
+    "Secrecy goal: nonce n1 not revealed")
+  (traces ((recv n1))
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (label 8)
+  (unrealized (0 0) (1 1))
+  (preskeleton)
+  (origs (n1 (1 0)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (a name) (n text))
+    (trace (send (enc n (pubk a))) (recv n)))
+  (defrole resp
+    (vars (a name) (n text))
+    (trace (recv (enc n (pubk a))) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Unilateral authentication"))
+
+(defskeleton unilateral
+  (vars (n text) (a name))
+  (defstrand init 2 (n n) (a a))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (goals
+    (forall ((a name) (n text) (z0 strd))
+      (implies
+        (and (p "init" z0 2) (p "init" "n" z0 n) (p "init" "a" z0 a)
+          (non (privk a)) (uniq n))
+        (exists ((z1 strd))
+          (and (p "resp" z1 2) (p "resp" "a" z1 a))))))
+  (comment "Unilateral authentication goal")
+  (traces ((send (enc n (pubk a))) (recv n)))
+  (label 17)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton unilateral
+  (vars (n text) (a name))
+  (defstrand init 2 (n n) (a a))
+  (defstrand resp 2 (n n) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (operation nonce-test (added-strand resp 2) n (0 1) (enc n (pubk a)))
+  (traces ((send (enc n (pubk a))) (recv n))
+    ((recv (enc n (pubk a))) (send n)))
+  (label 18)
+  (parent 17)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((a a) (n n))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n n2 text) (a a-0 name))
+  (defstrand init 2 (n1 n) (n2 n2) (a a-0) (b a))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (goals
+    (forall ((a name) (n text) (z0 strd))
+      (implies
+        (and (p "init" z0 2) (p "init" "n1" z0 n) (p "init" "b" z0 a)
+          (non (privk a)) (uniq n))
+        (exists ((z1 strd))
+          (and (p "resp" z1 2) (p "resp" "b" z1 a))))))
+  (comment "Initiator authentication goal"
+    "Same as unilateral goal under the predicate mapping:"
+    (p "init" "n") "->" (p "init" "n1") "and" (p "init" "a") "->"
+    (p "init" "b") "and" (p "resp" "a") "->" (p "resp" "b"))
+  (traces ((send (enc n a-0 (pubk a))) (recv (enc n n2 (pubk a-0)))))
+  (label 19)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton ns
+  (vars (n n2 n2-0 text) (a a-0 name))
+  (defstrand init 2 (n1 n) (n2 n2) (a a-0) (b a))
+  (defstrand resp 2 (n2 n2-0) (n1 n) (b a) (a a-0))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (operation nonce-test (added-strand resp 2) n (0 1)
+    (enc n a-0 (pubk a)))
+  (traces ((send (enc n a-0 (pubk a))) (recv (enc n n2 (pubk a-0))))
+    ((recv (enc n a-0 (pubk a))) (send (enc n n2-0 (pubk a-0)))))
+  (label 20)
+  (parent 19)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((a a) (n n) (a-0 a-0) (n2 n2))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n n1 text) (a b name))
+  (defstrand resp 3 (n2 n) (n1 n1) (b b) (a a))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (goals
+    (forall ((a name) (n text) (z0 strd))
+      (implies
+        (and (p "resp" z0 3) (p "resp" "n2" z0 n) (p "resp" "a" z0 a)
+          (non (privk a)) (uniq n))
+        (exists ((z1 strd))
+          (and (p "init" z1 3) (p "init" "a" z1 a))))))
+  (comment "Responder authentication goal"
+    "Same as unilateral goal under the predicate mapping:" (p "init" 1)
+    "->" (p "resp" 2) "and" (p "init" "n") "->" (p "resp" "n2") "and"
+    (p "init" "a") "->" (p "resp" "a") "and" (p "resp" 1) "->"
+    (p "init" 2) "and" (p "resp" "a") "->" (p "init" "a"))
+  (traces
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n (pubk a)))
+      (recv (enc n (pubk b)))))
+  (label 21)
+  (unrealized (0 2))
+  (origs (n (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton ns
+  (vars (n n1 text) (a b b-0 name))
+  (defstrand resp 3 (n2 n) (n1 n1) (b b) (a a))
+  (defstrand init 3 (n1 n1) (n2 n) (a a) (b b-0))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (operation nonce-test (added-strand init 3) n (0 2)
+    (enc n1 n (pubk a)))
+  (traces
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n (pubk a)))
+      (recv (enc n (pubk b))))
+    ((send (enc n1 a (pubk b-0))) (recv (enc n1 n (pubk a)))
+      (send (enc n (pubk b-0)))))
+  (label 22)
+  (parent 21)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((a a) (n n) (b b) (n1 n1))))
+  (origs (n (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n n2 text) (a b name))
+  (defstrand init 2 (n1 n) (n2 n2) (a a) (b b))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n)
+  (goals
+    (forall ((a b name) (n text) (z0 strd))
+      (implies
+        (and (p "init" z0 2) (p "init" "n1" z0 n) (p "init" "a" z0 a)
+          (p "init" "b" z0 b) (non (privk a)) (non (privk b)) (uniq n))
+        (exists ((z1 strd)) (and (p "resp" z1 2) (p "resp" "b" z1 b)))))
+    (forall ((a b name) (n text) (z0 strd))
+      (implies
+        (and (p "init" z0 2) (p "init" "n1" z0 n) (p "init" "a" z0 a)
+          (p "init" "b" z0 b) (non (privk a)) (non (privk b)) (uniq n))
+        (exists ((z1 strd))
+          (and (p "resp" z1 2) (p "resp" "a" z1 a))))))
+  (comment "Two initiator authentication goals")
+  (traces ((send (enc n a (pubk b))) (recv (enc n n2 (pubk a)))))
+  (label 23)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton ns
+  (vars (n n2 text) (a b name))
+  (defstrand init 2 (n1 n) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2) (n1 n) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n)
+  (operation nonce-test (contracted (n2-0 n2)) n (0 1)
+    (enc n n2 (pubk a)) (enc n a (pubk b)))
+  (traces ((send (enc n a (pubk b))) (recv (enc n n2 (pubk a))))
+    ((recv (enc n a (pubk b))) (send (enc n n2 (pubk a)))))
+  (label 25)
+  (parent 23)
+  (realized)
+  (shape)
+  (satisfies yes yes)
+  (maps ((0) ((a a) (b b) (n n) (n2 n2))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n1 n2 text) (b a name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (non-orig (privk b))
+  (uniq-orig n1)
+  (goals
+    (forall ((n1 n2 text) (b a name) (z strd))
+      (implies
+        (and (p "init" z 3) (p "init" "n1" z n1) (p "init" "n2" z n2)
+          (p "init" "a" z a) (p "init" "b" z b) (non (privk b))
+          (uniq-at n1 z 0))
+        (exists ((n2-0 text) (z-0 strd))
+          (and (p "resp" z-0 2) (p "resp" "n2" z-0 n2-0)
+            (p "resp" "n1" z-0 n1) (p "resp" "b" z-0 b)
+            (p "resp" "a" z-0 a) (prec z 0 z-0 0) (prec z-0 1 z 1))))))
+  (comment "Shape analysis sentence")
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (label 26)
+  (unrealized (0 1))
+  (origs (n1 (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton ns
+  (vars (n1 n2 n2-0 text) (b a name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2-0) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk b))
+  (uniq-orig n1)
+  (operation nonce-test (added-strand resp 2) n1 (0 1)
+    (enc n1 a (pubk b)))
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2-0 (pubk a)))))
+  (label 27)
+  (parent 26)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((n1 n1) (n2 n2) (b b) (a a))))
+  (origs (n1 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n2 n1 text) (a b name))
+  (deflistener n2)
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n2)
+  (goals
+    (forall ((a b name) (n2 text) (z0 z1 strd))
+      (implies
+        (and (p "resp" z0 3) (p "resp" "n2" z0 n2) (p "resp" "a" z0 a)
+          (p "resp" "b" z0 b) (p "" z1 1) (p "" "x" z1 n2)
+          (non (privk a)) (non (privk b)) (uniq n2)) (false))))
+  (comment "Responder point of view"
+    "Failed secrecy goal: nonce n2 not revealed")
+  (traces ((recv n2))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (label 28)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (n2 (1 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton ns
+  (vars (n2 n1 text) (a b b-0 name))
+  (deflistener n2)
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b-0))
+  (precedes ((1 1) (2 1)) ((2 2) (0 0)) ((2 2) (1 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n2)
+  (operation nonce-test (displaced 3 2 init 3) n2 (0 0)
+    (enc n1 n2 (pubk a)))
+  (traces ((recv n2))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b))))
+    ((send (enc n1 a (pubk b-0))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b-0)))))
+  (label 31)
+  (parent 28)
+  (realized)
+  (shape)
+  (satisfies (no (a a) (b b) (n2 n2) (z0 1) (z1 0)))
+  (maps ((0 1) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (1 1))))
+
+(defskeleton ns
+  (vars (n2 n1 text) (a b b-0 b-1 name))
+  (deflistener n2)
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b-0))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b-1))
+  (precedes ((1 1) (2 1)) ((1 1) (3 1)) ((2 2) (1 2)) ((3 2) (0 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n2)
+  (operation nonce-test (added-strand init 3) n2 (0 0)
+    (enc n1 n2 (pubk a)))
+  (traces ((recv n2))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b))))
+    ((send (enc n1 a (pubk b-0))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b-0))))
+    ((send (enc n1 a (pubk b-1))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b-1)))))
+  (label 32)
+  (parent 28)
+  (realized)
+  (shape)
+  (satisfies (no (a a) (b b) (n2 n2) (z0 1) (z1 0)))
+  (maps ((0 1) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (1 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n1 n1-0 n2 n2-0 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1-0) (n2 n2-0) (a a) (b b))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1 n1-0)
+  (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)
+          (p "init" "n2" z n2) (p "init" "a" z a) (p "init" "b" z b)
+          (p "init" "n1" z-0 n1-0) (p "init" "n2" z-0 n2-0)
+          (p "init" "a" z-0 a) (p "init" "b" z-0 b) (non (privk a))
+          (non (privk b)) (uniq-at n1 z 0) (uniq-at n1-0 z-0 0))
+        (= z z-0))))
+  (comment "Double initiator point of view")
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((send (enc n1-0 a (pubk b))) (recv (enc n1-0 n2-0 (pubk a)))
+      (send (enc n2-0 (pubk b)))))
+  (label 33)
+  (unrealized (0 1) (1 1))
+  (origs (n1 (0 0)) (n1-0 (1 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton ns
+  (vars (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
+    (enc n1 n2 (pubk a)) (enc n1 a (pubk b)))
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))))
+  (label 38)
+  (parent 33)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0 0) ((a a) (b b) (n1 n1) (n1-0 n1) (n2 n2) (n2-0 n2))))
+  (origs (n1 (0 0))))
+
+(defskeleton ns
+  (vars (n1 n1-0 n2 n2-0 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2-0) (a a) (b b))
+  (defstrand init 3 (n1 n1-0) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2) (n1 n1-0) (b b) (a a))
+  (defstrand resp 2 (n2 n2-0) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (3 0)) ((1 0) (2 0)) ((2 1) (1 1)) ((3 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1 n1-0)
+  (operation nonce-test (contracted (n2-1 n2-0)) n1 (0 1)
+    (enc n1 n2-0 (pubk a)) (enc n1 a (pubk b)))
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2-0 (pubk a)))
+      (send (enc n2-0 (pubk b))))
+    ((send (enc n1-0 a (pubk b))) (recv (enc n1-0 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n1-0 a (pubk b))) (send (enc n1-0 n2 (pubk a))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2-0 (pubk a)))))
+  (label 40)
+  (parent 33)
+  (realized)
+  (shape)
+  (satisfies
+    (no (n1 n1) (n1-0 n1-0) (n2 n2-0) (n2-0 n2) (a a) (b b) (z 0)
+      (z-0 1)))
+  (maps ((0 1) ((a a) (b b) (n1 n1) (n1-0 n1-0) (n2 n2-0) (n2-0 n2))))
+  (origs (n1 (0 0)) (n1-0 (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol nsl-typeless basic
+  (defrole init
+    (vars (a b name) (n1 text) (n2 mesg))
+    (trace (send (enc a n1 (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 text) (n1 mesg))
+    (trace (recv (enc a n1 (pubk b))) (send (enc n1 n2 b (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder-Lowe with untyped nonces"))
+
+(defskeleton nsl-typeless
+  (vars (n1 mesg) (n2 text) (a b name))
+  (deflistener n2)
+  (defstrand resp 2 (n1 n1) (n2 n2) (b b) (a a))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n2)
+  (goals
+    (forall ((n2 text) (a b name) (z z-0 strd))
+      (implies
+        (and (p "resp" z 2) (p "" z-0 1) (p "resp" "n2" z n2)
+          (p "resp" "b" z b) (p "resp" "a" z a) (p "" "x" z-0 n2)
+          (non (privk a)) (non (privk b)) (uniq n2)) (false))))
+  (comment "Shows typeflaw in typeless NSL")
+  (traces ((recv n2))
+    ((recv (enc a n1 (pubk b))) (send (enc n1 n2 b (pubk a)))))
+  (label 41)
+  (unrealized (0 0))
+  (preskeleton)
+  (origs (n2 (1 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton nsl-typeless
+  (vars (n2 n2-0 text) (a b a-0 name))
+  (deflistener n2)
+  (defstrand resp 2 (n1 a-0) (n2 n2) (b b) (a a))
+  (defstrand resp 2 (n1 (cat n2 b)) (n2 n2-0) (b a) (a a-0))
+  (precedes ((1 1) (2 0)) ((2 1) (0 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n2)
+  (operation nonce-test (added-strand resp 2) n2 (0 0)
+    (enc a-0 n2 b (pubk a)))
+  (traces ((recv n2))
+    ((recv (enc a a-0 (pubk b))) (send (enc a-0 n2 b (pubk a))))
+    ((recv (enc a-0 n2 b (pubk a)))
+      (send (enc (cat n2 b) n2-0 a (pubk a-0)))))
+  (label 44)
+  (parent 41)
+  (realized)
+  (shape)
+  (satisfies (no (n2 n2) (a a) (b b) (z 1) (z-0 0)))
+  (maps ((0 1) ((n2 n2) (a a) (b b) (n1 a-0))))
+  (origs (n2 (1 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/hashtest-key-hash.tst b/tst/hashtest-key-hash.tst
--- a/tst/hashtest-key-hash.tst
+++ b/tst/hashtest-key-hash.tst
@@ -1,6 +1,6 @@
 (herald "Hashtest")
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/hashtest-key-hash.scm")
 
 (defprotocol hashtest basic
@@ -38,6 +38,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation encryption-test (added-strand resp 2) (enc "h" n) (0 1))
+  (strand-map 0)
   (traces ((send (enc n k)) (recv (enc "h" n)))
     ((recv (enc n k-0)) (send (enc "h" n))))
   (label 1)
@@ -53,6 +54,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation encryption-test (added-listener n) (enc "h" n) (0 1))
+  (strand-map 0)
   (traces ((send (enc n k)) (recv (enc "h" n))) ((recv n) (send n)))
   (label 2)
   (parent 0)
@@ -68,6 +70,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (contracted (k-0 k)) n (1 0) (enc n k))
+  (strand-map 0 1)
   (traces ((send (enc n k)) (recv (enc "h" n)))
     ((recv (enc n k)) (send (enc "h" n))))
   (label 3)
diff --git a/tst/hashtest-key-hash_shapes.tst b/tst/hashtest-key-hash_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/hashtest-key-hash_shapes.tst
@@ -0,0 +1,54 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Hashtest")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/hashtest-key-hash.scm")
+
+(defprotocol hashtest basic
+  (defrole init
+    (vars (n data) (k akey))
+    (trace (send (enc n k)) (recv (enc "h" n)))
+    (non-orig (invk k))
+    (uniq-orig n))
+  (defrole resp
+    (vars (k akey) (n data))
+    (trace (recv (enc n k)) (send (enc "h" n))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton hashtest
+  (vars (n data) (k akey))
+  (defstrand init 2 (n n) (k k))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (traces ((send (enc n k)) (recv (enc "h" n))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton hashtest
+  (vars (n data) (k akey))
+  (defstrand init 2 (n n) (k k))
+  (defstrand resp 2 (n n) (k k))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (operation nonce-test (contracted (k-0 k)) n (1 0) (enc n k))
+  (traces ((send (enc n k)) (recv (enc "h" n)))
+    ((recv (enc n k)) (send (enc "h" n))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (k k))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/hashtest.tst b/tst/hashtest.tst
--- a/tst/hashtest.tst
+++ b/tst/hashtest.tst
@@ -1,6 +1,6 @@
 (herald "Hashtest")
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/hashtest.scm")
 
 (defprotocol hashtest basic
@@ -38,6 +38,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation encryption-test (added-strand resp 2) (hash n) (0 1))
+  (strand-map 0)
   (traces ((send (enc n k)) (recv (hash n)))
     ((recv (enc n k-0)) (send (hash n))))
   (label 1)
@@ -53,6 +54,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation encryption-test (added-listener n) (hash n) (0 1))
+  (strand-map 0)
   (traces ((send (enc n k)) (recv (hash n))) ((recv n) (send n)))
   (label 2)
   (parent 0)
@@ -68,6 +70,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (contracted (k-0 k)) n (1 0) (enc n k))
+  (strand-map 0 1)
   (traces ((send (enc n k)) (recv (hash n)))
     ((recv (enc n k)) (send (hash n))))
   (label 3)
diff --git a/tst/hashtest_shapes.tst b/tst/hashtest_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/hashtest_shapes.tst
@@ -0,0 +1,54 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Hashtest")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/hashtest.scm")
+
+(defprotocol hashtest basic
+  (defrole init
+    (vars (n data) (k akey))
+    (trace (send (enc n k)) (recv (hash n)))
+    (non-orig (invk k))
+    (uniq-orig n))
+  (defrole resp
+    (vars (k akey) (n data))
+    (trace (recv (enc n k)) (send (hash n))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton hashtest
+  (vars (n data) (k akey))
+  (defstrand init 2 (n n) (k k))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (traces ((send (enc n k)) (recv (hash n))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton hashtest
+  (vars (n data) (k akey))
+  (defstrand init 2 (n n) (k k))
+  (defstrand resp 2 (n n) (k k))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (operation nonce-test (contracted (k-0 k)) n (1 0) (enc n k))
+  (traces ((send (enc n k)) (recv (hash n)))
+    ((recv (enc n k)) (send (hash n))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (k k))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/hull-alt.scm b/tst/hull-alt.scm
new file mode 100644
--- /dev/null
+++ b/tst/hull-alt.scm
@@ -0,0 +1,38 @@
+(herald hull-alt (bound 9))
+;;;  Wonthull 2:  Demonstrates a subtle incompleteness.
+;;;
+;;;  From Wonthull 1, the difference here is that
+;;; Wonthull 2 should be able to do augmentation with
+;;; non-trivial deorigination immediately after the POV.
+;;;  Interestingly, Wonthull 2 (without deorigination)
+;;; actually finds the missing shape, but via variable
+;;; separation.
+
+(defprotocol wonthull2 basic
+  (defrole init (vars (a name) (n r-1 r-2 r-3 text))
+    (trace
+     (send ;;(cat (enc x1 x3 (pubk a)) (enc x3 x2 (pubk a)))
+      (cat (enc n r-1 (pubk a))
+	   (enc r-2 n (pubk a))))
+     (recv
+      (enc "okay" n r-3 (pubk a))))
+    (uniq-orig n)
+    (non-orig (privk a))
+  )
+  (defrole resp (vars (a name) (y1 y2 y3 text))
+     (trace
+       (recv (enc y1 y2 (pubk a)) )
+       (send (enc "okay" y3 y1 (pubk a))))))
+
+(defskeleton wonthull2
+  (vars (a name) (n text) (x1 x2 x3 x4 text))
+  (defstrand init 2)
+)
+
+(comment
+ (defskeleton wonthull2
+   (vars (a name) (n text) (x1 x2 x3 x4 text))
+   (defstrand init 2 (x2 x3) (x4 x1))
+   (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3))
+   (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+   ))
diff --git a/tst/hull-alt.tst b/tst/hull-alt.tst
new file mode 100644
--- /dev/null
+++ b/tst/hull-alt.tst
@@ -0,0 +1,479 @@
+(herald hull-alt (bound 9))
+
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/hull-alt.scm")
+(comment "Strand count bounded at 9")
+
+(defprotocol wonthull2 basic
+  (defrole init
+    (vars (a name) (n r r-0 r-1 text))
+    (trace (send (cat (enc n r (pubk a)) (enc r-0 n (pubk a))))
+      (recv (enc "okay" n r-1 (pubk a))))
+    (non-orig (privk a))
+    (uniq-orig n))
+  (defrole resp
+    (vars (a name) (y1 y2 y3 text))
+    (trace (recv (enc y1 y2 (pubk a)))
+      (send (enc "okay" y3 y1 (pubk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wonthull2
+  (vars (n r r-0 r-1 text) (a name))
+  (defstrand init 2 (n n) (r r) (r-0 r-0) (r-1 r-1) (a a))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (traces
+    ((send (cat (enc n r (pubk a)) (enc r-0 n (pubk a))))
+      (recv (enc "okay" n r-1 (pubk a)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (r r-0 r-1 y3 text) (a name))
+  (defstrand init 2 (n r-0) (r r) (r-0 r-0) (r-1 r-1) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r-0) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig r-0)
+  (operation nonce-test (added-strand resp 2) r-0 (0 1)
+    (enc r-0 r (pubk a)) (enc r-0 r-0 (pubk a)))
+  (strand-map 0)
+  (traces
+    ((send (cat (enc r-0 r (pubk a)) (enc r-0 r-0 (pubk a))))
+      (recv (enc "okay" r-0 r-1 (pubk a))))
+    ((recv (enc r-0 r-0 (pubk a))) (send (enc "okay" y3 r-0 (pubk a)))))
+  (label 1)
+  (parent 0)
+  (unrealized (0 1))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (n r r-0 r-1 y3 text) (a name))
+  (defstrand init 2 (n n) (r r) (r-0 r-0) (r-1 r-1) (a a))
+  (defstrand resp 2 (y1 n) (y2 r) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (operation nonce-test (added-strand resp 2) n (0 1) (enc n r (pubk a))
+    (enc r-0 n (pubk a)))
+  (strand-map 0)
+  (traces
+    ((send (cat (enc n r (pubk a)) (enc r-0 n (pubk a))))
+      (recv (enc "okay" n r-1 (pubk a))))
+    ((recv (enc n r (pubk a))) (send (enc "okay" y3 n (pubk a)))))
+  (label 2)
+  (parent 0)
+  (seen 5)
+  (seen-ops
+    (5
+      (operation nonce-test (added-strand resp 2) r-0 (0 1)
+        (enc "okay" y3 r-0 (pubk a)) (enc r-0 r (pubk a))
+        (enc r-0 r-0 (pubk a))) (strand-map 0 2)))
+  (unrealized (0 1))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (r y3 text) (a name))
+  (defstrand init 2 (n y3) (r r) (r-0 y3) (r-1 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (r-0 y3) (r-1 y3)) y3 (0 1)
+    (enc "okay" y3 y3 (pubk a)) (enc y3 r (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc y3 r (pubk a)) (enc y3 y3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 3)
+  (parent 1)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (r r-0 r-1 y3 text) (a name))
+  (defstrand init 2 (n r-0) (r r) (r-0 r-0) (r-1 r-1) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r-0) (y3 r-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig r-0)
+  (operation nonce-test (added-strand resp 2) r-0 (0 1)
+    (enc "okay" y3 r-0 (pubk a)) (enc r-0 r (pubk a))
+    (enc r-0 r-0 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc r-0 r (pubk a)) (enc r-0 r-0 (pubk a))))
+      (recv (enc "okay" r-0 r-1 (pubk a))))
+    ((recv (enc r-0 r-0 (pubk a))) (send (enc "okay" y3 r-0 (pubk a))))
+    ((recv (enc r-0 r-0 (pubk a)))
+      (send (enc "okay" r-0 r-0 (pubk a)))))
+  (label 4)
+  (parent 1)
+  (unrealized (0 1))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (r r-0 r-1 y3 y3-0 text) (a name))
+  (defstrand init 2 (n r-0) (r r) (r-0 r-0) (r-1 r-1) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig r-0)
+  (operation nonce-test (added-strand resp 2) r-0 (0 1)
+    (enc "okay" y3 r-0 (pubk a)) (enc r-0 r (pubk a))
+    (enc r-0 r-0 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc r-0 r (pubk a)) (enc r-0 r-0 (pubk a))))
+      (recv (enc "okay" r-0 r-1 (pubk a))))
+    ((recv (enc r-0 r-0 (pubk a))) (send (enc "okay" y3 r-0 (pubk a))))
+    ((recv (enc r-0 r (pubk a))) (send (enc "okay" y3-0 r-0 (pubk a)))))
+  (label 5)
+  (parent 1)
+  (seen 10)
+  (seen-ops
+    (10
+      (operation nonce-test (added-strand resp 2) r-0 (0 1)
+        (enc "okay" y3 r-0 (pubk a)) (enc "okay" y3-0 r-0 (pubk a))
+        (enc r-0 r (pubk a)) (enc r-0 r-0 (pubk a)))
+      (strand-map 0 1 3)))
+  (unrealized (0 1))
+  (comment "4 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (r r-0 y3 text) (a name))
+  (defstrand init 2 (n y3) (r r) (r-0 r-0) (r-1 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 r) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (n y3) (r-1 y3)) y3 (0 1)
+    (enc "okay" y3 y3 (pubk a)) (enc r-0 y3 (pubk a))
+    (enc y3 r (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc y3 r (pubk a)) (enc r-0 y3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 r (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 6)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (n y3) (r r) (r-0 r-0) (r-1 y3))))
+  (origs (y3 (0 0))))
+
+(defskeleton wonthull2
+  (vars (n r r-0 r-1 y3 text) (a name))
+  (defstrand init 2 (n n) (r r) (r-0 r-0) (r-1 r-1) (a a))
+  (defstrand resp 2 (y1 n) (y2 r) (y3 y3) (a a))
+  (defstrand resp 2 (y1 n) (y2 r) (y3 r-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (operation nonce-test (added-strand resp 2) n (0 1)
+    (enc "okay" y3 n (pubk a)) (enc n r (pubk a)) (enc r-0 n (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc n r (pubk a)) (enc r-0 n (pubk a))))
+      (recv (enc "okay" n r-1 (pubk a))))
+    ((recv (enc n r (pubk a))) (send (enc "okay" y3 n (pubk a))))
+    ((recv (enc n r (pubk a))) (send (enc "okay" r-0 n (pubk a)))))
+  (label 7)
+  (parent 2)
+  (seen 13)
+  (seen-ops
+    (13
+      (operation nonce-test (added-strand resp 2) r-0 (0 1)
+        (enc "okay" r-0 r-0 (pubk a)) (enc "okay" y3 r-0 (pubk a))
+        (enc r-0 r (pubk a)) (enc r-0 r-0 (pubk a)))
+      (strand-map 0 2 3)))
+  (unrealized (0 1))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (r y3 y3-0 text) (a name))
+  (defstrand init 2 (n y3) (r r) (r-0 y3-0) (r-1 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation generalization separated y3-0)
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc y3 r (pubk a)) (enc y3-0 y3 (pubk a))))
+      (recv (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3 (pubk a)))
+      (send (enc "okay" y3 y3-0 (pubk a)))))
+  (label 8)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (n y3) (r r) (r-0 y3-0) (r-1 y3-0))))
+  (origs (y3 (0 0))))
+
+(defskeleton wonthull2
+  (vars (r r-0 y3 text) (a name))
+  (defstrand init 2 (n r-0) (r r) (r-0 r-0) (r-1 r-0) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r-0) (y3 r-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig r-0)
+  (operation nonce-test (contracted (r-1 r-0)) r-0 (0 1)
+    (enc "okay" r-0 r-0 (pubk a)) (enc "okay" y3 r-0 (pubk a))
+    (enc r-0 r (pubk a)) (enc r-0 r-0 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc r-0 r (pubk a)) (enc r-0 r-0 (pubk a))))
+      (recv (enc "okay" r-0 r-0 (pubk a))))
+    ((recv (enc r-0 r-0 (pubk a))) (send (enc "okay" y3 r-0 (pubk a))))
+    ((recv (enc r-0 r-0 (pubk a)))
+      (send (enc "okay" r-0 r-0 (pubk a)))))
+  (label 9)
+  (parent 4)
+  (seen 3)
+  (seen-ops
+    (3 (operation generalization deleted (1 0)) (strand-map 0 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (r r-0 r-1 y3 y3-0 text) (a name))
+  (defstrand init 2 (n r-0) (r r) (r-0 r-0) (r-1 r-1) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r-0) (y3 r-0) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig r-0)
+  (operation nonce-test (added-strand resp 2) r-0 (0 1)
+    (enc "okay" r-0 r-0 (pubk a)) (enc "okay" y3 r-0 (pubk a))
+    (enc r-0 r (pubk a)) (enc r-0 r-0 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc r-0 r (pubk a)) (enc r-0 r-0 (pubk a))))
+      (recv (enc "okay" r-0 r-1 (pubk a))))
+    ((recv (enc r-0 r-0 (pubk a))) (send (enc "okay" y3 r-0 (pubk a))))
+    ((recv (enc r-0 r-0 (pubk a))) (send (enc "okay" r-0 r-0 (pubk a))))
+    ((recv (enc r-0 r (pubk a))) (send (enc "okay" y3-0 r-0 (pubk a)))))
+  (label 10)
+  (parent 4)
+  (unrealized (0 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (r y3 y3-0 text) (a name))
+  (defstrand init 2 (n y3-0) (r r) (r-0 y3-0) (r-1 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 r) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (contracted (r-0 y3-0) (r-1 y3-0)) y3-0 (0 1)
+    (enc "okay" y3 y3-0 (pubk a)) (enc "okay" y3-0 y3-0 (pubk a))
+    (enc y3-0 r (pubk a)) (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc y3-0 r (pubk a)) (enc y3-0 y3-0 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 r (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a)))))
+  (label 11)
+  (parent 5)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (r y3 y3-0 text) (a name))
+  (defstrand init 2 (n y3) (r r) (r-0 y3) (r-1 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 r) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (r-0 y3) (r-1 y3)) y3 (0 1)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc y3 r (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc y3 r (pubk a)) (enc y3 y3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 r (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 12)
+  (parent 5)
+  (seen 3)
+  (seen-ops
+    (3 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (r r-0 r-1 y3 y3-0 text) (a name))
+  (defstrand init 2 (n r-0) (r r) (r-0 r-0) (r-1 r-1) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r) (y3 r-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig r-0)
+  (operation nonce-test (added-strand resp 2) r-0 (0 1)
+    (enc "okay" y3 r-0 (pubk a)) (enc "okay" y3-0 r-0 (pubk a))
+    (enc r-0 r (pubk a)) (enc r-0 r-0 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc r-0 r (pubk a)) (enc r-0 r-0 (pubk a))))
+      (recv (enc "okay" r-0 r-1 (pubk a))))
+    ((recv (enc r-0 r-0 (pubk a))) (send (enc "okay" y3 r-0 (pubk a))))
+    ((recv (enc r-0 r (pubk a))) (send (enc "okay" y3-0 r-0 (pubk a))))
+    ((recv (enc r-0 r (pubk a))) (send (enc "okay" r-0 r-0 (pubk a)))))
+  (label 13)
+  (parent 5)
+  (unrealized (0 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (r r-0 y3 text) (a name))
+  (defstrand init 2 (n r-0) (r r) (r-0 r-0) (r-1 r-0) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r) (y3 y3) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r) (y3 r-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig r-0)
+  (operation nonce-test (contracted (n r-0) (r-1 r-0)) r-0 (0 1)
+    (enc "okay" r-0 r-0 (pubk a)) (enc "okay" y3 r-0 (pubk a))
+    (enc r-0 r (pubk a)) (enc r-0 r-0 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc r-0 r (pubk a)) (enc r-0 r-0 (pubk a))))
+      (recv (enc "okay" r-0 r-0 (pubk a))))
+    ((recv (enc r-0 r (pubk a))) (send (enc "okay" y3 r-0 (pubk a))))
+    ((recv (enc r-0 r (pubk a))) (send (enc "okay" r-0 r-0 (pubk a)))))
+  (label 14)
+  (parent 7)
+  (seen 17)
+  (seen-ops
+    (17 (operation generalization deleted (1 0)) (strand-map 0 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (r r-0 y3 text) (a name))
+  (defstrand init 2 (n y3) (r r) (r-0 r-0) (r-1 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 r) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 r) (y3 r-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (n y3) (r-1 y3)) y3 (0 1)
+    (enc "okay" r-0 y3 (pubk a)) (enc "okay" y3 y3 (pubk a))
+    (enc r-0 y3 (pubk a)) (enc y3 r (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc y3 r (pubk a)) (enc r-0 y3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 r (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 r (pubk a))) (send (enc "okay" r-0 y3 (pubk a)))))
+  (label 15)
+  (parent 7)
+  (seen 6)
+  (seen-ops
+    (6 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (r r-0 y3 y3-0 text) (a name))
+  (defstrand init 2 (n r-0) (r r) (r-0 r-0) (r-1 r-0) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r-0) (y3 r-0) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig r-0)
+  (operation nonce-test (contracted (r-1 r-0)) r-0 (0 1)
+    (enc "okay" r-0 r-0 (pubk a)) (enc "okay" y3 r-0 (pubk a))
+    (enc "okay" y3-0 r-0 (pubk a)) (enc r-0 r (pubk a))
+    (enc r-0 r-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc r-0 r (pubk a)) (enc r-0 r-0 (pubk a))))
+      (recv (enc "okay" r-0 r-0 (pubk a))))
+    ((recv (enc r-0 r-0 (pubk a))) (send (enc "okay" y3 r-0 (pubk a))))
+    ((recv (enc r-0 r-0 (pubk a))) (send (enc "okay" r-0 r-0 (pubk a))))
+    ((recv (enc r-0 r (pubk a))) (send (enc "okay" y3-0 r-0 (pubk a)))))
+  (label 16)
+  (parent 10)
+  (seen 12)
+  (seen-ops
+    (12 (operation generalization deleted (1 0)) (strand-map 0 2 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (r y3 text) (a name))
+  (defstrand init 2 (n y3) (r r) (r-0 y3) (r-1 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 r) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation generalization deleted (1 0))
+  (strand-map 0 2)
+  (traces
+    ((send (cat (enc y3 r (pubk a)) (enc y3 y3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 r (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 17)
+  (parent 11)
+  (seen 6)
+  (seen-ops
+    (6 (operation generalization separated y3-0) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (r r-0 y3 y3-0 text) (a name))
+  (defstrand init 2 (n r-0) (r r) (r-0 r-0) (r-1 r-0) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 r-0) (y2 r) (y3 r-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig r-0)
+  (operation nonce-test (contracted (r-1 r-0)) r-0 (0 1)
+    (enc "okay" r-0 r-0 (pubk a)) (enc "okay" y3 r-0 (pubk a))
+    (enc "okay" y3-0 r-0 (pubk a)) (enc r-0 r (pubk a))
+    (enc r-0 r-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc r-0 r (pubk a)) (enc r-0 r-0 (pubk a))))
+      (recv (enc "okay" r-0 r-0 (pubk a))))
+    ((recv (enc r-0 r-0 (pubk a))) (send (enc "okay" y3 r-0 (pubk a))))
+    ((recv (enc r-0 r (pubk a))) (send (enc "okay" y3-0 r-0 (pubk a))))
+    ((recv (enc r-0 r (pubk a))) (send (enc "okay" r-0 r-0 (pubk a)))))
+  (label 18)
+  (parent 13)
+  (seen 14)
+  (seen-ops
+    (14 (operation generalization deleted (1 0)) (strand-map 0 2 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(comment "Nothing left to do")
diff --git a/tst/incompleteness_example.tst b/tst/incompleteness_example.tst
--- a/tst/incompleteness_example.tst
+++ b/tst/incompleteness_example.tst
@@ -1,7 +1,7 @@
 (herald incompleteness-example
   (comment "Shows a shape not found by CPSA"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/incompleteness_example.scm")
 
 (defprotocol incompleteness-example basic
diff --git a/tst/incompleteness_example_shapes.tst b/tst/incompleteness_example_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/incompleteness_example_shapes.tst
@@ -0,0 +1,69 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald incompleteness-example
+  (comment "Shows a shape not found by CPSA"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/incompleteness_example.scm")
+
+(defprotocol incompleteness-example basic
+  (defrole init
+    (vars (k akey) (n text))
+    (trace (send (enc n k)) (recv n))
+    (uniq-orig n))
+  (defrole resp
+    (vars (k akey) (n1 n2 text))
+    (trace (recv (enc n1 k)) (send n2)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton incompleteness-example
+  (vars (n text) (k akey))
+  (defstrand init 2 (n n) (k k))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (traces ((send (enc n k)) (recv n)))
+  (label 0)
+  (unrealized (0 1))
+  (dead)
+  (origs (n (0 0)))
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol incompleteness-example basic
+  (defrole init
+    (vars (k akey) (n text))
+    (trace (send (enc n k)) (recv n))
+    (uniq-orig n))
+  (defrole resp
+    (vars (k akey) (n1 n2 text))
+    (trace (recv (enc n1 k)) (send n2)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton incompleteness-example
+  (vars (n text) (k akey))
+  (defstrand init 2 (n n) (k k))
+  (defstrand resp 2 (n1 n) (n2 n) (k k))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-orig n)
+  (comment "A shape compatible with the first problem in this run")
+  (traces ((send (enc n k)) (recv n)) ((recv (enc n k)) (send n)))
+  (label 1)
+  (realized)
+  (shape)
+  (maps ((0 1) ((k k) (n n))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/isoreject-corrected.tst b/tst/isoreject-corrected.tst
--- a/tst/isoreject-corrected.tst
+++ b/tst/isoreject-corrected.tst
@@ -1,6 +1,6 @@
 (herald isoreject-corrected)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/isoreject-corrected.scm")
 
 (defprotocol isofix basic
@@ -42,6 +42,7 @@
   (uniq-orig nb)
   (operation encryption-test (added-strand init 3)
     (enc "second" nc nb b (privk a)) (0 2))
+  (strand-map 0)
   (traces
     ((recv (cat a na)) (send (enc "first" nb na a (privk b)))
       (recv (enc "second" nc nb b (privk a))))
@@ -61,6 +62,7 @@
   (uniq-orig nb)
   (operation encryption-test (displaced 2 0 resp 2)
     (enc "first" nb na-0 a (privk b)) (1 1))
+  (strand-map 0 1)
   (traces
     ((recv (cat a na)) (send (enc "first" nb na a (privk b)))
       (recv (enc "second" nc nb b (privk a))))
@@ -113,6 +115,7 @@
   (uniq-orig nb)
   (operation encryption-test (added-strand resp 2)
     (enc "first" nb na a (privk b)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat a na)) (recv (enc "first" nb na a (privk b)))
       (send (enc "second" nc nb b (privk a))))
diff --git a/tst/isoreject-corrected_shapes.tst b/tst/isoreject-corrected_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/isoreject-corrected_shapes.tst
@@ -0,0 +1,112 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald isoreject-corrected)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/isoreject-corrected.scm")
+
+(defprotocol isofix basic
+  (defrole init
+    (vars (a b name) (na nb nc text))
+    (trace (send (cat a na)) (recv (enc "first" nb na a (privk b)))
+      (send (enc "second" nc nb b (privk a)))))
+  (defrole resp
+    (vars (a b name) (na nb nc text))
+    (trace (recv (cat a na)) (send (enc "first" nb na a (privk b)))
+      (recv (enc "second" nc nb b (privk a))))
+    (uniq-orig nb))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton isofix
+  (vars (na nb nc text) (a b name))
+  (defstrand resp 3 (na na) (nb nb) (nc nc) (a a) (b b))
+  (non-orig (privk a) (privk b))
+  (uniq-orig nb)
+  (traces
+    ((recv (cat a na)) (send (enc "first" nb na a (privk b)))
+      (recv (enc "second" nc nb b (privk a)))))
+  (label 0)
+  (unrealized (0 2))
+  (origs (nb (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton isofix
+  (vars (na nb nc text) (a b name))
+  (defstrand resp 3 (na na) (nb nb) (nc nc) (a a) (b b))
+  (defstrand init 3 (na na) (nb nb) (nc nc) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig nb)
+  (operation encryption-test (displaced 2 0 resp 2)
+    (enc "first" nb na-0 a (privk b)) (1 1))
+  (traces
+    ((recv (cat a na)) (send (enc "first" nb na a (privk b)))
+      (recv (enc "second" nc nb b (privk a))))
+    ((send (cat a na)) (recv (enc "first" nb na a (privk b)))
+      (send (enc "second" nc nb b (privk a)))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (na na) (nb nb) (nc nc))))
+  (origs (nb (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol isofix basic
+  (defrole init
+    (vars (a b name) (na nb nc text))
+    (trace (send (cat a na)) (recv (enc "first" nb na a (privk b)))
+      (send (enc "second" nc nb b (privk a)))))
+  (defrole resp
+    (vars (a b name) (na nb nc text))
+    (trace (recv (cat a na)) (send (enc "first" nb na a (privk b)))
+      (recv (enc "second" nc nb b (privk a))))
+    (uniq-orig nb))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton isofix
+  (vars (na nb nc text) (b a name))
+  (defstrand init 3 (na na) (nb nb) (nc nc) (a a) (b b))
+  (non-orig (privk b))
+  (traces
+    ((send (cat a na)) (recv (enc "first" nb na a (privk b)))
+      (send (enc "second" nc nb b (privk a)))))
+  (label 3)
+  (unrealized (0 1))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton isofix
+  (vars (na nb nc text) (b a name))
+  (defstrand init 3 (na na) (nb nb) (nc nc) (a a) (b b))
+  (defstrand resp 2 (na na) (nb nb) (a a) (b b))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk b))
+  (uniq-orig nb)
+  (operation encryption-test (added-strand resp 2)
+    (enc "first" nb na a (privk b)) (0 1))
+  (traces
+    ((send (cat a na)) (recv (enc "first" nb na a (privk b)))
+      (send (enc "second" nc nb b (privk a))))
+    ((recv (cat a na)) (send (enc "first" nb na a (privk b)))))
+  (label 4)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (a a) (na na) (nb nb) (nc nc))))
+  (origs (nb (1 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/isoreject.tst b/tst/isoreject.tst
--- a/tst/isoreject.tst
+++ b/tst/isoreject.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/isoreject.scm")
 
 (defprotocol isoreject basic
@@ -40,6 +40,7 @@
   (uniq-orig nb)
   (operation encryption-test (added-strand init 3)
     (enc nc nb b (privk a)) (0 2))
+  (strand-map 0)
   (traces
     ((recv (cat a na)) (send (enc nb na a (privk b)))
       (recv (enc nc nb b (privk a))))
@@ -59,6 +60,7 @@
   (uniq-orig nb nc)
   (operation encryption-test (added-strand resp 2)
     (enc nc nb b (privk a)) (0 2))
+  (strand-map 0)
   (traces
     ((recv (cat a na)) (send (enc nb na a (privk b)))
       (recv (enc nc nb b (privk a))))
@@ -79,6 +81,7 @@
   (uniq-orig nb)
   (operation encryption-test (displaced 2 0 resp 2)
     (enc nb na-0 a (privk b)) (1 1))
+  (strand-map 0 1)
   (traces
     ((recv (cat a na)) (send (enc nb na a (privk b)))
       (recv (enc nc nb b (privk a))))
@@ -130,6 +133,7 @@
   (non-orig (privk b))
   (operation encryption-test (added-strand init 3)
     (enc nb na a (privk b)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat a na)) (recv (enc nb na a (privk b)))
       (send (enc nc nb b (privk a))))
@@ -151,6 +155,7 @@
   (uniq-orig nb)
   (operation encryption-test (added-strand resp 2)
     (enc nb na a (privk b)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat a na)) (recv (enc nb na a (privk b)))
       (send (enc nc nb b (privk a))))
diff --git a/tst/isoreject_shapes.tst b/tst/isoreject_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/isoreject_shapes.tst
@@ -0,0 +1,150 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/isoreject.scm")
+
+(defprotocol isoreject basic
+  (defrole init
+    (vars (a b name) (na nb nc text))
+    (trace (send (cat a na)) (recv (enc nb na a (privk b)))
+      (send (enc nc nb b (privk a)))))
+  (defrole resp
+    (vars (a b name) (na nb nc text))
+    (trace (recv (cat a na)) (send (enc nb na a (privk b)))
+      (recv (enc nc nb b (privk a))))
+    (uniq-orig nb))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton isoreject
+  (vars (na nb nc text) (a b name))
+  (defstrand resp 3 (na na) (nb nb) (nc nc) (a a) (b b))
+  (non-orig (privk a) (privk b))
+  (uniq-orig nb)
+  (traces
+    ((recv (cat a na)) (send (enc nb na a (privk b)))
+      (recv (enc nc nb b (privk a)))))
+  (label 0)
+  (unrealized (0 2))
+  (origs (nb (0 1)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton isoreject
+  (vars (na nb nc text) (a b name))
+  (defstrand resp 3 (na na) (nb nb) (nc nc) (a a) (b b))
+  (defstrand resp 2 (na nb) (nb nc) (a b) (b a))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig nb nc)
+  (operation encryption-test (added-strand resp 2)
+    (enc nc nb b (privk a)) (0 2))
+  (traces
+    ((recv (cat a na)) (send (enc nb na a (privk b)))
+      (recv (enc nc nb b (privk a))))
+    ((recv (cat b nb)) (send (enc nc nb b (privk a)))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (na na) (nb nb) (nc nc))))
+  (origs (nc (1 1)) (nb (0 1))))
+
+(defskeleton isoreject
+  (vars (na nb nc text) (a b name))
+  (defstrand resp 3 (na na) (nb nb) (nc nc) (a a) (b b))
+  (defstrand init 3 (na na) (nb nb) (nc nc) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig nb)
+  (operation encryption-test (displaced 2 0 resp 2)
+    (enc nb na-0 a (privk b)) (1 1))
+  (traces
+    ((recv (cat a na)) (send (enc nb na a (privk b)))
+      (recv (enc nc nb b (privk a))))
+    ((send (cat a na)) (recv (enc nb na a (privk b)))
+      (send (enc nc nb b (privk a)))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (na na) (nb nb) (nc nc))))
+  (origs (nb (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol isoreject basic
+  (defrole init
+    (vars (a b name) (na nb nc text))
+    (trace (send (cat a na)) (recv (enc nb na a (privk b)))
+      (send (enc nc nb b (privk a)))))
+  (defrole resp
+    (vars (a b name) (na nb nc text))
+    (trace (recv (cat a na)) (send (enc nb na a (privk b)))
+      (recv (enc nc nb b (privk a))))
+    (uniq-orig nb))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton isoreject
+  (vars (na nb nc text) (b a name))
+  (defstrand init 3 (na na) (nb nb) (nc nc) (a a) (b b))
+  (non-orig (privk b))
+  (traces
+    ((send (cat a na)) (recv (enc nb na a (privk b)))
+      (send (enc nc nb b (privk a)))))
+  (label 4)
+  (unrealized (0 1))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton isoreject
+  (vars (na nb nc na-0 text) (b a name))
+  (defstrand init 3 (na na) (nb nb) (nc nc) (a a) (b b))
+  (defstrand init 3 (na na-0) (nb na) (nc nb) (a b) (b a))
+  (precedes ((1 2) (0 1)))
+  (non-orig (privk b))
+  (operation encryption-test (added-strand init 3)
+    (enc nb na a (privk b)) (0 1))
+  (traces
+    ((send (cat a na)) (recv (enc nb na a (privk b)))
+      (send (enc nc nb b (privk a))))
+    ((send (cat b na-0)) (recv (enc na na-0 b (privk a)))
+      (send (enc nb na a (privk b)))))
+  (label 5)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (a a) (na na) (nb nb) (nc nc))))
+  (origs))
+
+(defskeleton isoreject
+  (vars (na nb nc text) (b a name))
+  (defstrand init 3 (na na) (nb nb) (nc nc) (a a) (b b))
+  (defstrand resp 2 (na na) (nb nb) (a a) (b b))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk b))
+  (uniq-orig nb)
+  (operation encryption-test (added-strand resp 2)
+    (enc nb na a (privk b)) (0 1))
+  (traces
+    ((send (cat a na)) (recv (enc nb na a (privk b)))
+      (send (enc nc nb b (privk a))))
+    ((recv (cat a na)) (send (enc nb na a (privk b)))))
+  (label 6)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (a a) (na na) (nb nb) (nc nc))))
+  (origs (nb (1 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/jdg-neuman-stubblebine-reauth.tst b/tst/jdg-neuman-stubblebine-reauth.tst
deleted file mode 100644
--- a/tst/jdg-neuman-stubblebine-reauth.tst
+++ /dev/null
@@ -1,2550 +0,0 @@
-(herald jdg-neuman-stubblebine-reauth (bound 8))
-
-(comment "CPSA 4.3.0")
-(comment "All input read from tst/jdg-neuman-stubblebine-reauth.lsp")
-
-(defprotocol neuman-stubblebine basic
-  (defrole init
-    (vars (a b ks name) (ra rb text) (k skey) (tb text) (tkt mesg))
-    (trace (send (cat a ra))
-      (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
-      (send (cat tkt (enc rb k)))))
-  (defrole resp
-    (vars (a b ks name) (ra rb text) (k skey) (tb text))
-    (trace (recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
-  (defrole keyserver
-    (vars (a b ks name) (ra rb text) (k skey) (tb text))
-    (trace (recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    (uniq-orig k))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton neuman-stubblebine
-  (vars (ra tb rb text) (a b ks name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
-  (label 0)
-  (unrealized (0 2))
-  (origs (rb (0 1)))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine
-  (vars (ra tb rb ra-0 rb-0 text) (a b ks name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (precedes ((1 1) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (added-strand keyserver 2)
-    (enc a k tb (ltk b ks)) (0 2))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
-      (send
-        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
-          rb-0))))
-  (label 1)
-  (parent 0)
-  (unrealized (0 2) (1 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton neuman-stubblebine
-  (vars (ra tb rb rb-0 text) (a b ks name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (displaced 2 0 resp 2)
-    (enc a ra-0 tb (ltk b ks)) (1 0))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0))))
-  (label 2)
-  (parent 1)
-  (unrealized (0 2))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton neuman-stubblebine
-  (vars (ra tb rb ra-0 rb-0 rb-1 text) (a b ks name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
-  (precedes ((1 1) (0 2)) ((2 1) (1 0)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (added-strand resp 2)
-    (enc a ra-0 tb (ltk b ks)) (1 0))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
-      (send
-        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
-          rb-0)))
-    ((recv (cat a ra-0))
-      (send (cat b rb-1 (enc a ra-0 tb (ltk b ks))))))
-  (label 3)
-  (parent 1)
-  (unrealized (0 2))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton neuman-stubblebine
-  (vars (tkt mesg) (ra tb rb rb-0 ra-0 tb-0 text)
-    (a b ks a-0 b-0 ks-0 name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand init 3 (tkt tkt) (ra ra-0) (rb rb) (tb tb-0) (a a-0)
-    (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (1 0)) ((1 1) (2 1)) ((2 2) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
-    ((send (cat a-0 ra-0))
-      (recv (cat (enc b-0 ra-0 k tb-0 (ltk a-0 ks-0)) tkt rb))
-      (send (cat tkt (enc rb k)))))
-  (label 4)
-  (parent 2)
-  (unrealized (2 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine
-  (vars (ra tb rb rb-0 text) (a b ks name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (deflistener k)
-  (precedes ((0 1) (1 0)) ((1 1) (2 0)) ((2 1) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (added-listener k) (enc rb k) (0 2))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
-    ((recv k) (send k)))
-  (label 5)
-  (parent 2)
-  (unrealized (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton neuman-stubblebine
-  (vars (tkt mesg) (ra tb rb ra-0 rb-0 rb-1 ra-1 tb-0 text)
-    (a b ks a-0 b-0 ks-0 name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init 3 (tkt tkt) (ra ra-1) (rb rb) (tb tb-0) (a a-0)
-    (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (3 1)) ((1 1) (3 1)) ((2 1) (1 0)) ((3 2) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
-      (send
-        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
-          rb-0)))
-    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
-    ((send (cat a-0 ra-1))
-      (recv (cat (enc b-0 ra-1 k tb-0 (ltk a-0 ks-0)) tkt rb))
-      (send (cat tkt (enc rb k)))))
-  (label 6)
-  (parent 3)
-  (unrealized (3 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine
-  (vars (ra tb rb ra-0 rb-0 rb-1 text) (a b ks name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
-  (deflistener k)
-  (precedes ((1 1) (3 0)) ((2 1) (1 0)) ((3 1) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (added-listener k) (enc rb k) (0 2))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
-      (send
-        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
-          rb-0)))
-    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
-    ((recv k) (send k)))
-  (label 7)
-  (parent 3)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton neuman-stubblebine
-  (vars (tkt mesg) (ra tb rb rb-0 text) (a b ks name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand init 3 (tkt tkt) (ra ra) (rb rb) (tb tb) (a a) (b b)
-    (ks ks) (k k))
-  (precedes ((0 1) (1 0)) ((1 1) (2 1)) ((2 0) (0 0)) ((2 2) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation nonce-test
-    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-0 ra) (tb-0 tb)) k (2 1)
-    (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
-    ((send (cat a ra)) (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
-      (send (cat tkt (enc rb k)))))
-  (label 8)
-  (parent 4)
-  (realized)
-  (shape)
-  (maps ((0) ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k))))
-  (origs (k (1 1)) (ra (2 0)) (rb (0 1))))
-
-(defskeleton neuman-stubblebine
-  (vars (tkt mesg) (ra tb rb ra-0 rb-0 rb-1 text) (a b ks name)
-    (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init 3 (tkt tkt) (ra ra-0) (rb rb) (tb tb) (a a) (b b)
-    (ks ks) (k k))
-  (precedes ((0 1) (3 1)) ((1 1) (3 1)) ((2 1) (1 0)) ((3 2) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation nonce-test
-    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-1 ra-0) (tb-0 tb)) k (3 1)
-    (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
-      (send
-        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
-          rb-0)))
-    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
-    ((send (cat a ra-0))
-      (recv (cat (enc b ra-0 k tb (ltk a ks)) tkt rb))
-      (send (cat tkt (enc rb k)))))
-  (label 9)
-  (parent 6)
-  (realized)
-  (shape)
-  (maps ((0) ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k))))
-  (origs (k (1 1)) (rb (0 1))))
-
-(comment "Nothing left to do")
-
-(defprotocol neuman-stubblebine basic
-  (defrole init
-    (vars (a b ks name) (ra rb text) (k skey) (tb text) (tkt mesg))
-    (trace (send (cat a ra))
-      (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
-      (send (cat tkt (enc rb k)))))
-  (defrole resp
-    (vars (a b ks name) (ra rb text) (k skey) (tb text))
-    (trace (recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
-  (defrole keyserver
-    (vars (a b ks name) (ra rb text) (k skey) (tb text))
-    (trace (recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    (uniq-orig k))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton neuman-stubblebine
-  (vars (tkt mesg) (ra tb rb text) (a b ks name) (k skey))
-  (defstrand init 3 (tkt tkt) (ra ra) (rb rb) (tb tb) (a a) (b b)
-    (ks ks) (k k))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (traces
-    ((send (cat a ra)) (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
-      (send (cat tkt (enc rb k)))))
-  (label 10)
-  (unrealized (0 1))
-  (origs (ra (0 0)))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine
-  (vars (tkt mesg) (ra tb rb rb-0 text) (a b ks name) (k skey))
-  (defstrand init 3 (tkt tkt) (ra ra) (rb rb) (tb tb) (a a) (b b)
-    (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (added-strand keyserver 2)
-    (enc b ra k tb (ltk a ks)) (0 1))
-  (traces
-    ((send (cat a ra)) (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
-      (send (cat tkt (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0))))
-  (label 11)
-  (parent 10)
-  (unrealized (1 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine
-  (vars (tkt mesg) (ra tb rb rb-0 rb-1 text) (a b ks name) (k skey))
-  (defstrand init 3 (tkt tkt) (ra ra) (rb rb) (tb tb) (a a) (b b)
-    (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (added-strand resp 2)
-    (enc a ra tb (ltk b ks)) (1 0))
-  (traces
-    ((send (cat a ra)) (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
-      (send (cat tkt (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
-    ((recv (cat a ra)) (send (cat b rb-1 (enc a ra tb (ltk b ks))))))
-  (label 12)
-  (parent 11)
-  (realized)
-  (shape)
-  (maps
-    ((0) ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k) (tkt tkt))))
-  (origs (k (1 1)) (ra (0 0))))
-
-(comment "Nothing left to do")
-
-(defprotocol neuman-stubblebine basic
-  (defrole init
-    (vars (a b ks name) (ra rb text) (k skey) (tb text) (tkt mesg))
-    (trace (send (cat a ra))
-      (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
-      (send (cat tkt (enc rb k)))))
-  (defrole resp
-    (vars (a b ks name) (ra rb text) (k skey) (tb text))
-    (trace (recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
-  (defrole keyserver
-    (vars (a b ks name) (ra rb text) (k skey) (tb text))
-    (trace (recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    (uniq-orig k))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton neuman-stubblebine
-  (vars (ra tb rb text) (a b ks name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
-  (label 13)
-  (unrealized (0 2))
-  (origs (rb (0 1)))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine
-  (vars (ra tb rb ra-0 rb-0 text) (a b ks name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (precedes ((1 1) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (added-strand keyserver 2)
-    (enc a k tb (ltk b ks)) (0 2))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
-      (send
-        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
-          rb-0))))
-  (label 14)
-  (parent 13)
-  (unrealized (0 2) (1 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton neuman-stubblebine
-  (vars (ra tb rb rb-0 text) (a b ks name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (displaced 2 0 resp 2)
-    (enc a ra-0 tb (ltk b ks)) (1 0))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0))))
-  (label 15)
-  (parent 14)
-  (unrealized (0 2))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton neuman-stubblebine
-  (vars (ra tb rb ra-0 rb-0 rb-1 text) (a b ks name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
-  (precedes ((1 1) (0 2)) ((2 1) (1 0)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (added-strand resp 2)
-    (enc a ra-0 tb (ltk b ks)) (1 0))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
-      (send
-        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
-          rb-0)))
-    ((recv (cat a ra-0))
-      (send (cat b rb-1 (enc a ra-0 tb (ltk b ks))))))
-  (label 16)
-  (parent 14)
-  (unrealized (0 2))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton neuman-stubblebine
-  (vars (tkt mesg) (ra tb rb rb-0 ra-0 tb-0 text)
-    (a b ks a-0 b-0 ks-0 name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand init 3 (tkt tkt) (ra ra-0) (rb rb) (tb tb-0) (a a-0)
-    (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (1 0)) ((1 1) (2 1)) ((2 2) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
-    ((send (cat a-0 ra-0))
-      (recv (cat (enc b-0 ra-0 k tb-0 (ltk a-0 ks-0)) tkt rb))
-      (send (cat tkt (enc rb k)))))
-  (label 17)
-  (parent 15)
-  (unrealized (2 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine
-  (vars (ra tb rb rb-0 text) (a b ks name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (deflistener k)
-  (precedes ((0 1) (1 0)) ((1 1) (2 0)) ((2 1) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (added-listener k) (enc rb k) (0 2))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
-    ((recv k) (send k)))
-  (label 18)
-  (parent 15)
-  (unrealized (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton neuman-stubblebine
-  (vars (tkt mesg) (ra tb rb ra-0 rb-0 rb-1 ra-1 tb-0 text)
-    (a b ks a-0 b-0 ks-0 name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init 3 (tkt tkt) (ra ra-1) (rb rb) (tb tb-0) (a a-0)
-    (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (3 1)) ((1 1) (3 1)) ((2 1) (1 0)) ((3 2) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
-      (send
-        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
-          rb-0)))
-    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
-    ((send (cat a-0 ra-1))
-      (recv (cat (enc b-0 ra-1 k tb-0 (ltk a-0 ks-0)) tkt rb))
-      (send (cat tkt (enc rb k)))))
-  (label 19)
-  (parent 16)
-  (unrealized (3 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine
-  (vars (ra tb rb ra-0 rb-0 rb-1 text) (a b ks name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
-  (deflistener k)
-  (precedes ((1 1) (3 0)) ((2 1) (1 0)) ((3 1) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (added-listener k) (enc rb k) (0 2))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
-      (send
-        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
-          rb-0)))
-    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
-    ((recv k) (send k)))
-  (label 20)
-  (parent 16)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton neuman-stubblebine
-  (vars (tkt mesg) (ra tb rb rb-0 text) (a b ks name) (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand init 3 (tkt tkt) (ra ra) (rb rb) (tb tb) (a a) (b b)
-    (ks ks) (k k))
-  (precedes ((0 1) (1 0)) ((1 1) (2 1)) ((2 0) (0 0)) ((2 2) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation nonce-test
-    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-0 ra) (tb-0 tb)) k (2 1)
-    (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
-    ((send (cat a ra)) (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
-      (send (cat tkt (enc rb k)))))
-  (label 21)
-  (parent 17)
-  (realized)
-  (shape)
-  (maps ((0) ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k))))
-  (origs (k (1 1)) (ra (2 0)) (rb (0 1))))
-
-(defskeleton neuman-stubblebine
-  (vars (tkt mesg) (ra tb rb ra-0 rb-0 rb-1 text) (a b ks name)
-    (k skey))
-  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init 3 (tkt tkt) (ra ra-0) (rb rb) (tb tb) (a a) (b b)
-    (ks ks) (k k))
-  (precedes ((0 1) (3 1)) ((1 1) (3 1)) ((2 1) (1 0)) ((3 2) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation nonce-test
-    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-1 ra-0) (tb-0 tb)) k (3 1)
-    (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
-  (traces
-    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
-      (send
-        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
-          rb-0)))
-    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
-    ((send (cat a ra-0))
-      (recv (cat (enc b ra-0 k tb (ltk a ks)) tkt rb))
-      (send (cat tkt (enc rb k)))))
-  (label 22)
-  (parent 19)
-  (realized)
-  (shape)
-  (maps ((0) ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k))))
-  (origs (k (1 1)) (rb (0 1))))
-
-(comment "Nothing left to do")
-
-(defprotocol neuman-stubblebine basic
-  (defrole init
-    (vars (a b ks name) (ra rb text) (k skey) (tb text) (tkt mesg))
-    (trace (send (cat a ra))
-      (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
-      (send (cat tkt (enc rb k)))))
-  (defrole resp
-    (vars (a b ks name) (ra rb text) (k skey) (tb text))
-    (trace (recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
-  (defrole keyserver
-    (vars (a b ks name) (ra rb text) (k skey) (tb text))
-    (trace (recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    (uniq-orig k))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton neuman-stubblebine
-  (vars (tkt mesg) (ra tb rb text) (a b ks name) (k skey))
-  (defstrand init 3 (tkt tkt) (ra ra) (rb rb) (tb tb) (a a) (b b)
-    (ks ks) (k k))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (traces
-    ((send (cat a ra)) (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
-      (send (cat tkt (enc rb k)))))
-  (label 23)
-  (unrealized (0 1))
-  (origs (ra (0 0)))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine
-  (vars (tkt mesg) (ra tb rb rb-0 text) (a b ks name) (k skey))
-  (defstrand init 3 (tkt tkt) (ra ra) (rb rb) (tb tb) (a a) (b b)
-    (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (added-strand keyserver 2)
-    (enc b ra k tb (ltk a ks)) (0 1))
-  (traces
-    ((send (cat a ra)) (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
-      (send (cat tkt (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0))))
-  (label 24)
-  (parent 23)
-  (unrealized (1 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine
-  (vars (tkt mesg) (ra tb rb rb-0 rb-1 text) (a b ks name) (k skey))
-  (defstrand init 3 (tkt tkt) (ra ra) (rb rb) (tb tb) (a a) (b b)
-    (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra rb k)
-  (operation encryption-test (added-strand resp 2)
-    (enc a ra tb (ltk b ks)) (1 0))
-  (traces
-    ((send (cat a ra)) (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
-      (send (cat tkt (enc rb k))))
-    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
-    ((recv (cat a ra)) (send (cat b rb-1 (enc a ra tb (ltk b ks))))))
-  (label 25)
-  (parent 24)
-  (realized)
-  (shape)
-  (maps
-    ((0) ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k) (tkt tkt))))
-  (origs (k (1 1)) (ra (0 0))))
-
-(comment "Nothing left to do")
-
-(defprotocol neuman-stubblebine-reauth basic
-  (defrole init
-    (vars (a b ks name) (ra rb tb text) (k skey) (tkt mesg))
-    (trace (send (cat a ra))
-      (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
-      (send (cat tkt (enc rb k)))))
-  (defrole resp
-    (vars (a b ks name) (ra rb tb text) (k skey))
-    (trace (recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
-      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
-  (defrole init-reauth
-    (vars (a b ks name) (ra ra-prime rb-prime text) (k skey) (tb text)
-      (tkt mesg))
-    (trace (recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime)) (recv (cat rb-prime (enc ra-prime k)))
-      (send (enc rb-prime k))))
-  (defrole resp-reauth
-    (vars (a b ks name) (tb ra-prime rb-prime text) (k skey))
-    (trace (recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k))))
-  (defrole keyserver
-    (vars (a b ks name) (ra rb text) (k skey) (tb text))
-    (trace (recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    (uniq-orig k))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (ra-prime rb-prime tb text) (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k))))
-  (label 26)
-  (unrealized (0 0))
-  (origs (rb-prime (0 1)))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (ra-prime rb-prime tb ra rb text) (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (precedes ((1 1) (0 0)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-strand keyserver 2)
-    (enc a k tb (ltk b ks)) (0 0))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))))
-  (label 27)
-  (parent 26)
-  (unrealized (0 2) (1 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (ra-prime rb-prime tb ra rb rb-0 text) (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (precedes ((1 1) (0 0)) ((2 1) (1 0)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-strand resp 2)
-    (enc a ra tb (ltk b ks)) (1 0))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks))))))
-  (label 28)
-  (parent 27)
-  (unrealized (0 2))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-0 ra-prime-0 tb-0 text)
-    (a b ks a-0 b-0 ks-0 name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra-0) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb-0) (a a-0) (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((2 1) (1 0))
-    ((3 3) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-strand init-reauth 4)
-    (enc rb-prime k) (0 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b-0 ra-0 k tb-0 (ltk a-0 ks-0)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k))))
-  (label 29)
-  (parent 28)
-  (unrealized (3 0) (3 2))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt mesg) (ra-prime rb-prime tb ra rb rb-0 ra-0 tb-0 text)
-    (a b ks a-0 b-0 ks-0 name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init 3 (tkt tkt) (ra ra-0) (rb rb-prime) (tb tb-0) (a a-0)
-    (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (3 1)) ((1 1) (0 0)) ((2 1) (1 0)) ((3 2) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-strand init 3) (enc rb-prime k)
-    (0 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((send (cat a-0 ra-0))
-      (recv (cat (enc b-0 ra-0 k tb-0 (ltk a-0 ks-0)) tkt rb-prime))
-      (send (cat tkt (enc rb-prime k)))))
-  (label 30)
-  (parent 28)
-  (unrealized (3 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (ra-prime rb-prime tb ra rb rb-0 tb-0 rb-prime-0 text)
-    (a b ks a-0 b-0 ks-0 name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand resp-reauth 2 (tb tb-0) (ra-prime rb-prime)
-    (rb-prime rb-prime-0) (a a-0) (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (3 0)) ((1 1) (0 0)) ((2 1) (1 0)) ((3 1) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-strand resp-reauth 2)
-    (enc rb-prime k) (0 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc a-0 k tb-0 (ltk b-0 ks-0)) rb-prime))
-      (send (cat rb-prime-0 (enc rb-prime k)))))
-  (label 31)
-  (parent 28)
-  (unrealized (3 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (ra-prime rb-prime tb ra rb rb-0 text) (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (deflistener k)
-  (precedes ((1 1) (0 0)) ((1 1) (3 0)) ((2 1) (1 0)) ((3 1) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-listener k) (enc rb-prime k) (0 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv k) (send k)))
-  (label 32)
-  (parent 28)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt mesg) (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 text)
-    (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((2 1) (1 0))
-    ((3 3) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation nonce-test
-    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-0 ra) (tb-0 tb)) k (3 0)
-    (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k))))
-  (label 33)
-  (parent 29)
-  (unrealized (3 2))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt mesg) (ra-prime rb-prime tb ra rb rb-0 text) (a b ks name)
-    (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init 3 (tkt tkt) (ra ra) (rb rb-prime) (tb tb) (a a) (b b)
-    (ks ks) (k k))
-  (precedes ((0 1) (3 1)) ((1 1) (0 0)) ((2 1) (1 0)) ((3 2) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation nonce-test
-    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-0 ra) (tb-0 tb)) k (3 1)
-    (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((send (cat a ra))
-      (recv (cat (enc b ra k tb (ltk a ks)) tkt rb-prime))
-      (send (cat tkt (enc rb-prime k)))))
-  (label 34)
-  (parent 30)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
-        (tb tb))))
-  (origs (k (1 1)) (rb-prime (0 1))))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (ra-prime rb-prime tb ra rb rb-0 rb-prime-0 text) (a b ks name)
-    (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand resp-reauth 2 (tb tb) (ra-prime rb-prime)
-    (rb-prime rb-prime-0) (a a) (b b) (ks ks) (k k))
-  (precedes ((0 1) (3 0)) ((1 1) (0 0)) ((2 1) (1 0)) ((3 1) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
-    k (3 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
-      (send (cat rb-prime-0 (enc rb-prime k)))))
-  (label 35)
-  (parent 31)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
-        (tb tb))))
-  (origs (k (1 1)) (rb-prime (0 1))))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-0 ra-prime-1 tb-0
-      text) (a b ks a-0 b-0 ks-0 name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra-0) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb-0) (a a-0) (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((2 1) (1 0)) ((3 3) (0 2)) ((4 3) (3 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-strand init-reauth 4)
-    (enc ra-prime-0 k) (3 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b-0 ra-0 k tb-0 (ltk a-0 ks-0)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k))))
-  (label 36)
-  (parent 33)
-  (unrealized (4 0) (4 2))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-0 tb-0 text)
-    (a b ks a-0 b-0 ks-0 name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init 3 (tkt tkt-0) (ra ra-0) (rb ra-prime-0) (tb tb-0)
-    (a a-0) (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 1))
-    ((2 1) (1 0)) ((3 3) (0 2)) ((4 2) (3 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-strand init 3) (enc ra-prime-0 k)
-    (3 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((send (cat a-0 ra-0))
-      (recv (cat (enc b-0 ra-0 k tb-0 (ltk a-0 ks-0)) tkt-0 ra-prime-0))
-      (send (cat tkt-0 (enc ra-prime-0 k)))))
-  (label 37)
-  (parent 33)
-  (unrealized (4 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt mesg) (ra-prime rb-prime tb ra rb rb-0 text) (a b ks name)
-    (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (3 0)) ((2 1) (1 0)) ((3 1) (0 0))
-    ((3 3) (0 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (displaced 4 0 resp-reauth 2)
-    (enc ra-prime-0 k) (3 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime)) (recv (cat rb-prime (enc ra-prime k)))
-      (send (enc rb-prime k))))
-  (label 38)
-  (parent 33)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
-        (tb tb))))
-  (origs (k (1 1)) (ra-prime (3 1)) (rb-prime (0 1))))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 tb-0 rb-prime-0 text)
-    (a b ks a-0 b-0 ks-0 name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand resp-reauth 2 (tb tb-0) (ra-prime ra-prime-0)
-    (rb-prime rb-prime-0) (a a-0) (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((2 1) (1 0)) ((3 3) (0 2)) ((4 1) (3 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-strand resp-reauth 2)
-    (enc ra-prime-0 k) (3 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc a-0 k tb-0 (ltk b-0 ks-0)) ra-prime-0))
-      (send (cat rb-prime-0 (enc ra-prime-0 k)))))
-  (label 39)
-  (parent 33)
-  (unrealized (4 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt mesg) (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 text)
-    (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (deflistener k)
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((2 1) (1 0)) ((3 3) (0 2)) ((4 1) (3 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-listener k) (enc ra-prime-0 k)
-    (3 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv k) (send k)))
-  (label 40)
-  (parent 33)
-  (unrealized (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 text)
-    (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((2 1) (1 0)) ((3 3) (0 2)) ((4 3) (3 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation nonce-test
-    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-0 ra) (tb-0 tb)) k (4 0)
-    (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k))))
-  (label 41)
-  (parent 36)
-  (unrealized (4 2))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 text) (a b ks name)
-    (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init 3 (tkt tkt-0) (ra ra) (rb ra-prime-0) (tb tb) (a a)
-    (b b) (ks ks) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 1))
-    ((2 1) (1 0)) ((3 3) (0 2)) ((4 2) (3 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation nonce-test
-    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-0 ra) (tb-0 tb)) k (4 1)
-    (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((send (cat a ra))
-      (recv (cat (enc b ra k tb (ltk a ks)) tkt-0 ra-prime-0))
-      (send (cat tkt-0 (enc ra-prime-0 k)))))
-  (label 42)
-  (parent 37)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
-        (tb tb))))
-  (origs (k (1 1)) (rb-prime (0 1))))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 rb-prime-0 text)
-    (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand resp-reauth 2 (tb tb) (ra-prime ra-prime-0)
-    (rb-prime rb-prime-0) (a a) (b b) (ks ks) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((2 1) (1 0)) ((3 3) (0 2)) ((4 1) (3 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
-    k (4 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
-      (send (cat rb-prime-0 (enc ra-prime-0 k)))))
-  (label 43)
-  (parent 39)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
-        (tb tb))))
-  (origs (k (1 1)) (rb-prime (0 1))))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 tkt-1 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-0
-      ra-prime-2 tb-0 text) (a b ks a-0 b-0 ks-0 name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-1) (ra ra-0) (ra-prime ra-prime-2)
-    (rb-prime ra-prime-1) (tb tb-0) (a a-0) (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 0)) ((2 1) (1 0)) ((3 3) (0 2)) ((4 3) (3 2))
-    ((5 3) (4 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-strand init-reauth 4)
-    (enc ra-prime-1 k) (4 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((recv (cat (enc b-0 ra-0 k tb-0 (ltk a-0 ks-0)) tkt-1))
-      (send (cat tkt-1 ra-prime-2))
-      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
-      (send (enc ra-prime-1 k))))
-  (label 44)
-  (parent 41)
-  (unrealized (5 0) (5 2))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 tkt-1 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-0 tb-0
-      text) (a b ks a-0 b-0 ks-0 name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init 3 (tkt tkt-1) (ra ra-0) (rb ra-prime-1) (tb tb-0)
-    (a a-0) (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 1)) ((2 1) (1 0)) ((3 3) (0 2)) ((4 3) (3 2))
-    ((5 2) (4 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-strand init 3) (enc ra-prime-1 k)
-    (4 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((send (cat a-0 ra-0))
-      (recv (cat (enc b-0 ra-0 k tb-0 (ltk a-0 ks-0)) tkt-1 ra-prime-1))
-      (send (cat tkt-1 (enc ra-prime-1 k)))))
-  (label 45)
-  (parent 41)
-  (unrealized (5 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 text) (a b ks name)
-    (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (precedes ((0 1) (4 2)) ((1 1) (3 0)) ((1 1) (4 0)) ((2 1) (1 0))
-    ((3 3) (0 2)) ((4 1) (0 0)) ((4 3) (3 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (displaced 5 0 resp-reauth 2)
-    (enc ra-prime-1 k) (4 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime))
-      (recv (cat ra-prime-0 (enc ra-prime k)))
-      (send (enc ra-prime-0 k))))
-  (label 46)
-  (parent 41)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
-        (tb tb))))
-  (origs (k (1 1)) (ra-prime (4 1)) (rb-prime (0 1))))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 tb-0
-      rb-prime-0 text) (a b ks a-0 b-0 ks-0 name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand resp-reauth 2 (tb tb-0) (ra-prime ra-prime-1)
-    (rb-prime rb-prime-0) (a a-0) (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 0)) ((2 1) (1 0)) ((3 3) (0 2)) ((4 3) (3 2))
-    ((5 1) (4 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-strand resp-reauth 2)
-    (enc ra-prime-1 k) (4 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((recv (cat (enc a-0 k tb-0 (ltk b-0 ks-0)) ra-prime-1))
-      (send (cat rb-prime-0 (enc ra-prime-1 k)))))
-  (label 47)
-  (parent 41)
-  (unrealized (5 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 text)
-    (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (deflistener k)
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 0)) ((2 1) (1 0)) ((3 3) (0 2)) ((4 3) (3 2))
-    ((5 1) (4 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-listener k) (enc ra-prime-1 k)
-    (4 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k))) ((recv k) (send k)))
-  (label 48)
-  (parent 41)
-  (unrealized (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 tkt-1 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-prime-2
-      text) (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime-2)
-    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 0)) ((2 1) (1 0)) ((3 3) (0 2)) ((4 3) (3 2))
-    ((5 3) (4 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation nonce-test
-    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-0 ra) (tb-0 tb)) k (5 0)
-    (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
-      (send (cat tkt-1 ra-prime-2))
-      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
-      (send (enc ra-prime-1 k))))
-  (label 49)
-  (parent 44)
-  (unrealized (5 2))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 tkt-1 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 text)
-    (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init 3 (tkt tkt-1) (ra ra) (rb ra-prime-1) (tb tb) (a a)
-    (b b) (ks ks) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 1)) ((2 1) (1 0)) ((3 3) (0 2)) ((4 3) (3 2))
-    ((5 2) (4 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation nonce-test
-    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-0 ra) (tb-0 tb)) k (5 1)
-    (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((send (cat a ra))
-      (recv (cat (enc b ra k tb (ltk a ks)) tkt-1 ra-prime-1))
-      (send (cat tkt-1 (enc ra-prime-1 k)))))
-  (label 50)
-  (parent 45)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
-        (tb tb))))
-  (origs (k (1 1)) (rb-prime (0 1))))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 rb-prime-0
-      text) (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand resp-reauth 2 (tb tb) (ra-prime ra-prime-1)
-    (rb-prime rb-prime-0) (a a) (b b) (ks ks) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 0)) ((2 1) (1 0)) ((3 3) (0 2)) ((4 3) (3 2))
-    ((5 1) (4 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
-    k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-1))
-      (send (cat rb-prime-0 (enc ra-prime-1 k)))))
-  (label 51)
-  (parent 47)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
-        (tb tb))))
-  (origs (k (1 1)) (rb-prime (0 1))))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 tkt-1 tkt-2 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-prime-2
-      ra-0 ra-prime-3 tb-0 text) (a b ks a-0 b-0 ks-0 name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime-2)
-    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-2) (ra ra-0) (ra-prime ra-prime-3)
-    (rb-prime ra-prime-2) (tb tb-0) (a a-0) (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 0)) ((1 1) (6 0)) ((2 1) (1 0)) ((3 3) (0 2))
-    ((4 3) (3 2)) ((5 3) (4 2)) ((6 3) (5 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-strand init-reauth 4)
-    (enc ra-prime-2 k) (5 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
-      (send (cat tkt-1 ra-prime-2))
-      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
-      (send (enc ra-prime-1 k)))
-    ((recv (cat (enc b-0 ra-0 k tb-0 (ltk a-0 ks-0)) tkt-2))
-      (send (cat tkt-2 ra-prime-3))
-      (recv (cat ra-prime-2 (enc ra-prime-3 k)))
-      (send (enc ra-prime-2 k))))
-  (label 52)
-  (parent 49)
-  (unrealized (6 0) (6 2))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 tkt-1 tkt-2 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-prime-2
-      ra-0 tb-0 text) (a b ks a-0 b-0 ks-0 name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime-2)
-    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init 3 (tkt tkt-2) (ra ra-0) (rb ra-prime-2) (tb tb-0)
-    (a a-0) (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 0)) ((1 1) (6 1)) ((2 1) (1 0)) ((3 3) (0 2))
-    ((4 3) (3 2)) ((5 3) (4 2)) ((6 2) (5 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-strand init 3) (enc ra-prime-2 k)
-    (5 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
-      (send (cat tkt-1 ra-prime-2))
-      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
-      (send (enc ra-prime-1 k)))
-    ((send (cat a-0 ra-0))
-      (recv (cat (enc b-0 ra-0 k tb-0 (ltk a-0 ks-0)) tkt-2 ra-prime-2))
-      (send (cat tkt-2 (enc ra-prime-2 k)))))
-  (label 53)
-  (parent 49)
-  (unrealized (6 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 tkt-1 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 text)
-    (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime)
-    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
-  (precedes ((0 1) (5 2)) ((1 1) (3 0)) ((1 1) (4 0)) ((1 1) (5 0))
-    ((2 1) (1 0)) ((3 3) (0 2)) ((4 3) (3 2)) ((5 1) (0 0))
-    ((5 3) (4 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (displaced 6 0 resp-reauth 2)
-    (enc ra-prime-2 k) (5 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
-      (send (cat tkt-1 ra-prime))
-      (recv (cat ra-prime-1 (enc ra-prime k)))
-      (send (enc ra-prime-1 k))))
-  (label 54)
-  (parent 49)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
-        (tb tb))))
-  (origs (k (1 1)) (ra-prime (5 1)) (rb-prime (0 1))))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 tkt-1 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-prime-2
-      tb-0 rb-prime-0 text) (a b ks a-0 b-0 ks-0 name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime-2)
-    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand resp-reauth 2 (tb tb-0) (ra-prime ra-prime-2)
-    (rb-prime rb-prime-0) (a a-0) (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 0)) ((1 1) (6 0)) ((2 1) (1 0)) ((3 3) (0 2))
-    ((4 3) (3 2)) ((5 3) (4 2)) ((6 1) (5 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-strand resp-reauth 2)
-    (enc ra-prime-2 k) (5 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
-      (send (cat tkt-1 ra-prime-2))
-      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
-      (send (enc ra-prime-1 k)))
-    ((recv (cat (enc a-0 k tb-0 (ltk b-0 ks-0)) ra-prime-2))
-      (send (cat rb-prime-0 (enc ra-prime-2 k)))))
-  (label 55)
-  (parent 49)
-  (unrealized (6 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 tkt-1 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-prime-2
-      text) (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime-2)
-    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
-  (deflistener k)
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 0)) ((1 1) (6 0)) ((2 1) (1 0)) ((3 3) (0 2))
-    ((4 3) (3 2)) ((5 3) (4 2)) ((6 1) (5 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-listener k) (enc ra-prime-2 k)
-    (5 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
-      (send (cat tkt-1 ra-prime-2))
-      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
-      (send (enc ra-prime-1 k))) ((recv k) (send k)))
-  (label 56)
-  (parent 49)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 tkt-1 tkt-2 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-prime-2
-      ra-prime-3 text) (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime-2)
-    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-2) (ra ra) (ra-prime ra-prime-3)
-    (rb-prime ra-prime-2) (tb tb) (a a) (b b) (ks ks) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 0)) ((1 1) (6 0)) ((2 1) (1 0)) ((3 3) (0 2))
-    ((4 3) (3 2)) ((5 3) (4 2)) ((6 3) (5 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation nonce-test
-    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-0 ra) (tb-0 tb)) k (6 0)
-    (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
-      (send (cat tkt-1 ra-prime-2))
-      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
-      (send (enc ra-prime-1 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-2))
-      (send (cat tkt-2 ra-prime-3))
-      (recv (cat ra-prime-2 (enc ra-prime-3 k)))
-      (send (enc ra-prime-2 k))))
-  (label 57)
-  (parent 52)
-  (unrealized (6 2))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 tkt-1 tkt-2 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-prime-2
-      text) (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime-2)
-    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init 3 (tkt tkt-2) (ra ra) (rb ra-prime-2) (tb tb) (a a)
-    (b b) (ks ks) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 0)) ((1 1) (6 1)) ((2 1) (1 0)) ((3 3) (0 2))
-    ((4 3) (3 2)) ((5 3) (4 2)) ((6 2) (5 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation nonce-test
-    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-0 ra) (tb-0 tb)) k (6 1)
-    (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
-      (send (cat tkt-1 ra-prime-2))
-      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
-      (send (enc ra-prime-1 k)))
-    ((send (cat a ra))
-      (recv (cat (enc b ra k tb (ltk a ks)) tkt-2 ra-prime-2))
-      (send (cat tkt-2 (enc ra-prime-2 k)))))
-  (label 58)
-  (parent 53)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
-        (tb tb))))
-  (origs (k (1 1)) (rb-prime (0 1))))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 tkt-1 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-prime-2
-      rb-prime-0 text) (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime-2)
-    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand resp-reauth 2 (tb tb) (ra-prime ra-prime-2)
-    (rb-prime rb-prime-0) (a a) (b b) (ks ks) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 0)) ((1 1) (6 0)) ((2 1) (1 0)) ((3 3) (0 2))
-    ((4 3) (3 2)) ((5 3) (4 2)) ((6 1) (5 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
-    k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
-      (send (cat tkt-1 ra-prime-2))
-      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
-      (send (enc ra-prime-1 k)))
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-2))
-      (send (cat rb-prime-0 (enc ra-prime-2 k)))))
-  (label 59)
-  (parent 55)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
-        (tb tb))))
-  (origs (k (1 1)) (rb-prime (0 1))))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 tkt-1 tkt-2 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-prime-2
-      text) (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime-2)
-    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-2) (ra ra) (ra-prime ra-prime)
-    (rb-prime ra-prime-2) (tb tb) (a a) (b b) (ks ks) (k k))
-  (precedes ((0 1) (6 2)) ((1 1) (3 0)) ((1 1) (4 0)) ((1 1) (5 0))
-    ((1 1) (6 0)) ((2 1) (1 0)) ((3 3) (0 2)) ((4 3) (3 2))
-    ((5 3) (4 2)) ((6 1) (0 0)) ((6 3) (5 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (displaced 7 0 resp-reauth 2)
-    (enc ra-prime-3 k) (6 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
-      (send (cat tkt-1 ra-prime-2))
-      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
-      (send (enc ra-prime-1 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-2))
-      (send (cat tkt-2 ra-prime))
-      (recv (cat ra-prime-2 (enc ra-prime k)))
-      (send (enc ra-prime-2 k))))
-  (label 62)
-  (parent 57)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
-        (tb tb))))
-  (origs (k (1 1)) (ra-prime (6 1)) (rb-prime (0 1))))
-
-(comment "Strand bound exceeded--aborting run")
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 tkt-1 tkt-2 tkt-3 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-prime-2
-      ra-prime-3 ra-0 ra-prime-4 tb-0 text) (a b ks a-0 b-0 ks-0 name)
-    (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime-2)
-    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-2) (ra ra) (ra-prime ra-prime-3)
-    (rb-prime ra-prime-2) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-3) (ra ra-0) (ra-prime ra-prime-4)
-    (rb-prime ra-prime-3) (tb tb-0) (a a-0) (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 0)) ((1 1) (6 0)) ((1 1) (7 0)) ((2 1) (1 0))
-    ((3 3) (0 2)) ((4 3) (3 2)) ((5 3) (4 2)) ((6 3) (5 2))
-    ((7 3) (6 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-strand init-reauth 4)
-    (enc ra-prime-3 k) (6 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
-      (send (cat tkt-1 ra-prime-2))
-      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
-      (send (enc ra-prime-1 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-2))
-      (send (cat tkt-2 ra-prime-3))
-      (recv (cat ra-prime-2 (enc ra-prime-3 k)))
-      (send (enc ra-prime-2 k)))
-    ((recv (cat (enc b-0 ra-0 k tb-0 (ltk a-0 ks-0)) tkt-3))
-      (send (cat tkt-3 ra-prime-4))
-      (recv (cat ra-prime-3 (enc ra-prime-4 k)))
-      (send (enc ra-prime-3 k))))
-  (label 60)
-  (parent 57)
-  (unrealized (7 0) (7 2))
-  (aborted)
-  (comment "aborted"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 tkt-1 tkt-2 tkt-3 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-prime-2
-      ra-prime-3 ra-0 tb-0 text) (a b ks a-0 b-0 ks-0 name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime-2)
-    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-2) (ra ra) (ra-prime ra-prime-3)
-    (rb-prime ra-prime-2) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init 3 (tkt tkt-3) (ra ra-0) (rb ra-prime-3) (tb tb-0)
-    (a a-0) (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 0)) ((1 1) (6 0)) ((1 1) (7 1)) ((2 1) (1 0))
-    ((3 3) (0 2)) ((4 3) (3 2)) ((5 3) (4 2)) ((6 3) (5 2))
-    ((7 2) (6 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-strand init 3) (enc ra-prime-3 k)
-    (6 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
-      (send (cat tkt-1 ra-prime-2))
-      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
-      (send (enc ra-prime-1 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-2))
-      (send (cat tkt-2 ra-prime-3))
-      (recv (cat ra-prime-2 (enc ra-prime-3 k)))
-      (send (enc ra-prime-2 k)))
-    ((send (cat a-0 ra-0))
-      (recv (cat (enc b-0 ra-0 k tb-0 (ltk a-0 ks-0)) tkt-3 ra-prime-3))
-      (send (cat tkt-3 (enc ra-prime-3 k)))))
-  (label 61)
-  (parent 57)
-  (unrealized (7 1))
-  (aborted)
-  (comment "aborted"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 tkt-1 tkt-2 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-prime-2
-      ra-prime-3 tb-0 rb-prime-0 text) (a b ks a-0 b-0 ks-0 name)
-    (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime-2)
-    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-2) (ra ra) (ra-prime ra-prime-3)
-    (rb-prime ra-prime-2) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand resp-reauth 2 (tb tb-0) (ra-prime ra-prime-3)
-    (rb-prime rb-prime-0) (a a-0) (b b-0) (ks ks-0) (k k))
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 0)) ((1 1) (6 0)) ((1 1) (7 0)) ((2 1) (1 0))
-    ((3 3) (0 2)) ((4 3) (3 2)) ((5 3) (4 2)) ((6 3) (5 2))
-    ((7 1) (6 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-strand resp-reauth 2)
-    (enc ra-prime-3 k) (6 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
-      (send (cat tkt-1 ra-prime-2))
-      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
-      (send (enc ra-prime-1 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-2))
-      (send (cat tkt-2 ra-prime-3))
-      (recv (cat ra-prime-2 (enc ra-prime-3 k)))
-      (send (enc ra-prime-2 k)))
-    ((recv (cat (enc a-0 k tb-0 (ltk b-0 ks-0)) ra-prime-3))
-      (send (cat rb-prime-0 (enc ra-prime-3 k)))))
-  (label 63)
-  (parent 57)
-  (unrealized (7 0))
-  (aborted)
-  (comment "aborted"))
-
-(defskeleton neuman-stubblebine-reauth
-  (vars (tkt tkt-0 tkt-1 tkt-2 mesg)
-    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-prime-2
-      ra-prime-3 text) (a b ks name) (k skey))
-  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
-    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
-  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
-    (k k))
-  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
-  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
-    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
-    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime-2)
-    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
-  (defstrand init-reauth 4 (tkt tkt-2) (ra ra) (ra-prime ra-prime-3)
-    (rb-prime ra-prime-2) (tb tb) (a a) (b b) (ks ks) (k k))
-  (deflistener k)
-  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
-    ((1 1) (5 0)) ((1 1) (6 0)) ((1 1) (7 0)) ((2 1) (1 0))
-    ((3 3) (0 2)) ((4 3) (3 2)) ((5 3) (4 2)) ((6 3) (5 2))
-    ((7 1) (6 2)))
-  (non-orig (ltk a ks) (ltk b ks))
-  (uniq-orig ra-prime rb-prime k)
-  (operation encryption-test (added-listener k) (enc ra-prime-3 k)
-    (6 2))
-  (traces
-    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
-      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
-    ((recv (cat b rb (enc a ra tb (ltk b ks))))
-      (send
-        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
-    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
-      (send (cat tkt ra-prime-0))
-      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
-      (send (cat tkt-0 ra-prime-1))
-      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
-      (send (enc ra-prime-0 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
-      (send (cat tkt-1 ra-prime-2))
-      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
-      (send (enc ra-prime-1 k)))
-    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-2))
-      (send (cat tkt-2 ra-prime-3))
-      (recv (cat ra-prime-2 (enc ra-prime-3 k)))
-      (send (enc ra-prime-2 k))) ((recv k) (send k)))
-  (label 64)
-  (parent 57)
-  (unrealized (7 0))
-  (aborted)
-  (comment "aborted"))
diff --git a/tst/jdg-neuman-stubblebine-reauth_shapes.tst b/tst/jdg-neuman-stubblebine-reauth_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/jdg-neuman-stubblebine-reauth_shapes.tst
@@ -0,0 +1,1089 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald jdg-neuman-stubblebine-reauth (bound 8))
+
+(comment "CPSA 4.3.0")
+
+(comment "All input read from tst/jdg-neuman-stubblebine-reauth.lsp")
+
+(defprotocol neuman-stubblebine basic
+  (defrole init
+    (vars (a b ks name) (ra rb text) (k skey) (tb text) (tkt mesg))
+    (trace (send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
+      (send (cat tkt (enc rb k)))))
+  (defrole resp
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (defrole keyserver
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    (uniq-orig k))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton neuman-stubblebine
+  (vars (ra tb rb text) (a b ks name) (k skey))
+  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra rb k)
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 0)
+  (unrealized (0 2))
+  (origs (rb (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton neuman-stubblebine
+  (vars (tkt mesg) (ra tb rb rb-0 text) (a b ks name) (k skey))
+  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand init 3 (tkt tkt) (ra ra) (rb rb) (tb tb) (a a) (b b)
+    (ks ks) (k k))
+  (precedes ((0 1) (1 0)) ((1 1) (2 1)) ((2 0) (0 0)) ((2 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra rb k)
+  (operation nonce-test
+    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-0 ra) (tb-0 tb)) k (2 1)
+    (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((send (cat a ra)) (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
+      (send (cat tkt (enc rb k)))))
+  (label 8)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k))))
+  (origs (k (1 1)) (ra (2 0)) (rb (0 1))))
+
+(defskeleton neuman-stubblebine
+  (vars (tkt mesg) (ra tb rb ra-0 rb-0 rb-1 text) (a b ks name)
+    (k skey))
+  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (tkt tkt) (ra ra-0) (rb rb) (tb tb) (a a) (b b)
+    (ks ks) (k k))
+  (precedes ((0 1) (3 1)) ((1 1) (3 1)) ((2 1) (1 0)) ((3 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra rb k)
+  (operation nonce-test
+    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-1 ra-0) (tb-0 tb)) k (3 1)
+    (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((send (cat a ra-0))
+      (recv (cat (enc b ra-0 k tb (ltk a ks)) tkt rb))
+      (send (cat tkt (enc rb k)))))
+  (label 9)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k))))
+  (origs (k (1 1)) (rb (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol neuman-stubblebine basic
+  (defrole init
+    (vars (a b ks name) (ra rb text) (k skey) (tb text) (tkt mesg))
+    (trace (send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
+      (send (cat tkt (enc rb k)))))
+  (defrole resp
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (defrole keyserver
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    (uniq-orig k))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton neuman-stubblebine
+  (vars (tkt mesg) (ra tb rb text) (a b ks name) (k skey))
+  (defstrand init 3 (tkt tkt) (ra ra) (rb rb) (tb tb) (a a) (b b)
+    (ks ks) (k k))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra rb k)
+  (traces
+    ((send (cat a ra)) (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
+      (send (cat tkt (enc rb k)))))
+  (label 10)
+  (unrealized (0 1))
+  (origs (ra (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton neuman-stubblebine
+  (vars (tkt mesg) (ra tb rb rb-0 rb-1 text) (a b ks name) (k skey))
+  (defstrand init 3 (tkt tkt) (ra ra) (rb rb) (tb tb) (a a) (b b)
+    (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand resp 2 (ra ra) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra rb k)
+  (operation encryption-test (added-strand resp 2)
+    (enc a ra tb (ltk b ks)) (1 0))
+  (traces
+    ((send (cat a ra)) (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
+      (send (cat tkt (enc rb k))))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (cat a ra)) (send (cat b rb-1 (enc a ra tb (ltk b ks))))))
+  (label 12)
+  (parent 10)
+  (realized)
+  (shape)
+  (maps
+    ((0) ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k) (tkt tkt))))
+  (origs (k (1 1)) (ra (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol neuman-stubblebine basic
+  (defrole init
+    (vars (a b ks name) (ra rb text) (k skey) (tb text) (tkt mesg))
+    (trace (send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
+      (send (cat tkt (enc rb k)))))
+  (defrole resp
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (defrole keyserver
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    (uniq-orig k))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton neuman-stubblebine
+  (vars (ra tb rb text) (a b ks name) (k skey))
+  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra rb k)
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 13)
+  (unrealized (0 2))
+  (origs (rb (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton neuman-stubblebine
+  (vars (tkt mesg) (ra tb rb rb-0 text) (a b ks name) (k skey))
+  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand init 3 (tkt tkt) (ra ra) (rb rb) (tb tb) (a a) (b b)
+    (ks ks) (k k))
+  (precedes ((0 1) (1 0)) ((1 1) (2 1)) ((2 0) (0 0)) ((2 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra rb k)
+  (operation nonce-test
+    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-0 ra) (tb-0 tb)) k (2 1)
+    (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((send (cat a ra)) (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
+      (send (cat tkt (enc rb k)))))
+  (label 21)
+  (parent 13)
+  (realized)
+  (shape)
+  (maps ((0) ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k))))
+  (origs (k (1 1)) (ra (2 0)) (rb (0 1))))
+
+(defskeleton neuman-stubblebine
+  (vars (tkt mesg) (ra tb rb ra-0 rb-0 rb-1 text) (a b ks name)
+    (k skey))
+  (defstrand resp 3 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (tkt tkt) (ra ra-0) (rb rb) (tb tb) (a a) (b b)
+    (ks ks) (k k))
+  (precedes ((0 1) (3 1)) ((1 1) (3 1)) ((2 1) (1 0)) ((3 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra rb k)
+  (operation nonce-test
+    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-1 ra-0) (tb-0 tb)) k (3 1)
+    (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((send (cat a ra-0))
+      (recv (cat (enc b ra-0 k tb (ltk a ks)) tkt rb))
+      (send (cat tkt (enc rb k)))))
+  (label 22)
+  (parent 13)
+  (realized)
+  (shape)
+  (maps ((0) ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k))))
+  (origs (k (1 1)) (rb (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol neuman-stubblebine basic
+  (defrole init
+    (vars (a b ks name) (ra rb text) (k skey) (tb text) (tkt mesg))
+    (trace (send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
+      (send (cat tkt (enc rb k)))))
+  (defrole resp
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (defrole keyserver
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    (uniq-orig k))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton neuman-stubblebine
+  (vars (tkt mesg) (ra tb rb text) (a b ks name) (k skey))
+  (defstrand init 3 (tkt tkt) (ra ra) (rb rb) (tb tb) (a a) (b b)
+    (ks ks) (k k))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra rb k)
+  (traces
+    ((send (cat a ra)) (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
+      (send (cat tkt (enc rb k)))))
+  (label 23)
+  (unrealized (0 1))
+  (origs (ra (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton neuman-stubblebine
+  (vars (tkt mesg) (ra tb rb rb-0 rb-1 text) (a b ks name) (k skey))
+  (defstrand init 3 (tkt tkt) (ra ra) (rb rb) (tb tb) (a a) (b b)
+    (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand resp 2 (ra ra) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra rb k)
+  (operation encryption-test (added-strand resp 2)
+    (enc a ra tb (ltk b ks)) (1 0))
+  (traces
+    ((send (cat a ra)) (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
+      (send (cat tkt (enc rb k))))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (cat a ra)) (send (cat b rb-1 (enc a ra tb (ltk b ks))))))
+  (label 25)
+  (parent 23)
+  (realized)
+  (shape)
+  (maps
+    ((0) ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k) (tkt tkt))))
+  (origs (k (1 1)) (ra (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol neuman-stubblebine-reauth basic
+  (defrole init
+    (vars (a b ks name) (ra rb tb text) (k skey) (tkt mesg))
+    (trace (send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) tkt rb))
+      (send (cat tkt (enc rb k)))))
+  (defrole resp
+    (vars (a b ks name) (ra rb tb text) (k skey))
+    (trace (recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (defrole init-reauth
+    (vars (a b ks name) (ra ra-prime rb-prime text) (k skey) (tb text)
+      (tkt mesg))
+    (trace (recv (cat (enc b ra k tb (ltk a ks)) tkt))
+      (send (cat tkt ra-prime)) (recv (cat rb-prime (enc ra-prime k)))
+      (send (enc rb-prime k))))
+  (defrole resp-reauth
+    (vars (a b ks name) (tb ra-prime rb-prime text) (k skey))
+    (trace (recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k))))
+  (defrole keyserver
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    (uniq-orig k))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (ra-prime rb-prime tb text) (a b ks name) (k skey))
+  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
+    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra-prime rb-prime k)
+  (traces
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k))))
+  (label 26)
+  (unrealized (0 0))
+  (origs (rb-prime (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (tkt mesg) (ra-prime rb-prime tb ra rb rb-0 text) (a b ks name)
+    (k skey))
+  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
+    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (tkt tkt) (ra ra) (rb rb-prime) (tb tb) (a a) (b b)
+    (ks ks) (k k))
+  (precedes ((0 1) (3 1)) ((1 1) (0 0)) ((2 1) (1 0)) ((3 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra-prime rb-prime k)
+  (operation nonce-test
+    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-0 ra) (tb-0 tb)) k (3 1)
+    (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
+    ((send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) tkt rb-prime))
+      (send (cat tkt (enc rb-prime k)))))
+  (label 34)
+  (parent 26)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+        (tb tb))))
+  (origs (k (1 1)) (rb-prime (0 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (ra-prime rb-prime tb ra rb rb-0 rb-prime-0 text) (a b ks name)
+    (k skey))
+  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
+    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (tb tb) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (a a) (b b) (ks ks) (k k))
+  (precedes ((0 1) (3 0)) ((1 1) (0 0)) ((2 1) (1 0)) ((3 1) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra-prime rb-prime k)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (3 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k)))))
+  (label 35)
+  (parent 26)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+        (tb tb))))
+  (origs (k (1 1)) (rb-prime (0 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (tkt mesg) (ra-prime rb-prime tb ra rb rb-0 text) (a b ks name)
+    (k skey))
+  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
+    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
+  (precedes ((0 1) (3 2)) ((1 1) (3 0)) ((2 1) (1 0)) ((3 1) (0 0))
+    ((3 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra-prime rb-prime k)
+  (operation encryption-test (displaced 4 0 resp-reauth 2)
+    (enc ra-prime-0 k) (3 2))
+  (traces
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
+      (send (cat tkt ra-prime)) (recv (cat rb-prime (enc ra-prime k)))
+      (send (enc rb-prime k))))
+  (label 38)
+  (parent 26)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+        (tb tb))))
+  (origs (k (1 1)) (ra-prime (3 1)) (rb-prime (0 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (tkt tkt-0 mesg)
+    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 text) (a b ks name)
+    (k skey))
+  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
+    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand init 3 (tkt tkt-0) (ra ra) (rb ra-prime-0) (tb tb) (a a)
+    (b b) (ks ks) (k k))
+  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 1))
+    ((2 1) (1 0)) ((3 3) (0 2)) ((4 2) (3 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra-prime rb-prime k)
+  (operation nonce-test
+    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-0 ra) (tb-0 tb)) k (4 1)
+    (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
+      (send (cat tkt ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) tkt-0 ra-prime-0))
+      (send (cat tkt-0 (enc ra-prime-0 k)))))
+  (label 42)
+  (parent 26)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+        (tb tb))))
+  (origs (k (1 1)) (rb-prime (0 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (tkt mesg)
+    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 rb-prime-0 text)
+    (a b ks name) (k skey))
+  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
+    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand resp-reauth 2 (tb tb) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (a a) (b b) (ks ks) (k k))
+  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
+    ((2 1) (1 0)) ((3 3) (0 2)) ((4 1) (3 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra-prime rb-prime k)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (4 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
+      (send (cat tkt ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k)))))
+  (label 43)
+  (parent 26)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+        (tb tb))))
+  (origs (k (1 1)) (rb-prime (0 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (tkt tkt-0 mesg)
+    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 text) (a b ks name)
+    (k skey))
+  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
+    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
+  (precedes ((0 1) (4 2)) ((1 1) (3 0)) ((1 1) (4 0)) ((2 1) (1 0))
+    ((3 3) (0 2)) ((4 1) (0 0)) ((4 3) (3 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra-prime rb-prime k)
+  (operation encryption-test (displaced 5 0 resp-reauth 2)
+    (enc ra-prime-1 k) (4 2))
+  (traces
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
+      (send (cat tkt ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
+      (send (cat tkt-0 ra-prime))
+      (recv (cat ra-prime-0 (enc ra-prime k)))
+      (send (enc ra-prime-0 k))))
+  (label 46)
+  (parent 26)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+        (tb tb))))
+  (origs (k (1 1)) (ra-prime (4 1)) (rb-prime (0 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (tkt tkt-0 tkt-1 mesg)
+    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 text)
+    (a b ks name) (k skey))
+  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
+    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand init 3 (tkt tkt-1) (ra ra) (rb ra-prime-1) (tb tb) (a a)
+    (b b) (ks ks) (k k))
+  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
+    ((1 1) (5 1)) ((2 1) (1 0)) ((3 3) (0 2)) ((4 3) (3 2))
+    ((5 2) (4 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra-prime rb-prime k)
+  (operation nonce-test
+    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-0 ra) (tb-0 tb)) k (5 1)
+    (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
+      (send (cat tkt ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
+      (send (cat tkt-0 ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) tkt-1 ra-prime-1))
+      (send (cat tkt-1 (enc ra-prime-1 k)))))
+  (label 50)
+  (parent 26)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+        (tb tb))))
+  (origs (k (1 1)) (rb-prime (0 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (tkt tkt-0 mesg)
+    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 rb-prime-0
+      text) (a b ks name) (k skey))
+  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
+    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand resp-reauth 2 (tb tb) (ra-prime ra-prime-1)
+    (rb-prime rb-prime-0) (a a) (b b) (ks ks) (k k))
+  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
+    ((1 1) (5 0)) ((2 1) (1 0)) ((3 3) (0 2)) ((4 3) (3 2))
+    ((5 1) (4 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra-prime rb-prime k)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
+      (send (cat tkt ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
+      (send (cat tkt-0 ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (send (cat rb-prime-0 (enc ra-prime-1 k)))))
+  (label 51)
+  (parent 26)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+        (tb tb))))
+  (origs (k (1 1)) (rb-prime (0 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (tkt tkt-0 tkt-1 mesg)
+    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 text)
+    (a b ks name) (k skey))
+  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
+    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime)
+    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
+  (precedes ((0 1) (5 2)) ((1 1) (3 0)) ((1 1) (4 0)) ((1 1) (5 0))
+    ((2 1) (1 0)) ((3 3) (0 2)) ((4 3) (3 2)) ((5 1) (0 0))
+    ((5 3) (4 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra-prime rb-prime k)
+  (operation encryption-test (displaced 6 0 resp-reauth 2)
+    (enc ra-prime-2 k) (5 2))
+  (traces
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
+      (send (cat tkt ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
+      (send (cat tkt-0 ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
+      (send (cat tkt-1 ra-prime))
+      (recv (cat ra-prime-1 (enc ra-prime k)))
+      (send (enc ra-prime-1 k))))
+  (label 54)
+  (parent 26)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+        (tb tb))))
+  (origs (k (1 1)) (ra-prime (5 1)) (rb-prime (0 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (tkt tkt-0 tkt-1 tkt-2 mesg)
+    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-prime-2
+      text) (a b ks name) (k skey))
+  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
+    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime-2)
+    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand init 3 (tkt tkt-2) (ra ra) (rb ra-prime-2) (tb tb) (a a)
+    (b b) (ks ks) (k k))
+  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
+    ((1 1) (5 0)) ((1 1) (6 1)) ((2 1) (1 0)) ((3 3) (0 2))
+    ((4 3) (3 2)) ((5 3) (4 2)) ((6 2) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra-prime rb-prime k)
+  (operation nonce-test
+    (contracted (a-0 a) (b-0 b) (ks-0 ks) (ra-0 ra) (tb-0 tb)) k (6 1)
+    (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
+      (send (cat tkt ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
+      (send (cat tkt-0 ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
+      (send (cat tkt-1 ra-prime-2))
+      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
+      (send (enc ra-prime-1 k)))
+    ((send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) tkt-2 ra-prime-2))
+      (send (cat tkt-2 (enc ra-prime-2 k)))))
+  (label 58)
+  (parent 26)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+        (tb tb))))
+  (origs (k (1 1)) (rb-prime (0 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (tkt tkt-0 tkt-1 mesg)
+    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-prime-2
+      rb-prime-0 text) (a b ks name) (k skey))
+  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
+    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime-2)
+    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand resp-reauth 2 (tb tb) (ra-prime ra-prime-2)
+    (rb-prime rb-prime-0) (a a) (b b) (ks ks) (k k))
+  (precedes ((0 1) (3 2)) ((1 1) (0 0)) ((1 1) (3 0)) ((1 1) (4 0))
+    ((1 1) (5 0)) ((1 1) (6 0)) ((2 1) (1 0)) ((3 3) (0 2))
+    ((4 3) (3 2)) ((5 3) (4 2)) ((6 1) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra-prime rb-prime k)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
+      (send (cat tkt ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
+      (send (cat tkt-0 ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
+      (send (cat tkt-1 ra-prime-2))
+      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
+      (send (enc ra-prime-1 k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-2))
+      (send (cat rb-prime-0 (enc ra-prime-2 k)))))
+  (label 59)
+  (parent 26)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+        (tb tb))))
+  (origs (k (1 1)) (rb-prime (0 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (tkt tkt-0 tkt-1 tkt-2 mesg)
+    (ra-prime rb-prime tb ra rb rb-0 ra-prime-0 ra-prime-1 ra-prime-2
+      text) (a b ks name) (k skey))
+  (defstrand resp-reauth 3 (tb tb) (ra-prime ra-prime)
+    (rb-prime rb-prime) (a a) (b b) (ks ks) (k k))
+  (defstrand keyserver 2 (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks)
+    (k k))
+  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (tkt tkt) (ra ra) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand init-reauth 4 (tkt tkt-0) (ra ra) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand init-reauth 4 (tkt tkt-1) (ra ra) (ra-prime ra-prime-2)
+    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks) (k k))
+  (defstrand init-reauth 4 (tkt tkt-2) (ra ra) (ra-prime ra-prime)
+    (rb-prime ra-prime-2) (tb tb) (a a) (b b) (ks ks) (k k))
+  (precedes ((0 1) (6 2)) ((1 1) (3 0)) ((1 1) (4 0)) ((1 1) (5 0))
+    ((1 1) (6 0)) ((2 1) (1 0)) ((3 3) (0 2)) ((4 3) (3 2))
+    ((5 3) (4 2)) ((6 1) (0 0)) ((6 3) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra-prime rb-prime k)
+  (operation encryption-test (displaced 7 0 resp-reauth 2)
+    (enc ra-prime-3 k) (6 2))
+  (traces
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks)))))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt))
+      (send (cat tkt ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-0))
+      (send (cat tkt-0 ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-1))
+      (send (cat tkt-1 ra-prime-2))
+      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
+      (send (enc ra-prime-1 k)))
+    ((recv (cat (enc b ra k tb (ltk a ks)) tkt-2))
+      (send (cat tkt-2 ra-prime))
+      (recv (cat ra-prime-2 (enc ra-prime k)))
+      (send (enc ra-prime-2 k))))
+  (label 62)
+  (parent 26)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (ks ks) (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+        (tb tb))))
+  (origs (k (1 1)) (ra-prime (6 1)) (rb-prime (0 1))))
+
+(comment "Strand bound exceeded--aborting run")
diff --git a/tst/jdg-wonthull.scm b/tst/jdg-wonthull.scm
new file mode 100644
--- /dev/null
+++ b/tst/jdg-wonthull.scm
@@ -0,0 +1,41 @@
+(herald jdg-wonthull (bound 9))
+
+;;;  Wonthull:  Demonstrates a subtle incompleteness.
+;;;
+;;;  The second POV skeleton given is a shape not produced
+;;;   or covered in the first search.  The problem is that an
+;;;   augmentation is attempted only with the most general
+;;;   version of the responder strand that uses x3 as y1, not
+;;;   the more specific version in which this does not lead to
+;;;   x3 being originated in more than one place.)
+
+(defprotocol wonthull basic
+  (defrole init
+    (vars (a name) (x1 x2 x3 x4 text))
+    (trace
+     (send (cat (enc x1 x2 (pubk a))
+		(enc x3 x2 (pubk a))))
+     (recv (enc "okay" x3 x4 (pubk a)))
+     )
+    (uniq-orig x3)
+    (non-orig (privk a))
+    )
+  (defrole resp (vars (a name) (y1 y2 y3 text))
+    (trace
+     (recv (enc y1 y2 (pubk a)) )
+     (send (enc "okay" y3 y1 (pubk a)) )
+     )
+    )
+  )
+
+(defskeleton wonthull
+  (vars)
+  (defstrand init 2)
+)
+
+(defskeleton wonthull
+  (vars (a name) (n text) (x1 x2 x3 x4 text))
+  (defstrand init 2 (a a) (x1 x1) (x2 x3) (x3 x3) (x4 x1))
+  (defstrand resp 2 (a a) (y1 x1) (y2 x3) (y3 x3))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+)
diff --git a/tst/jdg-wonthull.tst b/tst/jdg-wonthull.tst
new file mode 100644
--- /dev/null
+++ b/tst/jdg-wonthull.tst
@@ -0,0 +1,395 @@
+(herald jdg-wonthull (bound 9))
+
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/jdg-wonthull.scm")
+(comment "Strand count bounded at 9")
+
+(defprotocol wonthull basic
+  (defrole init
+    (vars (a name) (x1 x2 x3 x4 text))
+    (trace (send (cat (enc x1 x2 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a))))
+    (non-orig (privk a))
+    (uniq-orig x3))
+  (defrole resp
+    (vars (a name) (y1 y2 y3 text))
+    (trace (recv (enc y1 y2 (pubk a)))
+      (send (enc "okay" y3 y1 (pubk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wonthull
+  (vars (x1 x2 x3 x4 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x3) (x4 x4) (a a))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (traces
+    ((send (cat (enc x1 x2 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (x3 (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull
+  (vars (x1 x2 x4 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x2) (x4 x4) (a a))
+  (non-orig (privk a))
+  (uniq-orig x2)
+  (operation nonce-test (displaced 1 0 init 1) x3 (0 1)
+    (enc x3 x2 (pubk a)))
+  (strand-map 0)
+  (traces
+    ((send (cat (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a))))
+      (recv (enc "okay" x2 x4 (pubk a)))))
+  (label 1)
+  (parent 0)
+  (unrealized (0 1))
+  (origs (x2 (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull
+  (vars (x1 x2 x3 x4 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x3) (x4 x4) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x2) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (0 1)
+    (enc x3 x2 (pubk a)))
+  (strand-map 0)
+  (traces
+    ((send (cat (enc x1 x2 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a))))
+    ((recv (enc x3 x2 (pubk a))) (send (enc "okay" y3 x3 (pubk a)))))
+  (label 2)
+  (parent 0)
+  (seen 3)
+  (seen-ops
+    (3
+      (operation nonce-test (displaced 2 0 init 1) x3 (0 1)
+        (enc "okay" y3 x3 (pubk a)) (enc x3 x2 (pubk a)))
+      (strand-map 0 1)))
+  (unrealized (0 1))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull
+  (vars (x1 x2 x4 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x2) (x4 x4) (a a))
+  (defstrand resp 2 (y1 x2) (y2 x2) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x2)
+  (operation nonce-test (added-strand resp 2) x2 (0 1)
+    (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a)))
+  (strand-map 0)
+  (traces
+    ((send (cat (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a))))
+      (recv (enc "okay" x2 x4 (pubk a))))
+    ((recv (enc x2 x2 (pubk a))) (send (enc "okay" y3 x2 (pubk a)))))
+  (label 3)
+  (parent 1)
+  (unrealized (0 1))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull
+  (vars (x1 x2 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x2) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (x3 y3) (x4 y3)) y3 (0 1)
+    (enc "okay" y3 y3 (pubk a)) (enc y3 x2 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1 x2 (pubk a)) (enc y3 x2 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x2 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 4)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (x1 x1) (x2 x2) (x3 y3) (x4 y3))))
+  (origs (y3 (0 0))))
+
+(defskeleton wonthull
+  (vars (x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 y3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (x2 y3) (x4 y3)) y3 (0 1)
+    (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 y3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 5)
+  (parent 3)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull
+  (vars (x1 x2 x4 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x2) (x4 x4) (a a))
+  (defstrand resp 2 (y1 x2) (y2 x2) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x2) (y2 x2) (y3 x2) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x2)
+  (operation nonce-test (added-strand resp 2) x2 (0 1)
+    (enc "okay" y3 x2 (pubk a)) (enc x1 x2 (pubk a))
+    (enc x2 x2 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a))))
+      (recv (enc "okay" x2 x4 (pubk a))))
+    ((recv (enc x2 x2 (pubk a))) (send (enc "okay" y3 x2 (pubk a))))
+    ((recv (enc x2 x2 (pubk a))) (send (enc "okay" x2 x2 (pubk a)))))
+  (label 6)
+  (parent 3)
+  (unrealized (0 1))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull
+  (vars (x1 x2 x4 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x2) (x4 x4) (a a))
+  (defstrand resp 2 (y1 x2) (y2 x2) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x2) (y2 x2) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x2)
+  (operation nonce-test (added-strand resp 2) x2 (0 1)
+    (enc "okay" y3 x2 (pubk a)) (enc x1 x2 (pubk a))
+    (enc x2 x2 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a))))
+      (recv (enc "okay" x2 x4 (pubk a))))
+    ((recv (enc x2 x2 (pubk a))) (send (enc "okay" y3 x2 (pubk a))))
+    ((recv (enc x2 x2 (pubk a))) (send (enc "okay" x1 x2 (pubk a)))))
+  (label 7)
+  (parent 3)
+  (seen 10)
+  (seen-ops
+    (10
+      (operation nonce-test (added-strand resp 2) x2 (0 1)
+        (enc "okay" x1 x2 (pubk a)) (enc "okay" y3 x2 (pubk a))
+        (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a))) (strand-map 0 1 3)))
+  (unrealized (0 1))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull
+  (vars (x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 y3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3 y3-0)
+  (operation generalization separated y3-0)
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3-0 y3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a)))))
+  (label 8)
+  (parent 5)
+  (seen 4)
+  (seen-ops (4 (operation generalization forgot y3) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull
+  (vars (x1 x2 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x2) (x4 x2) (a a))
+  (defstrand resp 2 (y1 x2) (y2 x2) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x2) (y2 x2) (y3 x2) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x2)
+  (operation nonce-test (contracted (x4 x2)) x2 (0 1)
+    (enc "okay" x2 x2 (pubk a)) (enc "okay" y3 x2 (pubk a))
+    (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a))))
+      (recv (enc "okay" x2 x2 (pubk a))))
+    ((recv (enc x2 x2 (pubk a))) (send (enc "okay" y3 x2 (pubk a))))
+    ((recv (enc x2 x2 (pubk a))) (send (enc "okay" x2 x2 (pubk a)))))
+  (label 9)
+  (parent 6)
+  (seen 5)
+  (seen-ops
+    (5 (operation generalization deleted (1 0)) (strand-map 0 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull
+  (vars (x1 x2 x4 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x2) (x4 x4) (a a))
+  (defstrand resp 2 (y1 x2) (y2 x2) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x2) (y2 x2) (y3 x2) (a a))
+  (defstrand resp 2 (y1 x2) (y2 x2) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x2)
+  (operation nonce-test (added-strand resp 2) x2 (0 1)
+    (enc "okay" x2 x2 (pubk a)) (enc "okay" y3 x2 (pubk a))
+    (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a))))
+      (recv (enc "okay" x2 x4 (pubk a))))
+    ((recv (enc x2 x2 (pubk a))) (send (enc "okay" y3 x2 (pubk a))))
+    ((recv (enc x2 x2 (pubk a))) (send (enc "okay" x2 x2 (pubk a))))
+    ((recv (enc x2 x2 (pubk a))) (send (enc "okay" x1 x2 (pubk a)))))
+  (label 10)
+  (parent 6)
+  (unrealized (0 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull
+  (vars (x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x2 x1) (x4 x1)) x1 (0 1)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 11)
+  (parent 7)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull
+  (vars (x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 y3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (x2 y3) (x4 y3)) y3 (0 1)
+    (enc "okay" x1 y3 (pubk a)) (enc "okay" y3 y3 (pubk a))
+    (enc x1 y3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 y3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 12)
+  (parent 7)
+  (seen 5)
+  (seen-ops
+    (5 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull
+  (vars (x1 x2 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x2) (x4 x2) (a a))
+  (defstrand resp 2 (y1 x2) (y2 x2) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x2) (y2 x2) (y3 x2) (a a))
+  (defstrand resp 2 (y1 x2) (y2 x2) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x2)
+  (operation nonce-test (contracted (x4 x2)) x2 (0 1)
+    (enc "okay" x1 x2 (pubk a)) (enc "okay" x2 x2 (pubk a))
+    (enc "okay" y3 x2 (pubk a)) (enc x1 x2 (pubk a))
+    (enc x2 x2 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a))))
+      (recv (enc "okay" x2 x2 (pubk a))))
+    ((recv (enc x2 x2 (pubk a))) (send (enc "okay" y3 x2 (pubk a))))
+    ((recv (enc x2 x2 (pubk a))) (send (enc "okay" x2 x2 (pubk a))))
+    ((recv (enc x2 x2 (pubk a))) (send (enc "okay" x1 x2 (pubk a)))))
+  (label 13)
+  (parent 10)
+  (seen 12)
+  (seen-ops
+    (12 (operation generalization deleted (1 0)) (strand-map 0 2 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull
+  (vars (x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation generalization deleted (1 0))
+  (strand-map 0 2)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 14)
+  (parent 11)
+  (seen 5)
+  (seen-ops
+    (5 (operation generalization separated x1-0) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(comment "Nothing left to do")
+
+(defprotocol wonthull basic
+  (defrole init
+    (vars (a name) (x1 x2 x3 x4 text))
+    (trace (send (cat (enc x1 x2 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a))))
+    (non-orig (privk a))
+    (uniq-orig x3))
+  (defrole resp
+    (vars (a name) (y1 y2 y3 text))
+    (trace (recv (enc y1 y2 (pubk a)))
+      (send (enc "okay" y3 y1 (pubk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wonthull
+  (vars (x1 x3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a)))))
+  (label 15)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (x1 x1) (x3 x3))))
+  (origs (x3 (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/kelly1.tst b/tst/kelly1.tst
--- a/tst/kelly1.tst
+++ b/tst/kelly1.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/kelly1.scm")
 
 (defprotocol kelly1 basic
@@ -64,6 +64,7 @@
   (uniq-orig N)
   (operation encryption-test (added-strand appraiser 5)
     (enc policy (pubk S) Ns (privk A)) (0 3))
+  (strand-map 0)
   (traces
     ((send (cat C S request))
       (recv (cat S C (enc response Ns (privk S))))
@@ -95,6 +96,7 @@
   (uniq-orig Ns N)
   (operation encryption-test (added-strand server 3)
     (enc Quote measurements N Ns (pubk S) (privk AIK)) (1 2))
+  (strand-map 0 1)
   (traces
     ((send (cat C S request))
       (recv (cat S C (enc response Ns (privk S))))
@@ -131,6 +133,7 @@
   (uniq-orig Ns N)
   (operation encryption-test (displaced 2 3 server 5)
     (enc response Ns (privk S)) (0 1))
+  (strand-map 0 1 2)
   (traces
     ((send (cat C S request))
       (recv (cat S C (enc response Ns (privk S))))
diff --git a/tst/kelly1_shapes.tst b/tst/kelly1_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/kelly1_shapes.tst
@@ -0,0 +1,99 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/kelly1.scm")
+
+(defprotocol kelly1 basic
+  (defrole client
+    (vars (C A S name) (Ns request Check policy response text))
+    (trace (send (cat C S request))
+      (recv (cat S C (enc response Ns (privk S))))
+      (send (cat C A Check (pubk S)))
+      (recv (cat A C (enc policy (pubk S) Ns (privk A))))))
+  (defrole appraiser
+    (vars (C A S name) (N Ns hello Quote measurements Check policy text)
+      (AIK name))
+    (trace (recv (cat S A hello)) (send (cat A S N))
+      (recv
+        (cat S A (enc Quote measurements N Ns (pubk S) (privk AIK))
+          (pubk S))) (recv (cat C A Check (pubk S)))
+      (send (cat A C (enc policy (pubk S) Ns (privk A)))))
+    (non-orig (privk A) (privk AIK))
+    (uniq-orig N))
+  (defrole server
+    (vars (C A S name)
+      (N Ns hello Quote measurements request response text) (AIK name))
+    (trace (send (cat S A hello)) (recv (cat A S N))
+      (send
+        (cat S A (enc Quote measurements N Ns (pubk S) (privk AIK))
+          (pubk S))) (recv (cat C S request))
+      (send (cat S C (enc response Ns (privk S)))))
+    (non-orig (privk S) (privk AIK))
+    (uniq-orig Ns))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton kelly1
+  (vars (Ns request Check policy response text) (A C S name))
+  (defstrand client 4 (Ns Ns) (request request) (Check Check)
+    (policy policy) (response response) (C C) (A A) (S S))
+  (non-orig (privk A))
+  (traces
+    ((send (cat C S request))
+      (recv (cat S C (enc response Ns (privk S))))
+      (send (cat C A Check (pubk S)))
+      (recv (cat A C (enc policy (pubk S) Ns (privk A))))))
+  (label 0)
+  (unrealized (0 3))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton kelly1
+  (vars
+    (Ns request Check policy response hello Check-0 N hello-0 Quote
+      measurements request-0 text) (A C S C-0 C-1 A-0 AIK name))
+  (defstrand client 4 (Ns Ns) (request request) (Check Check)
+    (policy policy) (response response) (C C) (A A) (S S))
+  (defstrand appraiser 5 (N N) (Ns Ns) (hello hello) (Quote Quote)
+    (measurements measurements) (Check Check-0) (policy policy) (C C-0)
+    (A A) (S S) (AIK AIK))
+  (defstrand server 5 (N N) (Ns Ns) (hello hello-0) (Quote Quote)
+    (measurements measurements) (request request-0) (response response)
+    (C C-1) (A A-0) (S S) (AIK AIK))
+  (precedes ((1 1) (2 1)) ((1 4) (0 3)) ((2 2) (1 2)) ((2 4) (0 1)))
+  (non-orig (privk A) (privk S) (privk AIK))
+  (uniq-orig Ns N)
+  (operation encryption-test (displaced 2 3 server 5)
+    (enc response Ns (privk S)) (0 1))
+  (traces
+    ((send (cat C S request))
+      (recv (cat S C (enc response Ns (privk S))))
+      (send (cat C A Check (pubk S)))
+      (recv (cat A C (enc policy (pubk S) Ns (privk A)))))
+    ((recv (cat S A hello)) (send (cat A S N))
+      (recv
+        (cat S A (enc Quote measurements N Ns (pubk S) (privk AIK))
+          (pubk S))) (recv (cat C-0 A Check-0 (pubk S)))
+      (send (cat A C-0 (enc policy (pubk S) Ns (privk A)))))
+    ((send (cat S A-0 hello-0)) (recv (cat A-0 S N))
+      (send
+        (cat S A-0 (enc Quote measurements N Ns (pubk S) (privk AIK))
+          (pubk S))) (recv (cat C-1 S request-0))
+      (send (cat S C-1 (enc response Ns (privk S))))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((A A) (C C) (S S) (Ns Ns) (request request) (Check Check)
+        (policy policy) (response response))))
+  (origs (Ns (2 2)) (N (1 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/kelly64.lisp b/tst/kelly64.lisp
deleted file mode 100644
--- a/tst/kelly64.lisp
+++ /dev/null
@@ -1,127 +0,0 @@
-(herald "Kelly's 64-shape protocol" (bound 10))
-
-(defprotocol kelly64 basic
-  (defrole client
-    (vars (C name) (A name) (S name) (AIKC name) (NC text)
-	  (hello text) (Quote text) (mc text) (request text)
-	  (response text) (Check text) (P2 text))
-    (trace
-     (send (cat C A hello))
-     (recv (cat A C NC))
-     (send (cat C A (enc
-		     (cat Quote mc NC
-			  (enc
-			   (pubk C)
-			   (privk C)))
-		     (privk AIKC))
-		(enc
-		 (pubk C)
-		 (privk C))))
-     (send (cat C S
-		(enc (cat request request)
-		     (privk C))))
-     (recv (cat S C
-		(enc response
-		     (privk S))))
-     (send (cat C A Check (pubk S)))
-     (recv (cat A C
-		(enc (cat P2 (pubk S))
-		     (privk A)))))
-    (non-orig (privk C) (privk AIKC) (privk A))
-    )
-  ;;   non = (privk(C);privk(AIKC);privk(A));
-  ;;   uniq = ();
-
-  (defrole appraiser
-    (vars (C name) (A name) (S name) (AIKS name) (AIKC name)
-	  (NS text) (NC text) (hello text)(Quote text)
-	  (ms text)(mc text)(Check text)(P1 text)(P2 text))
-    (trace
-
-     (recv (cat S A hello))
-     (send (cat A S NS))
-     (recv (cat S A
-		(enc
-		 (cat Quote ms NS
-		      (enc (pubk S)
-			   (privk S)))
-		 (privk AIKS))
-		(enc
-		 (pubk S)
-		 (privk S))))
-     (recv (cat C A hello))
-     (send (cat A C NC))
-     (recv (cat C A (enc
-		     (cat Quote mc NC (enc
-				       (pubk C)
-				       (privk C)))
-		     (privk AIKC))
-		(enc
-		 (pubk C)
-		 (privk C))))
-     (recv (cat S A  Check (pubk C)))
-     (send (cat A S (enc
-		     (cat P1 (pubk C))
-		     (privk A))))
-     (recv (cat C A Check (pubk S)))
-     (send (cat A C (enc
-		     (cat P2 (pubk S))
-		     (privk A))))
-     )
-    (non-orig (privk A) (privk AIKS) (privk AIKC))
-    (uniq-orig NS NC)
-    ;;   non = (privk(A);privk(AIKS);privk(AIKC));
-    ;;   uniq = (NS;NC);
-    )
-
-  (defrole server
-    (vars (C name) (A name) (S name) (AIKS name) (NS text)
-	  (hello text) (Quote text) (ms text) (request text)
-	  (Check text) (P1 text) (response text))
-    (trace
-     ;;   non = (privk(S);privk(AIKS);privk(A));
-     ;;  uniq = ();
-
-     (send (cat S A hello))
-     (recv (cat A S NS))
-     (send (cat S A (enc
-		     (cat Quote ms NS (enc
-				       (pubk S)
-				       (privk S)))
-		     (privk AIKS))
-		(enc
-		 (pubk S)
-		 (privk S))))
-     (recv (cat C S (enc
-		     (cat request request)
-		     (privk C))))
-     (send (cat S A Check (pubk C)))
-     (recv (cat A S (enc
-		     (cat P1 (pubk C))
-		     (privk A))))
-     (send (cat S C (enc
-		     response
-		     (privk S))))
-     )
-    (non-orig (privk S) (privk AIKS) (privk A))
-    )
-
-  )
-
-(defskeleton kelly64
-  (vars (C name) (A name) (S name) (AIKC name) (NC text)
-	  (hello text) (Quote text) (mc text) (request text)
-	  (response text) (Check text) (P2 text))
-  (defstrand client 7 (C C) (A A) (S S) (AIKC AIKC)
-    (NC NC) (hello hello) (Quote Quote) (mc mc)
-    (request request) (response response) (Check Check) (P2 P2)))
-
-(defskeleton kelly64
-  (vars (C name) (A name) (S name) (AIKC name) (NC text)
-	  (hello text) (Quote text) (mc text) (request text)
-	  (response text) (Check text) (P1 text))
-  (defstrand server 7 ))
-
-(defskeleton kelly64
-(vars)
-  (defstrand appraiser 10))
diff --git a/tst/kerb5.lisp b/tst/kerb5.lisp
deleted file mode 100644
--- a/tst/kerb5.lisp
+++ /dev/null
@@ -1,94 +0,0 @@
-;; Kerberos 5 specification, taken from
-;; http://www.lsv.ens-cachan.fr/spore/kerberos.html
-;;
-;; Ku in the original document has become pubk/privk U.
-;; Since we cannot confirm with CPSA that T1 is between T1start and T1expire,
-;; and since the purpose of T1 is to have a defined relationship with T1start
-;; and T1expire, I am replacing T1 with (cat T1start T1expire). Ditto with T2.
-
-(defprotocol kerb5 basic
-
-  ;; U is the client's user (and, approximately, its principal.)
-  (defrole client
-    (vars (U name) (G name) (L1 text) (N1 text) (C name) (S name)
-	  (L2 text) (N2 text) (Kcg skey) (T1start text) (T1expire text)
-	  (Kag skey) (Kgs skey) (T2start text) (T2expire text)
-	  (Kcs skey))
-    (trace
-     (send (cat U G L1 N1))
-     (recv (cat U
-		(enc (cat U C G Kcg T1start T1expire) Kag)
-		(enc (cat G Kcg T1start T1expire) (pubk U))))
-     (send (cat S
-		L2
-		N2
-		(enc (cat U C G Kcg T1start T1expire) Kag)
-		(enc (cat C T1start T1expire) Kcg)))
-     (recv (cat U
-		(enc (cat U C S Kcs T2start T2expire) Kgs)
-		(enc (cat S Kcs T2start T2expire N2) Kcg)))
-     (send (cat (enc (cat U C S Kcs T2start T2expire) Kgs)
-		(enc (cat C T2start T2expire) Kcs)))
-     (recv (enc (cat T2start T2expire) Kcs))
-     )
-    (uniq-orig N1 N2)
-    (non-orig (privk U))
-    )
-
-;; A is the key distribution authority's principal; never used explicitly
-;; Kag is a long-term shared key between A and G.
-;; Kcg is the session key to be shared by C and G, created by A.
-  (defrole authority
-    (vars (U name) (G name) (C name) (L1 text) (N1 text)
-	  (T1start text) (T1expire text) (Kag skey) (Kcg skey))
-    (trace
-     (recv (cat U G L1 N1))
-     (send (cat U
-		(enc (cat U C G Kcg T1start T1expire) Kag)
-		(enc (cat G Kcg T1start T1expire) (pubk U))))
-     )
-    (uniq-orig Kcg)
-    (non-orig Kag)
-    )
-
-;; G is the ticket granting server's principal.
-;; Kag is a long-term shared key between A and G.
-;; Kgs is a long-term shared key between G and S.
-  (defrole granter
-       (vars (U name) (G name) (C name) (S name) (L2 text) (N2 text)
-	  (Kcg skey) (T1start text) (T1expire text) (Kag skey)
-	  (Kgs skey) (T2start text) (T2expire text) (Kcs skey))
-       (trace
-	(recv (cat S
-		   L2
-		   N2
-		   (enc (cat U C G Kcg T1start T1expire) Kag)
-		   (enc (cat C T1start T1expire) Kcg)))
-	(send (cat U
-		   (enc (cat U C S Kcs T2start T2expire) Kgs)
-		   (enc (cat S Kcs T2start T2expire N2) Kcg)))
-	)
-       (uniq-orig Kcs)
-       (non-orig Kgs Kag)
-    )
-
-;; S is the principal of the server that C wishes to communicate with
-;; Kgs is a long-term shared key between G and S.
-  (defrole server
-    (vars (U name) (C name) (S name) (Kgs skey) (T2start text)
-	  (T2expire text) (Kcs skey))
-    (trace
-     (recv (cat (enc (cat U C S Kcs T2start T2expire) Kgs)
-		(enc (cat C T2start T2expire) Kcs)))
-     (send (enc (cat T2start T2expire) Kcs))
-     )
-    (uniq-orig )
-    (non-orig Kgs)
-    )
-
-)
-
- (defskeleton kerb5
-    (vars )
-    (defstrand server 2)
-    )
diff --git a/tst/kerberos-variant-guar.scm b/tst/kerberos-variant-guar.scm
new file mode 100644
--- /dev/null
+++ b/tst/kerberos-variant-guar.scm
@@ -0,0 +1,48 @@
+(defprotocol kerberos-variant basic
+  (defrole init
+    (vars (a name) (b name) (ks name) (t n text) (t-prime text) (l text) (a-ks-lt k skey)
+	  (ticket mesg))
+    (trace
+     (send (cat a b ks))
+     (recv
+      (cat (enc (cat t l k a b ks) a-ks-lt)
+	   ticket))
+     (send (cat (enc (cat a t n) k) ticket))
+     (recv (enc n t-prime k))))
+  (defrole resp
+    (vars (a name) (b name) (ks name) (t n text) (t-prime text) (l text) (b-ks-lt k skey))
+    (trace (recv (cat (enc (cat a t n) k) (enc (cat "ticket" t l k a b ks) b-ks-lt)))
+      (send (enc n t-prime k))))
+  (defrole keyserver
+    (vars (a name) (b name) (ks name) (t text) (l text) (a-ks-lt b-ks-lt k skey))
+    (trace
+     (recv (cat a b ks))
+     (guar (and (fact long-term a ks a-ks-lt)
+		(fact long-term b ks b-ks-lt)))
+     (send
+      (cat (enc (cat t l k a b ks) a-ks-lt)
+           (enc (cat "ticket" t l k a b ks) b-ks-lt))))
+    (uniq-orig k))
+
+  (defrule long-term-key-non
+    (forall
+     ((p ks name) (k-lt skey))
+     (implies (fact long-term p ks k-lt)
+	      (non k-lt)))))
+
+
+(defskeleton kerberos-variant
+  (vars (a name) (b name) (ks name) (t n text) (a-ks-lt b-ks-lt skey))
+  (defstrand init 4 (a a) (b b) (ks ks) (n n) (a-ks-lt a-ks-lt)) 
+  (non-orig a-ks-lt)
+  (uniq-orig n))
+
+(defskeleton kerberos-variant
+  (vars (a name) (b name) (ks name) (b-ks-lt skey))
+  (defstrand resp 2 (a a) (b b) (ks ks) (b-ks-lt b-ks-lt))
+  (non-orig b-ks-lt))
+
+(defskeleton kerberos-variant
+  (vars (a name) (b name) (ks name) (a-ks-lt b-ks-lt skey))
+  (defstrand keyserver 2 (a a) (b b) (ks ks)(a-ks-lt a-ks-lt) (b-ks-lt b-ks-lt))
+  (non-orig a-ks-lt b-ks-lt))
diff --git a/tst/kerberos-variant-guar.tst b/tst/kerberos-variant-guar.tst
new file mode 100644
--- /dev/null
+++ b/tst/kerberos-variant-guar.tst
@@ -0,0 +1,502 @@
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/kerberos-variant-guar.scm")
+
+(defprotocol kerberos-variant basic
+  (defrole init
+    (vars (a b ks name) (t n t-prime l text) (a-ks-lt k skey)
+      (ticket mesg))
+    (trace (send (cat a b ks))
+      (recv (cat (enc t l k a b ks a-ks-lt) ticket))
+      (send (cat (enc a t n k) ticket)) (recv (enc n t-prime k))))
+  (defrole resp
+    (vars (a b ks name) (t n t-prime l text) (b-ks-lt k skey))
+    (trace
+      (recv (cat (enc a t n k) (enc "ticket" t l k a b ks b-ks-lt)))
+      (send (enc n t-prime k))))
+  (defrole keyserver
+    (vars (a b ks name) (t l text) (a-ks-lt b-ks-lt k skey))
+    (trace (recv (cat a b ks))
+      (send
+        (cat (enc t l k a b ks a-ks-lt)
+          (enc "ticket" t l k a b ks b-ks-lt))))
+    (uniq-orig k))
+  (defrule long-term-key-non
+    (forall ((p ks name) (k-lt skey))
+      (implies (fact long-term p ks k-lt) (non k-lt))))
+  (defrule guar-keyserver-2
+    (forall
+      ((z strd) (b-ks-lt skey) (b name) (a-ks-lt skey) (ks a name))
+      (implies
+        (and (p "keyserver" z (idx 2)) (p "keyserver" "a" z a)
+          (p "keyserver" "ks" z ks) (p "keyserver" "a-ks-lt" z a-ks-lt)
+          (p "keyserver" "b" z b) (p "keyserver" "b-ks-lt" z b-ks-lt))
+        (and (fact long-term a ks a-ks-lt)
+          (fact long-term b ks b-ks-lt)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton kerberos-variant
+  (vars (ticket mesg) (a-ks-lt k skey) (n t t-prime l text)
+    (a b ks name))
+  (defstrand init 4 (ticket ticket) (a-ks-lt a-ks-lt) (k k) (t t) (n n)
+    (t-prime t-prime) (l l) (a a) (b b) (ks ks))
+  (non-orig a-ks-lt)
+  (uniq-orig n)
+  (traces
+    ((send (cat a b ks)) (recv (cat (enc t l k a b ks a-ks-lt) ticket))
+      (send (cat (enc a t n k) ticket)) (recv (enc n t-prime k))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n (0 2)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton kerberos-variant
+  (vars (ticket mesg) (a-ks-lt k b-ks-lt skey) (n t t-prime l text)
+    (a b ks name))
+  (defstrand init 4 (ticket ticket) (a-ks-lt a-ks-lt) (k k) (t t) (n n)
+    (t-prime t-prime) (l l) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (a-ks-lt a-ks-lt) (b-ks-lt b-ks-lt) (k k) (t t)
+    (l l) (a a) (b b) (ks ks))
+  (precedes ((1 1) (0 1)))
+  (non-orig a-ks-lt b-ks-lt)
+  (uniq-orig k n)
+  (facts (long-term b ks b-ks-lt) (long-term a ks a-ks-lt))
+  (rule guar-keyserver-2 long-term-key-non)
+  (operation encryption-test (added-strand keyserver 2)
+    (enc t l k a b ks a-ks-lt) (0 1))
+  (strand-map 0)
+  (traces
+    ((send (cat a b ks)) (recv (cat (enc t l k a b ks a-ks-lt) ticket))
+      (send (cat (enc a t n k) ticket)) (recv (enc n t-prime k)))
+    ((recv (cat a b ks))
+      (send
+        (cat (enc t l k a b ks a-ks-lt)
+          (enc "ticket" t l k a b ks b-ks-lt)))))
+  (label 1)
+  (parent 0)
+  (unrealized (0 3))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton kerberos-variant
+  (vars (ticket mesg) (a-ks-lt k b-ks-lt b-ks-lt-0 skey)
+    (n t t-prime l t-0 l-0 text) (a b ks a-0 b-0 ks-0 name))
+  (defstrand init 4 (ticket ticket) (a-ks-lt a-ks-lt) (k k) (t t) (n n)
+    (t-prime t-prime) (l l) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (a-ks-lt a-ks-lt) (b-ks-lt b-ks-lt) (k k) (t t)
+    (l l) (a a) (b b) (ks ks))
+  (defstrand resp 2 (b-ks-lt b-ks-lt-0) (k k) (t t-0) (n n)
+    (t-prime t-prime) (l l-0) (a a-0) (b b-0) (ks ks-0))
+  (precedes ((0 2) (2 0)) ((1 1) (0 1)) ((2 1) (0 3)))
+  (non-orig a-ks-lt b-ks-lt)
+  (uniq-orig k n)
+  (facts (long-term b ks b-ks-lt) (long-term a ks a-ks-lt))
+  (rule guar-keyserver-2)
+  (operation encryption-test (added-strand resp 2) (enc n t-prime k)
+    (0 3))
+  (strand-map 0 1)
+  (traces
+    ((send (cat a b ks)) (recv (cat (enc t l k a b ks a-ks-lt) ticket))
+      (send (cat (enc a t n k) ticket)) (recv (enc n t-prime k)))
+    ((recv (cat a b ks))
+      (send
+        (cat (enc t l k a b ks a-ks-lt)
+          (enc "ticket" t l k a b ks b-ks-lt))))
+    ((recv
+       (cat (enc a-0 t-0 n k)
+         (enc "ticket" t-0 l-0 k a-0 b-0 ks-0 b-ks-lt-0)))
+      (send (enc n t-prime k))))
+  (label 2)
+  (parent 1)
+  (unrealized (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton kerberos-variant
+  (vars (ticket mesg) (a-ks-lt k b-ks-lt skey) (n t t-prime l text)
+    (a b ks name))
+  (defstrand init 4 (ticket ticket) (a-ks-lt a-ks-lt) (k k) (t t) (n n)
+    (t-prime t-prime) (l l) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (a-ks-lt a-ks-lt) (b-ks-lt b-ks-lt) (k k) (t t)
+    (l l) (a a) (b b) (ks ks))
+  (deflistener k)
+  (precedes ((1 1) (0 1)) ((1 1) (2 0)) ((2 1) (0 3)))
+  (non-orig a-ks-lt b-ks-lt)
+  (uniq-orig k n)
+  (facts (long-term b ks b-ks-lt) (long-term a ks a-ks-lt))
+  (rule guar-keyserver-2)
+  (operation encryption-test (added-listener k) (enc n t-prime k) (0 3))
+  (strand-map 0 1)
+  (traces
+    ((send (cat a b ks)) (recv (cat (enc t l k a b ks a-ks-lt) ticket))
+      (send (cat (enc a t n k) ticket)) (recv (enc n t-prime k)))
+    ((recv (cat a b ks))
+      (send
+        (cat (enc t l k a b ks a-ks-lt)
+          (enc "ticket" t l k a b ks b-ks-lt)))) ((recv k) (send k)))
+  (label 3)
+  (parent 1)
+  (unrealized (2 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton kerberos-variant
+  (vars (ticket mesg) (a-ks-lt k b-ks-lt b-ks-lt-0 skey)
+    (n t t-prime l l-0 text) (a b ks b-0 ks-0 name))
+  (defstrand init 4 (ticket ticket) (a-ks-lt a-ks-lt) (k k) (t t) (n n)
+    (t-prime t-prime) (l l) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (a-ks-lt a-ks-lt) (b-ks-lt b-ks-lt) (k k) (t t)
+    (l l) (a a) (b b) (ks ks))
+  (defstrand resp 2 (b-ks-lt b-ks-lt-0) (k k) (t t) (n n)
+    (t-prime t-prime) (l l-0) (a a) (b b-0) (ks ks-0))
+  (precedes ((0 2) (2 0)) ((1 1) (0 1)) ((2 1) (0 3)))
+  (non-orig a-ks-lt b-ks-lt)
+  (uniq-orig k n)
+  (facts (long-term b ks b-ks-lt) (long-term a ks a-ks-lt))
+  (rule guar-keyserver-2)
+  (operation encryption-test (displaced 3 0 init 3) (enc a-0 t-0 n k)
+    (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat a b ks)) (recv (cat (enc t l k a b ks a-ks-lt) ticket))
+      (send (cat (enc a t n k) ticket)) (recv (enc n t-prime k)))
+    ((recv (cat a b ks))
+      (send
+        (cat (enc t l k a b ks a-ks-lt)
+          (enc "ticket" t l k a b ks b-ks-lt))))
+    ((recv
+       (cat (enc a t n k) (enc "ticket" t l-0 k a b-0 ks-0 b-ks-lt-0)))
+      (send (enc n t-prime k))))
+  (label 4)
+  (parent 2)
+  (unrealized (2 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton kerberos-variant
+  (vars (ticket mesg) (a-ks-lt k b-ks-lt b-ks-lt-0 skey)
+    (n t t-prime l t-0 l-0 text) (a b ks a-0 b-0 ks-0 name))
+  (defstrand init 4 (ticket ticket) (a-ks-lt a-ks-lt) (k k) (t t) (n n)
+    (t-prime t-prime) (l l) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (a-ks-lt a-ks-lt) (b-ks-lt b-ks-lt) (k k) (t t)
+    (l l) (a a) (b b) (ks ks))
+  (defstrand resp 2 (b-ks-lt b-ks-lt-0) (k k) (t t-0) (n n)
+    (t-prime t-prime) (l l-0) (a a-0) (b b-0) (ks ks-0))
+  (deflistener k)
+  (precedes ((0 2) (2 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((2 1) (0 3))
+    ((3 1) (2 0)))
+  (non-orig a-ks-lt b-ks-lt)
+  (uniq-orig k n)
+  (facts (long-term b ks b-ks-lt) (long-term a ks a-ks-lt))
+  (rule guar-keyserver-2)
+  (operation encryption-test (added-listener k) (enc a-0 t-0 n k) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat a b ks)) (recv (cat (enc t l k a b ks a-ks-lt) ticket))
+      (send (cat (enc a t n k) ticket)) (recv (enc n t-prime k)))
+    ((recv (cat a b ks))
+      (send
+        (cat (enc t l k a b ks a-ks-lt)
+          (enc "ticket" t l k a b ks b-ks-lt))))
+    ((recv
+       (cat (enc a-0 t-0 n k)
+         (enc "ticket" t-0 l-0 k a-0 b-0 ks-0 b-ks-lt-0)))
+      (send (enc n t-prime k))) ((recv k) (send k)))
+  (label 5)
+  (parent 2)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton kerberos-variant
+  (vars (ticket mesg) (a-ks-lt k b-ks-lt skey) (n t t-prime l text)
+    (a b ks name))
+  (defstrand init 4 (ticket ticket) (a-ks-lt a-ks-lt) (k k) (t t) (n n)
+    (t-prime t-prime) (l l) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (a-ks-lt a-ks-lt) (b-ks-lt b-ks-lt) (k k) (t t)
+    (l l) (a a) (b b) (ks ks))
+  (defstrand resp 2 (b-ks-lt b-ks-lt) (k k) (t t) (n n)
+    (t-prime t-prime) (l l) (a a) (b b) (ks ks))
+  (precedes ((0 2) (2 0)) ((1 1) (0 1)) ((2 1) (0 3)))
+  (non-orig a-ks-lt b-ks-lt)
+  (uniq-orig k n)
+  (facts (long-term b ks b-ks-lt) (long-term a ks a-ks-lt))
+  (rule guar-keyserver-2)
+  (operation nonce-test
+    (contracted (b-0 b) (ks-0 ks) (l-0 l) (b-ks-lt-0 b-ks-lt)) k (2 0)
+    (enc "ticket" t l k a b ks b-ks-lt) (enc t l k a b ks a-ks-lt))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat a b ks)) (recv (cat (enc t l k a b ks a-ks-lt) ticket))
+      (send (cat (enc a t n k) ticket)) (recv (enc n t-prime k)))
+    ((recv (cat a b ks))
+      (send
+        (cat (enc t l k a b ks a-ks-lt)
+          (enc "ticket" t l k a b ks b-ks-lt))))
+    ((recv (cat (enc a t n k) (enc "ticket" t l k a b ks b-ks-lt)))
+      (send (enc n t-prime k))))
+  (label 6)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (ks ks) (n n) (a-ks-lt a-ks-lt) (t t)
+        (t-prime t-prime) (l l) (k k) (ticket ticket))))
+  (origs (k (1 1)) (n (0 2))))
+
+(comment "Nothing left to do")
+
+(defprotocol kerberos-variant basic
+  (defrole init
+    (vars (a b ks name) (t n t-prime l text) (a-ks-lt k skey)
+      (ticket mesg))
+    (trace (send (cat a b ks))
+      (recv (cat (enc t l k a b ks a-ks-lt) ticket))
+      (send (cat (enc a t n k) ticket)) (recv (enc n t-prime k))))
+  (defrole resp
+    (vars (a b ks name) (t n t-prime l text) (b-ks-lt k skey))
+    (trace
+      (recv (cat (enc a t n k) (enc "ticket" t l k a b ks b-ks-lt)))
+      (send (enc n t-prime k))))
+  (defrole keyserver
+    (vars (a b ks name) (t l text) (a-ks-lt b-ks-lt k skey))
+    (trace (recv (cat a b ks))
+      (send
+        (cat (enc t l k a b ks a-ks-lt)
+          (enc "ticket" t l k a b ks b-ks-lt))))
+    (uniq-orig k))
+  (defrule long-term-key-non
+    (forall ((p ks name) (k-lt skey))
+      (implies (fact long-term p ks k-lt) (non k-lt))))
+  (defrule guar-keyserver-2
+    (forall
+      ((z strd) (b-ks-lt skey) (b name) (a-ks-lt skey) (ks a name))
+      (implies
+        (and (p "keyserver" z (idx 2)) (p "keyserver" "a" z a)
+          (p "keyserver" "ks" z ks) (p "keyserver" "a-ks-lt" z a-ks-lt)
+          (p "keyserver" "b" z b) (p "keyserver" "b-ks-lt" z b-ks-lt))
+        (and (fact long-term a ks a-ks-lt)
+          (fact long-term b ks b-ks-lt)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton kerberos-variant
+  (vars (b-ks-lt k skey) (t n t-prime l text) (a b ks name))
+  (defstrand resp 2 (b-ks-lt b-ks-lt) (k k) (t t) (n n)
+    (t-prime t-prime) (l l) (a a) (b b) (ks ks))
+  (non-orig b-ks-lt)
+  (traces
+    ((recv (cat (enc a t n k) (enc "ticket" t l k a b ks b-ks-lt)))
+      (send (enc n t-prime k))))
+  (label 7)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton kerberos-variant
+  (vars (b-ks-lt k a-ks-lt skey) (t n t-prime l text) (a b ks name))
+  (defstrand resp 2 (b-ks-lt b-ks-lt) (k k) (t t) (n n)
+    (t-prime t-prime) (l l) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (a-ks-lt a-ks-lt) (b-ks-lt b-ks-lt) (k k) (t t)
+    (l l) (a a) (b b) (ks ks))
+  (precedes ((1 1) (0 0)))
+  (non-orig b-ks-lt a-ks-lt)
+  (uniq-orig k)
+  (facts (long-term b ks b-ks-lt) (long-term a ks a-ks-lt))
+  (rule guar-keyserver-2 long-term-key-non)
+  (operation encryption-test (added-strand keyserver 2)
+    (enc "ticket" t l k a b ks b-ks-lt) (0 0))
+  (strand-map 0)
+  (traces
+    ((recv (cat (enc a t n k) (enc "ticket" t l k a b ks b-ks-lt)))
+      (send (enc n t-prime k)))
+    ((recv (cat a b ks))
+      (send
+        (cat (enc t l k a b ks a-ks-lt)
+          (enc "ticket" t l k a b ks b-ks-lt)))))
+  (label 8)
+  (parent 7)
+  (unrealized (0 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton kerberos-variant
+  (vars (ticket mesg) (b-ks-lt k a-ks-lt a-ks-lt-0 skey)
+    (t n t-prime l l-0 text) (a b ks b-0 ks-0 name))
+  (defstrand resp 2 (b-ks-lt b-ks-lt) (k k) (t t) (n n)
+    (t-prime t-prime) (l l) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (a-ks-lt a-ks-lt) (b-ks-lt b-ks-lt) (k k) (t t)
+    (l l) (a a) (b b) (ks ks))
+  (defstrand init 3 (ticket ticket) (a-ks-lt a-ks-lt-0) (k k) (t t)
+    (n n) (l l-0) (a a) (b b-0) (ks ks-0))
+  (precedes ((1 1) (2 1)) ((2 2) (0 0)))
+  (non-orig b-ks-lt a-ks-lt)
+  (uniq-orig k)
+  (facts (long-term b ks b-ks-lt) (long-term a ks a-ks-lt))
+  (rule guar-keyserver-2)
+  (operation encryption-test (added-strand init 3) (enc a t n k) (0 0))
+  (strand-map 0 1)
+  (traces
+    ((recv (cat (enc a t n k) (enc "ticket" t l k a b ks b-ks-lt)))
+      (send (enc n t-prime k)))
+    ((recv (cat a b ks))
+      (send
+        (cat (enc t l k a b ks a-ks-lt)
+          (enc "ticket" t l k a b ks b-ks-lt))))
+    ((send (cat a b-0 ks-0))
+      (recv (cat (enc t l-0 k a b-0 ks-0 a-ks-lt-0) ticket))
+      (send (cat (enc a t n k) ticket))))
+  (label 9)
+  (parent 8)
+  (unrealized (2 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton kerberos-variant
+  (vars (b-ks-lt k a-ks-lt skey) (t n t-prime l text) (a b ks name))
+  (defstrand resp 2 (b-ks-lt b-ks-lt) (k k) (t t) (n n)
+    (t-prime t-prime) (l l) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (a-ks-lt a-ks-lt) (b-ks-lt b-ks-lt) (k k) (t t)
+    (l l) (a a) (b b) (ks ks))
+  (deflistener k)
+  (precedes ((1 1) (2 0)) ((2 1) (0 0)))
+  (non-orig b-ks-lt a-ks-lt)
+  (uniq-orig k)
+  (facts (long-term b ks b-ks-lt) (long-term a ks a-ks-lt))
+  (rule guar-keyserver-2)
+  (operation encryption-test (added-listener k) (enc a t n k) (0 0))
+  (strand-map 0 1)
+  (traces
+    ((recv (cat (enc a t n k) (enc "ticket" t l k a b ks b-ks-lt)))
+      (send (enc n t-prime k)))
+    ((recv (cat a b ks))
+      (send
+        (cat (enc t l k a b ks a-ks-lt)
+          (enc "ticket" t l k a b ks b-ks-lt)))) ((recv k) (send k)))
+  (label 10)
+  (parent 8)
+  (unrealized (2 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton kerberos-variant
+  (vars (ticket mesg) (b-ks-lt k a-ks-lt skey) (t n t-prime l text)
+    (a b ks name))
+  (defstrand resp 2 (b-ks-lt b-ks-lt) (k k) (t t) (n n)
+    (t-prime t-prime) (l l) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (a-ks-lt a-ks-lt) (b-ks-lt b-ks-lt) (k k) (t t)
+    (l l) (a a) (b b) (ks ks))
+  (defstrand init 3 (ticket ticket) (a-ks-lt a-ks-lt) (k k) (t t) (n n)
+    (l l) (a a) (b b) (ks ks))
+  (precedes ((1 1) (2 1)) ((2 2) (0 0)))
+  (non-orig b-ks-lt a-ks-lt)
+  (uniq-orig k)
+  (facts (long-term b ks b-ks-lt) (long-term a ks a-ks-lt))
+  (rule guar-keyserver-2)
+  (operation nonce-test
+    (contracted (b-0 b) (ks-0 ks) (l-0 l) (a-ks-lt-0 a-ks-lt)) k (2 1)
+    (enc "ticket" t l k a b ks b-ks-lt) (enc t l k a b ks a-ks-lt))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (cat (enc a t n k) (enc "ticket" t l k a b ks b-ks-lt)))
+      (send (enc n t-prime k)))
+    ((recv (cat a b ks))
+      (send
+        (cat (enc t l k a b ks a-ks-lt)
+          (enc "ticket" t l k a b ks b-ks-lt))))
+    ((send (cat a b ks)) (recv (cat (enc t l k a b ks a-ks-lt) ticket))
+      (send (cat (enc a t n k) ticket))))
+  (label 11)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (ks ks) (b-ks-lt b-ks-lt) (t t) (n n)
+        (t-prime t-prime) (l l) (k k))))
+  (origs (k (1 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol kerberos-variant basic
+  (defrole init
+    (vars (a b ks name) (t n t-prime l text) (a-ks-lt k skey)
+      (ticket mesg))
+    (trace (send (cat a b ks))
+      (recv (cat (enc t l k a b ks a-ks-lt) ticket))
+      (send (cat (enc a t n k) ticket)) (recv (enc n t-prime k))))
+  (defrole resp
+    (vars (a b ks name) (t n t-prime l text) (b-ks-lt k skey))
+    (trace
+      (recv (cat (enc a t n k) (enc "ticket" t l k a b ks b-ks-lt)))
+      (send (enc n t-prime k))))
+  (defrole keyserver
+    (vars (a b ks name) (t l text) (a-ks-lt b-ks-lt k skey))
+    (trace (recv (cat a b ks))
+      (send
+        (cat (enc t l k a b ks a-ks-lt)
+          (enc "ticket" t l k a b ks b-ks-lt))))
+    (uniq-orig k))
+  (defrule long-term-key-non
+    (forall ((p ks name) (k-lt skey))
+      (implies (fact long-term p ks k-lt) (non k-lt))))
+  (defrule guar-keyserver-2
+    (forall
+      ((z strd) (b-ks-lt skey) (b name) (a-ks-lt skey) (ks a name))
+      (implies
+        (and (p "keyserver" z (idx 2)) (p "keyserver" "a" z a)
+          (p "keyserver" "ks" z ks) (p "keyserver" "a-ks-lt" z a-ks-lt)
+          (p "keyserver" "b" z b) (p "keyserver" "b-ks-lt" z b-ks-lt))
+        (and (fact long-term a ks a-ks-lt)
+          (fact long-term b ks b-ks-lt)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton kerberos-variant
+  (vars (a-ks-lt b-ks-lt k skey) (t l text) (a b ks name))
+  (defstrand keyserver 2 (a-ks-lt a-ks-lt) (b-ks-lt b-ks-lt) (k k) (t t)
+    (l l) (a a) (b b) (ks ks))
+  (non-orig a-ks-lt b-ks-lt)
+  (uniq-orig k)
+  (traces
+    ((recv (cat a b ks))
+      (send
+        (cat (enc t l k a b ks a-ks-lt)
+          (enc "ticket" t l k a b ks b-ks-lt)))))
+  (label 12)
+  (realized)
+  (origs (k (0 1)))
+  (comment "Not closed under rules"))
+
+(defskeleton kerberos-variant
+  (vars (a-ks-lt b-ks-lt k skey) (t l text) (a b ks name))
+  (defstrand keyserver 2 (a-ks-lt a-ks-lt) (b-ks-lt b-ks-lt) (k k) (t t)
+    (l l) (a a) (b b) (ks ks))
+  (non-orig a-ks-lt b-ks-lt)
+  (uniq-orig k)
+  (facts (long-term b ks b-ks-lt) (long-term a ks a-ks-lt))
+  (rule guar-keyserver-2)
+  (traces
+    ((recv (cat a b ks))
+      (send
+        (cat (enc t l k a b ks a-ks-lt)
+          (enc "ticket" t l k a b ks b-ks-lt)))))
+  (label 13)
+  (parent 12)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (ks ks) (a-ks-lt a-ks-lt) (b-ks-lt b-ks-lt) (t t)
+        (l l) (k k))))
+  (origs (k (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/kerberos.tst b/tst/kerberos.tst
--- a/tst/kerberos.tst
+++ b/tst/kerberos.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/kerberos.scm")
 
 (defprotocol kerberos basic
@@ -49,6 +49,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand keyserver 2)
     (enc t l k b (ltk a ks)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -71,6 +72,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand keyserver 2)
     (enc t l k b (ltk a ks)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -95,6 +97,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand resp 2) (enc t-prime k)
     (0 3))
+  (strand-map 0 1)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -119,6 +122,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k)
   (operation encryption-test (added-listener k) (enc t-prime k) (0 3))
+  (strand-map 0 1)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -145,6 +149,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand resp 2) (enc t-prime k)
     (0 3))
+  (strand-map 0 1)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -169,6 +174,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k)
   (operation encryption-test (added-listener k) (enc t-prime k) (0 3))
+  (strand-map 0 1)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -195,6 +201,7 @@
   (uniq-orig k)
   (operation encryption-test (displaced 3 0 init 3) (enc a-0 t-0 k)
     (2 0))
+  (strand-map 0 1 2)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -223,6 +230,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 3) (enc a-0 t-0 k)
     (2 0))
+  (strand-map 0 1 2)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -254,6 +262,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k)
   (operation encryption-test (added-listener k) (enc a-0 t-0 k) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -281,6 +290,7 @@
   (uniq-orig k)
   (operation encryption-test (displaced 3 0 init 3) (enc a-0 t-0 k)
     (2 0))
+  (strand-map 0 1 2)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -309,6 +319,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 3) (enc a-0 t-0 k)
     (2 0))
+  (strand-map 0 1 2)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -340,6 +351,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k)
   (operation encryption-test (added-listener k) (enc a-0 t-0 k) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -367,6 +379,7 @@
   (uniq-orig k)
   (operation nonce-test (contracted (b-0 b) (ks-0 ks) (l-0 l)) k (2 0)
     (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (strand-map 0 1 2)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -397,6 +410,7 @@
   (operation nonce-test
     (contracted (a-0 a) (t-0 t) (b-1 b) (ks-1 ks) (l-1 l)) k (3 1)
     (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -428,6 +442,7 @@
   (operation nonce-test
     (contracted (a-0 b) (t-0 t) (b-1 a) (ks-1 ks) (l-1 l)) k (3 1)
     (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -457,6 +472,7 @@
   (uniq-orig k)
   (operation nonce-test (contracted (b-0 b) (ks-0 ks) (l-0 l)) k (2 0)
     (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (strand-map 0 1 2)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -487,6 +503,7 @@
   (operation nonce-test
     (contracted (a-0 a) (t-0 t) (b-1 b) (ks-1 ks) (l-1 l)) k (3 1)
     (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -518,6 +535,7 @@
   (operation nonce-test
     (contracted (a-0 b) (t-0 t) (b-1 a) (ks-1 ks) (l-1 l)) k (3 1)
     (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -548,6 +566,7 @@
   (uniq-orig k)
   (operation nonce-test (contracted (b-0 b) (ks-0 ks) (l-0 l)) k (2 0)
     (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -580,6 +599,7 @@
   (uniq-orig k)
   (operation nonce-test (contracted (b-0 a) (ks-0 ks) (l-0 l)) k (2 0)
     (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -612,6 +632,7 @@
   (uniq-orig k)
   (operation nonce-test (contracted (b-0 b) (ks-0 ks) (l-0 l)) k (2 0)
     (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -644,6 +665,7 @@
   (uniq-orig k)
   (operation nonce-test (contracted (b-0 a) (ks-0 ks) (l-0 l)) k (2 0)
     (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (cat a b))
       (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
@@ -711,6 +733,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand keyserver 2)
     (enc t l k a (ltk b ks)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (cat (enc a t k) (enc t l k a (ltk b ks))))
       (send (enc t-prime k)))
@@ -731,6 +754,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand keyserver 2)
     (enc t l k a (ltk b ks)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (cat (enc a t k) (enc t l k a (ltk b ks))))
       (send (enc t-prime k)))
@@ -751,6 +775,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k)
   (operation encryption-test (added-strand init 3) (enc a t k) (0 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat (enc a t k) (enc t l k a (ltk b ks))))
       (send (enc t-prime k)))
@@ -776,6 +801,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k)
   (operation encryption-test (added-listener k) (enc a t k) (0 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat (enc a t k) (enc t l k a (ltk b ks))))
       (send (enc t-prime k)))
@@ -798,6 +824,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k)
   (operation encryption-test (added-strand init 3) (enc a t k) (0 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat (enc a t k) (enc t l k a (ltk b ks))))
       (send (enc t-prime k)))
@@ -823,6 +850,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k)
   (operation encryption-test (added-listener k) (enc a t k) (0 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat (enc a t k) (enc t l k a (ltk b ks))))
       (send (enc t-prime k)))
@@ -846,6 +874,7 @@
   (uniq-orig k)
   (operation nonce-test (contracted (b-0 b) (ks-0 ks) (l-0 l)) k (2 1)
     (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat (enc a t k) (enc t l k a (ltk b ks))))
       (send (enc t-prime k)))
@@ -872,6 +901,7 @@
   (uniq-orig k)
   (operation nonce-test (contracted (b-0 b) (ks-0 ks) (l-0 l)) k (2 1)
     (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat (enc a t k) (enc t l k a (ltk b ks))))
       (send (enc t-prime k)))
diff --git a/tst/kerberos_shapes.tst b/tst/kerberos_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/kerberos_shapes.tst
@@ -0,0 +1,359 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/kerberos.scm")
+
+(defprotocol kerberos basic
+  (defrole init
+    (vars (a b ks name) (t t-prime l text) (k skey))
+    (trace (send (cat a b))
+      (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
+      (send (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (recv (enc t-prime k))))
+  (defrole resp
+    (vars (a b ks name) (t t-prime l text) (k skey))
+    (trace (recv (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (send (enc t-prime k))))
+  (defrole keyserver
+    (vars (a b ks name) (t l text) (k skey))
+    (trace (recv (cat a b))
+      (send (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks)))))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton kerberos
+  (vars (k skey) (t t-prime l text) (a b ks name))
+  (defstrand init 4 (k k) (t t) (t-prime t-prime) (l l) (a a) (b b)
+    (ks ks))
+  (non-orig (ltk a ks) (ltk b ks))
+  (traces
+    ((send (cat a b))
+      (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
+      (send (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (recv (enc t-prime k))))
+  (label 0)
+  (unrealized (0 1))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton kerberos
+  (vars (k skey) (t t-prime l text) (a b ks name))
+  (defstrand init 4 (k k) (t t) (t-prime t-prime) (l l) (a a) (b b)
+    (ks ks))
+  (defstrand keyserver 2 (k k) (t t) (l l) (a a) (b b) (ks ks))
+  (defstrand resp 2 (k k) (t t) (t-prime t-prime) (l l) (a a) (b b)
+    (ks ks))
+  (precedes ((0 2) (2 0)) ((1 1) (0 1)) ((2 1) (0 3)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k)
+  (operation nonce-test (contracted (b-0 b) (ks-0 ks) (l-0 l)) k (2 0)
+    (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (traces
+    ((send (cat a b))
+      (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
+      (send (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (recv (enc t-prime k)))
+    ((recv (cat a b))
+      (send (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks)))))
+    ((recv (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (send (enc t-prime k))))
+  (label 13)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (t t) (t-prime t-prime) (l l) (k k))))
+  (origs (k (1 1))))
+
+(defskeleton kerberos
+  (vars (k skey) (t t-prime l text) (a b ks name))
+  (defstrand init 4 (k k) (t t) (t-prime t-prime) (l l) (a a) (b b)
+    (ks ks))
+  (defstrand keyserver 2 (k k) (t t) (l l) (a b) (b a) (ks ks))
+  (defstrand resp 2 (k k) (t t) (t-prime t-prime) (l l) (a a) (b b)
+    (ks ks))
+  (precedes ((0 2) (2 0)) ((1 1) (0 1)) ((2 1) (0 3)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k)
+  (operation nonce-test (contracted (b-0 b) (ks-0 ks) (l-0 l)) k (2 0)
+    (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (traces
+    ((send (cat a b))
+      (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
+      (send (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (recv (enc t-prime k)))
+    ((recv (cat b a))
+      (send (cat (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))))
+    ((recv (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (send (enc t-prime k))))
+  (label 16)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (t t) (t-prime t-prime) (l l) (k k))))
+  (origs (k (1 1))))
+
+(defskeleton kerberos
+  (vars (k skey) (t t-prime l text) (a b ks name))
+  (defstrand init 4 (k k) (t t) (t-prime t-prime) (l l) (a a) (b b)
+    (ks ks))
+  (defstrand keyserver 2 (k k) (t t) (l l) (a a) (b b) (ks ks))
+  (defstrand resp 2 (k k) (t t) (t-prime t-prime) (l l) (a a) (b b)
+    (ks ks))
+  (defstrand init 3 (k k) (t t) (l l) (a a) (b b) (ks ks))
+  (precedes ((1 1) (0 1)) ((1 1) (3 1)) ((2 1) (0 3)) ((3 2) (2 0)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k)
+  (operation nonce-test (contracted (b-0 b) (ks-0 ks) (l-0 l)) k (2 0)
+    (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (traces
+    ((send (cat a b))
+      (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
+      (send (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (recv (enc t-prime k)))
+    ((recv (cat a b))
+      (send (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks)))))
+    ((recv (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (send (enc t-prime k)))
+    ((send (cat a b))
+      (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
+      (send (cat (enc a t k) (enc t l k a (ltk b ks))))))
+  (label 19)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (t t) (t-prime t-prime) (l l) (k k))))
+  (origs (k (1 1))))
+
+(defskeleton kerberos
+  (vars (k skey) (t t-prime l text) (a b ks name))
+  (defstrand init 4 (k k) (t t) (t-prime t-prime) (l l) (a a) (b b)
+    (ks ks))
+  (defstrand keyserver 2 (k k) (t t) (l l) (a a) (b b) (ks ks))
+  (defstrand resp 2 (k k) (t t) (t-prime t-prime) (l l) (a b) (b a)
+    (ks ks))
+  (defstrand init 3 (k k) (t t) (l l) (a b) (b a) (ks ks))
+  (precedes ((1 1) (0 1)) ((1 1) (3 1)) ((2 1) (0 3)) ((3 2) (2 0)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k)
+  (operation nonce-test (contracted (b-0 a) (ks-0 ks) (l-0 l)) k (2 0)
+    (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (traces
+    ((send (cat a b))
+      (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
+      (send (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (recv (enc t-prime k)))
+    ((recv (cat a b))
+      (send (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks)))))
+    ((recv (cat (enc b t k) (enc t l k b (ltk a ks))))
+      (send (enc t-prime k)))
+    ((send (cat b a))
+      (recv (cat (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks))))
+      (send (cat (enc b t k) (enc t l k b (ltk a ks))))))
+  (label 20)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (t t) (t-prime t-prime) (l l) (k k))))
+  (origs (k (1 1))))
+
+(defskeleton kerberos
+  (vars (k skey) (t t-prime l text) (a b ks name))
+  (defstrand init 4 (k k) (t t) (t-prime t-prime) (l l) (a a) (b b)
+    (ks ks))
+  (defstrand keyserver 2 (k k) (t t) (l l) (a b) (b a) (ks ks))
+  (defstrand resp 2 (k k) (t t) (t-prime t-prime) (l l) (a a) (b b)
+    (ks ks))
+  (defstrand init 3 (k k) (t t) (l l) (a a) (b b) (ks ks))
+  (precedes ((1 1) (0 1)) ((1 1) (3 1)) ((2 1) (0 3)) ((3 2) (2 0)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k)
+  (operation nonce-test (contracted (b-0 b) (ks-0 ks) (l-0 l)) k (2 0)
+    (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (traces
+    ((send (cat a b))
+      (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
+      (send (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (recv (enc t-prime k)))
+    ((recv (cat b a))
+      (send (cat (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))))
+    ((recv (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (send (enc t-prime k)))
+    ((send (cat a b))
+      (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
+      (send (cat (enc a t k) (enc t l k a (ltk b ks))))))
+  (label 21)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (t t) (t-prime t-prime) (l l) (k k))))
+  (origs (k (1 1))))
+
+(defskeleton kerberos
+  (vars (k skey) (t t-prime l text) (a b ks name))
+  (defstrand init 4 (k k) (t t) (t-prime t-prime) (l l) (a a) (b b)
+    (ks ks))
+  (defstrand keyserver 2 (k k) (t t) (l l) (a b) (b a) (ks ks))
+  (defstrand resp 2 (k k) (t t) (t-prime t-prime) (l l) (a b) (b a)
+    (ks ks))
+  (defstrand init 3 (k k) (t t) (l l) (a b) (b a) (ks ks))
+  (precedes ((1 1) (0 1)) ((1 1) (3 1)) ((2 1) (0 3)) ((3 2) (2 0)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k)
+  (operation nonce-test (contracted (b-0 a) (ks-0 ks) (l-0 l)) k (2 0)
+    (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (traces
+    ((send (cat a b))
+      (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
+      (send (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (recv (enc t-prime k)))
+    ((recv (cat b a))
+      (send (cat (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))))
+    ((recv (cat (enc b t k) (enc t l k b (ltk a ks))))
+      (send (enc t-prime k)))
+    ((send (cat b a))
+      (recv (cat (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks))))
+      (send (cat (enc b t k) (enc t l k b (ltk a ks))))))
+  (label 22)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (t t) (t-prime t-prime) (l l) (k k))))
+  (origs (k (1 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol kerberos basic
+  (defrole init
+    (vars (a b ks name) (t t-prime l text) (k skey))
+    (trace (send (cat a b))
+      (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
+      (send (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (recv (enc t-prime k))))
+  (defrole resp
+    (vars (a b ks name) (t t-prime l text) (k skey))
+    (trace (recv (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (send (enc t-prime k))))
+  (defrole keyserver
+    (vars (a b ks name) (t l text) (k skey))
+    (trace (recv (cat a b))
+      (send (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks)))))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton kerberos
+  (vars (k skey) (t t-prime l text) (a b ks name))
+  (defstrand resp 2 (k k) (t t) (t-prime t-prime) (l l) (a a) (b b)
+    (ks ks))
+  (non-orig (ltk a ks) (ltk b ks))
+  (traces
+    ((recv (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (send (enc t-prime k))))
+  (label 23)
+  (unrealized (0 0))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton kerberos
+  (vars (k skey) (t t-prime l text) (a b ks name))
+  (defstrand resp 2 (k k) (t t) (t-prime t-prime) (l l) (a a) (b b)
+    (ks ks))
+  (defstrand keyserver 2 (k k) (t t) (l l) (a b) (b a) (ks ks))
+  (defstrand init 3 (k k) (t t) (l l) (a a) (b b) (ks ks))
+  (precedes ((1 1) (2 1)) ((2 2) (0 0)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k)
+  (operation nonce-test (contracted (b-0 b) (ks-0 ks) (l-0 l)) k (2 1)
+    (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (traces
+    ((recv (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (send (enc t-prime k)))
+    ((recv (cat b a))
+      (send (cat (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))))
+    ((send (cat a b))
+      (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
+      (send (cat (enc a t k) (enc t l k a (ltk b ks))))))
+  (label 30)
+  (parent 23)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (t t) (t-prime t-prime) (l l) (k k))))
+  (origs (k (1 1))))
+
+(defskeleton kerberos
+  (vars (k skey) (t t-prime l text) (a b ks name))
+  (defstrand resp 2 (k k) (t t) (t-prime t-prime) (l l) (a a) (b b)
+    (ks ks))
+  (defstrand keyserver 2 (k k) (t t) (l l) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (t t) (l l) (a a) (b b) (ks ks))
+  (precedes ((1 1) (2 1)) ((2 2) (0 0)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k)
+  (operation nonce-test (contracted (b-0 b) (ks-0 ks) (l-0 l)) k (2 1)
+    (enc t l k a (ltk b ks)) (enc t l k b (ltk a ks)))
+  (traces
+    ((recv (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (send (enc t-prime k)))
+    ((recv (cat a b))
+      (send (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks)))))
+    ((send (cat a b))
+      (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
+      (send (cat (enc a t k) (enc t l k a (ltk b ks))))))
+  (label 31)
+  (parent 23)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (t t) (t-prime t-prime) (l l) (k k))))
+  (origs (k (1 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol kerberos basic
+  (defrole init
+    (vars (a b ks name) (t t-prime l text) (k skey))
+    (trace (send (cat a b))
+      (recv (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))
+      (send (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (recv (enc t-prime k))))
+  (defrole resp
+    (vars (a b ks name) (t t-prime l text) (k skey))
+    (trace (recv (cat (enc a t k) (enc t l k a (ltk b ks))))
+      (send (enc t-prime k))))
+  (defrole keyserver
+    (vars (a b ks name) (t l text) (k skey))
+    (trace (recv (cat a b))
+      (send (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks)))))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton kerberos
+  (vars (k skey) (t l text) (a b ks name))
+  (defstrand keyserver 2 (k k) (t t) (l l) (a a) (b b) (ks ks))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k)
+  (traces
+    ((recv (cat a b))
+      (send (cat (enc t l k b (ltk a ks)) (enc t l k a (ltk b ks))))))
+  (label 32)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (t t) (l l) (k k))))
+  (origs (k (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/locn_envelope.tst b/tst/locn_envelope.tst
--- a/tst/locn_envelope.tst
+++ b/tst/locn_envelope.tst
@@ -1,7 +1,7 @@
 (herald "Envelope Protocol, location-based version" (bound 30)
   (limit 1200))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/locn_envelope.scm")
 (comment "Step count limited to 1200")
 (comment "Strand count bounded at 30")
@@ -173,6 +173,7 @@
   (auth tpm-0)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -200,6 +201,7 @@
   (operation channel-test (displaced 3 1 alice 2)
     (ch-msg tpm-0
       (cat "create-req" pcr-id (hash (hash "0" n) "obtain"))) (2 0))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -228,6 +230,7 @@
   (conf tpm)
   (auth tpm)
   (operation nonce-test (added-strand tpm-decrypt 4) v (0 0) (enc v k))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -263,6 +266,7 @@
   (rule genStV-if-hashed-tpm-decrypt)
   (operation encryption-test (displaced 4 2 tpm-create-key 2)
     (enc "created" k pcr-id-0 current-value aik-0) (3 1))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -304,6 +308,7 @@
     trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt (hash (hash "0" n) "obtain"))) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -349,6 +354,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt-0 (hash "0" n))) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -396,6 +402,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation nonce-test (contracted (pcr-id-1 pcr-id) (tpm-2 tpm)) n
     (5 0) (ch-msg tpm (cat "extend" pcr-id n)))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -602,6 +609,7 @@
   (auth tpm-0)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -638,6 +646,7 @@
   (operation channel-test (displaced 3 1 alice 2)
     (ch-msg tpm-0
       (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain"))) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -679,6 +688,7 @@
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik)
     (0 0))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -730,6 +740,7 @@
     trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt (hash (hash "0" n) "refuse"))) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -785,6 +796,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt-0 (hash "0" n))) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -842,6 +854,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation nonce-test (contracted (pcr-id-2 pcr-id-0) (tpm-2 tpm)) n
     (5 0) (ch-msg tpm (cat "extend" pcr-id-0 n)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1063,6 +1076,7 @@
   (auth tpm-0)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik) (2 2))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1100,6 +1114,7 @@
   (operation channel-test (displaced 4 2 alice 2)
     (ch-msg tpm-0
       (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain"))) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1138,6 +1153,7 @@
   (conf tpm)
   (auth tpm)
   (operation nonce-test (added-strand tpm-decrypt 4) v (1 0) (enc v k))
+  (strand-map 0 1 2 3)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1183,6 +1199,7 @@
   (rule genStV-if-hashed-tpm-decrypt)
   (operation encryption-test (displaced 5 3 tpm-create-key 2)
     (enc "created" k pcr-id-1 current-value aik-0) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1233,6 +1250,7 @@
     trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt (hash (hash "0" n) "obtain"))) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1287,6 +1305,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt-0 (hash "0" n))) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1343,6 +1362,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation nonce-test (contracted (pcr-id-2 pcr-id-0) (tpm-2 tpm)) n
     (6 0) (ch-msg tpm (cat "extend" pcr-id-0 n)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1407,6 +1427,7 @@
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik)
     (0 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1477,6 +1498,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr-0 (cat pt-2 (hash (hash "0" n) "refuse"))) (7 1))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1552,6 +1574,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr-0 (cat pt-3 (hash "0" n))) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1629,6 +1652,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation nonce-test (contracted (pcr-id-3 pcr-id-0) (tpm-4 tpm)) n
     (9 0) (ch-msg tpm (cat "extend" pcr-id-0 n)))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1852,6 +1876,7 @@
   (auth tpm-0)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -1879,6 +1904,7 @@
   (operation channel-test (displaced 3 1 alice 2)
     (ch-msg tpm-0
       (cat "create-req" pcr-id (hash (hash "0" n) "obtain"))) (2 0))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -1907,6 +1933,7 @@
   (conf tpm)
   (auth tpm)
   (operation nonce-test (added-strand tpm-decrypt 4) v (0 0) (enc v k))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -1942,6 +1969,7 @@
   (rule genStV-if-hashed-tpm-decrypt)
   (operation encryption-test (displaced 4 2 tpm-create-key 2)
     (enc "created" k pcr-id-0 current-value aik-0) (3 1))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -1983,6 +2011,7 @@
     trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt (hash (hash "0" n) "obtain"))) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -2028,6 +2057,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt-0 (hash "0" n))) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -2075,6 +2105,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation nonce-test (contracted (pcr-id-1 pcr-id) (tpm-2 tpm)) n
     (5 0) (ch-msg tpm (cat "extend" pcr-id n)))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -2292,6 +2323,7 @@
   (auth tpm-0)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2328,6 +2360,7 @@
   (operation channel-test (displaced 3 1 alice 2)
     (ch-msg tpm-0
       (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain"))) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2369,6 +2402,7 @@
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik)
     (0 0))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2420,6 +2454,7 @@
     trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt (hash (hash "0" n) "refuse"))) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2475,6 +2510,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt-0 (hash "0" n))) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2532,6 +2568,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation nonce-test (contracted (pcr-id-2 pcr-id-0) (tpm-2 tpm)) n
     (5 0) (ch-msg tpm (cat "extend" pcr-id-0 n)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2764,6 +2801,7 @@
   (auth tpm-0)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik) (2 2))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2801,6 +2839,7 @@
   (operation channel-test (displaced 4 2 alice 2)
     (ch-msg tpm-0
       (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain"))) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2839,6 +2878,7 @@
   (conf tpm)
   (auth tpm)
   (operation nonce-test (added-strand tpm-decrypt 4) v (1 0) (enc v k))
+  (strand-map 0 1 2 3)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2884,6 +2924,7 @@
   (rule genStV-if-hashed-tpm-decrypt)
   (operation encryption-test (displaced 5 3 tpm-create-key 2)
     (enc "created" k pcr-id-1 current-value aik-0) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2934,6 +2975,7 @@
     trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt (hash (hash "0" n) "obtain"))) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2988,6 +3030,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt-0 (hash "0" n))) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -3044,6 +3087,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation nonce-test (contracted (pcr-id-2 pcr-id-0) (tpm-2 tpm)) n
     (6 0) (ch-msg tpm (cat "extend" pcr-id-0 n)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -3108,6 +3152,7 @@
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik)
     (0 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -3178,6 +3223,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr-0 (cat pt-2 (hash (hash "0" n) "refuse"))) (7 1))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -3253,6 +3299,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr-0 (cat pt-3 (hash "0" n))) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -3330,6 +3377,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation nonce-test (contracted (pcr-id-3 pcr-id-0) (tpm-4 tpm)) n
     (9 0) (ch-msg tpm (cat "extend" pcr-id-0 n)))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -3552,6 +3600,7 @@
   (auth tpm-0)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -3579,6 +3628,7 @@
   (operation channel-test (displaced 3 1 alice 2)
     (ch-msg tpm-0
       (cat "create-req" pcr-id (hash (hash "0" n) "obtain"))) (2 0))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -3607,6 +3657,7 @@
   (conf tpm)
   (auth tpm)
   (operation nonce-test (added-strand tpm-decrypt 4) v (0 0) (enc v k))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -3642,6 +3693,7 @@
   (rule genStV-if-hashed-tpm-decrypt)
   (operation encryption-test (displaced 4 2 tpm-create-key 2)
     (enc "created" k pcr-id-0 current-value aik-0) (3 1))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -3683,6 +3735,7 @@
     trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt (hash (hash "0" n) "obtain"))) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -3728,6 +3781,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt-0 (hash "0" n))) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -3775,6 +3829,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation nonce-test (contracted (pcr-id-1 pcr-id) (tpm-2 tpm)) n
     (5 0) (ch-msg tpm (cat "extend" pcr-id n)))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((send tpm (cat "extend" pcr-id n))
       (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
@@ -3991,6 +4046,7 @@
   (auth tpm-0)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik) (1 2))
+  (strand-map 0 1)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -4027,6 +4083,7 @@
   (operation channel-test (displaced 3 1 alice 2)
     (ch-msg tpm-0
       (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain"))) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -4068,6 +4125,7 @@
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik)
     (0 0))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -4119,6 +4177,7 @@
     trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt (hash (hash "0" n) "refuse"))) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -4174,6 +4233,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt-0 (hash "0" n))) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -4231,6 +4291,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation nonce-test (contracted (pcr-id-2 pcr-id-0) (tpm-2 tpm)) n
     (5 0) (ch-msg tpm (cat "extend" pcr-id-0 n)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -4462,6 +4523,7 @@
   (auth tpm-0)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik) (2 2))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -4499,6 +4561,7 @@
   (operation channel-test (displaced 4 2 alice 2)
     (ch-msg tpm-0
       (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain"))) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -4537,6 +4600,7 @@
   (conf tpm)
   (auth tpm)
   (operation nonce-test (added-strand tpm-decrypt 4) v (1 0) (enc v k))
+  (strand-map 0 1 2 3)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -4582,6 +4646,7 @@
   (rule genStV-if-hashed-tpm-decrypt)
   (operation encryption-test (displaced 5 3 tpm-create-key 2)
     (enc "created" k pcr-id-1 current-value aik-0) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -4632,6 +4697,7 @@
     trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt (hash (hash "0" n) "obtain"))) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -4686,6 +4752,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr (cat pt-0 (hash "0" n))) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -4742,6 +4809,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation nonce-test (contracted (pcr-id-2 pcr-id-0) (tpm-2 tpm)) n
     (6 0) (ch-msg tpm (cat "extend" pcr-id-0 n)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -4806,6 +4874,7 @@
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik)
     (0 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -4876,6 +4945,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr-0 (cat pt-2 (hash (hash "0" n) "refuse"))) (7 1))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -4951,6 +5021,7 @@
   (rule trRl_tpm-extend-enc-at-1 trRl_tpm-extend-enc-at-2)
   (operation channel-test (added-strand tpm-extend-enc 3)
     (ch-msg pcr-0 (cat pt-3 (hash "0" n))) (8 1))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -5030,6 +5101,7 @@
   (operation nonce-test
     (contracted (pcr-0 pcr) (pcr-id-3 pcr-id-0) (tpm-4 tpm)) n (9 0)
     (ch-msg tpm (cat "extend" pcr-id-0 n)))
+  (strand-map 0 1 2 3 4 5 6 7 8 9)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
diff --git a/tst/locn_envelope_shapes.tst b/tst/locn_envelope_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/locn_envelope_shapes.tst
@@ -0,0 +1,1710 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Envelope Protocol, location-based version" (bound 30)
+  (limit 1200))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/locn_envelope.scm")
+
+(comment "Step count limited to 1200")
+
+(comment "Strand count bounded at 30")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (current-value mesg) (pcr locn) (tpm chan))
+    (trace (recv tpm "power on") (load pcr current-value)
+      (stor pcr "0")))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcr-id text) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "extend" pcr-id value))
+      (load pcr current-value) (stor pcr (hash current-value value))
+      (send "ext ok")))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcr-id text) (aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "quote" pcr-id nonce))
+      (load pcr current-value)
+      (send (enc "quote" pcr-id current-value nonce aik))))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcr-id text) (pcrval mesg) (tpm chan))
+    (trace (recv tpm (cat "create-req" pcr-id pcrval))
+      (send (enc "created" k pcr-id pcrval aik)))
+    (non-orig (invk k))
+    (uniq-orig k)
+    (auth tpm))
+  (defrole tpm-decrypt
+    (vars (m current-value mesg) (pcr-id text) (k aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcr-id current-value aik))
+      (load pcr current-value) (send m))
+    (non-orig aik))
+  (defrole alice
+    (vars (n v data) (pcr-id text) (k aik akey) (tpm chan))
+    (trace (send tpm (cat "extend" pcr-id n))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig aik)
+    (uniq-orig n v)
+    (conf tpm)
+    (neq (k aik)))
+  (defrule genStV-if-hashed-tpm-power-on
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-power-on" z 2)
+          (p "tpm-power-on" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-extend-enc
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-extend-enc" z 2)
+          (p "tpm-extend-enc" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-decrypt
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-decrypt" z 3)
+          (p "tpm-decrypt" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-quote
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-quote" z 2)
+          (p "tpm-quote" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_tpm-power-on-at-2
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-power-on-at-1
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 1))))
+  (defgenrule trRl_tpm-extend-enc-at-2
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-extend-enc-at-1
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 1)))))
+
+(defskeleton envelope
+  (vars (v n data) (pcr-id text) (k aik akey) (tpm chan))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id) (k k) (aik aik)
+    (tpm tpm))
+  (non-orig aik)
+  (uniq-orig v n)
+  (conf tpm)
+  (traces ((recv v) (send v))
+    ((send tpm (cat "extend" pcr-id n))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 0)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (v n data) (pcr-id pcr-id-0 text) (k aik akey)
+    (pt pt-0 pt-1 pval) (tpm tpm-0 tpm-1 chan) (pcr locn))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id) (k k) (aik aik)
+    (tpm tpm))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (pcr-id pcr-id) (k k) (aik aik) (tpm tpm))
+  (defstrand tpm-decrypt 4 (m v)
+    (current-value (hash (hash "0" n) "obtain")) (pcr-id pcr-id) (k k)
+    (aik aik) (tpm tpm-0) (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value "obtain")
+    (current-value (hash "0" n)) (pcr-id pcr-id-0) (tpm tpm-1)
+    (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcr-id pcr-id) (tpm tpm) (pcr pcr))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 3) (0 0)) ((4 2) (3 2)) ((5 2) (4 1)))
+  (non-orig aik (invk k))
+  (uniq-orig v n k)
+  (gen-st (hash "0" n) (hash (hash "0" n) "obtain"))
+  (conf tpm)
+  (auth tpm)
+  (facts (trans 5 2) (trans 5 1) (trans 4 2) (trans 4 1))
+  (operation nonce-test (contracted (pcr-id-1 pcr-id) (tpm-2 tpm)) n
+    (5 0) (ch-msg tpm (cat "extend" pcr-id n)))
+  (traces ((recv v) (send v))
+    ((send tpm (cat "extend" pcr-id n))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (send (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik)))
+    ((recv tpm-0 (cat "decrypt" (enc v k)))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (load pcr (cat pt (hash (hash "0" n) "obtain"))) (send v))
+    ((recv tpm-1 (cat "extend" pcr-id-0 "obtain"))
+      (load pcr (cat pt-0 (hash "0" n)))
+      (stor pcr (cat pt (hash (hash "0" n) "obtain"))))
+    ((recv tpm (cat "extend" pcr-id n)) (load pcr (cat pt-1 "0"))
+      (stor pcr (cat pt-0 (hash "0" n)))))
+  (label 8)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((v v) (n n) (pcr-id pcr-id) (k k) (aik aik) (tpm tpm))))
+  (origs (pt-0 (5 2)) (pt (4 2)) (k (2 1)) (n (1 0)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (current-value mesg) (pcr locn) (tpm chan))
+    (trace (recv tpm "power on") (load pcr current-value)
+      (stor pcr "0")))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcr-id text) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "extend" pcr-id value))
+      (load pcr current-value) (stor pcr (hash current-value value))
+      (send "ext ok")))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcr-id text) (aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "quote" pcr-id nonce))
+      (load pcr current-value)
+      (send (enc "quote" pcr-id current-value nonce aik))))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcr-id text) (pcrval mesg) (tpm chan))
+    (trace (recv tpm (cat "create-req" pcr-id pcrval))
+      (send (enc "created" k pcr-id pcrval aik)))
+    (non-orig (invk k))
+    (uniq-orig k)
+    (auth tpm))
+  (defrole tpm-decrypt
+    (vars (m current-value mesg) (pcr-id text) (k aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcr-id current-value aik))
+      (load pcr current-value) (send m))
+    (non-orig aik))
+  (defrole alice
+    (vars (n v data) (pcr-id text) (k aik akey) (tpm chan))
+    (trace (send tpm (cat "extend" pcr-id n))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig aik)
+    (uniq-orig n v)
+    (conf tpm)
+    (neq (k aik)))
+  (defrule genStV-if-hashed-tpm-power-on
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-power-on" z 2)
+          (p "tpm-power-on" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-extend-enc
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-extend-enc" z 2)
+          (p "tpm-extend-enc" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-decrypt
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-decrypt" z 3)
+          (p "tpm-decrypt" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-quote
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-quote" z 2)
+          (p "tpm-quote" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_tpm-power-on-at-2
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-power-on-at-1
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 1))))
+  (defgenrule trRl_tpm-extend-enc-at-2
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-extend-enc-at-1
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 1)))))
+
+(defskeleton envelope
+  (vars (n v data) (pcr-id pcr-id-0 text) (k aik akey) (tpm chan))
+  (deflistener
+    (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id-0) (k k) (aik aik)
+    (tpm tpm))
+  (non-orig aik)
+  (uniq-orig n v)
+  (conf tpm)
+  (traces
+    ((recv
+       (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik)))
+    ((send tpm (cat "extend" pcr-id-0 n))
+      (send tpm
+        (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 9)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (n v data) (pcr-id pcr-id-0 pcr-id-1 text) (k aik akey)
+    (pt pt-0 pt-1 pval) (tpm tpm-0 tpm-1 chan) (pcr locn))
+  (deflistener
+    (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id-0) (k k) (aik aik)
+    (tpm tpm))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (pcr-id pcr-id-0) (k k) (aik aik) (tpm tpm))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (pcr-id pcr-id)
+    (aik aik) (tpm tpm-0) (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value "refuse")
+    (current-value (hash "0" n)) (pcr-id pcr-id-1) (tpm tpm-1)
+    (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcr-id pcr-id-0) (tpm tpm) (pcr pcr))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 2) (0 0)) ((4 2) (3 1)) ((5 2) (4 1)))
+  (non-orig aik (invk k))
+  (uniq-orig n v k)
+  (gen-st (hash "0" n) (hash (hash "0" n) "refuse"))
+  (conf tpm)
+  (auth tpm)
+  (facts (trans 5 2) (trans 5 1) (trans 4 2) (trans 4 1))
+  (operation nonce-test (contracted (pcr-id-2 pcr-id-0) (tpm-2 tpm)) n
+    (5 0) (ch-msg tpm (cat "extend" pcr-id-0 n)))
+  (traces
+    ((recv
+       (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik)))
+    ((send tpm (cat "extend" pcr-id-0 n))
+      (send tpm
+        (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv tpm (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (send
+        (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik)))
+    ((recv tpm-0 (cat "quote" pcr-id (enc v k)))
+      (load pcr (cat pt (hash (hash "0" n) "refuse")))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik)))
+    ((recv tpm-1 (cat "extend" pcr-id-1 "refuse"))
+      (load pcr (cat pt-0 (hash "0" n)))
+      (stor pcr (cat pt (hash (hash "0" n) "refuse"))))
+    ((recv tpm (cat "extend" pcr-id-0 n)) (load pcr (cat pt-1 "0"))
+      (stor pcr (cat pt-0 (hash "0" n)))))
+  (label 16)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((n n) (v v) (k k) (aik aik) (pcr-id pcr-id) (pcr-id-0 pcr-id-0)
+        (tpm tpm))))
+  (origs (pt-0 (5 2)) (pt (4 2)) (n (1 0)) (k (2 1)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (current-value mesg) (pcr locn) (tpm chan))
+    (trace (recv tpm "power on") (load pcr current-value)
+      (stor pcr "0")))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcr-id text) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "extend" pcr-id value))
+      (load pcr current-value) (stor pcr (hash current-value value))
+      (send "ext ok")))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcr-id text) (aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "quote" pcr-id nonce))
+      (load pcr current-value)
+      (send (enc "quote" pcr-id current-value nonce aik))))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcr-id text) (pcrval mesg) (tpm chan))
+    (trace (recv tpm (cat "create-req" pcr-id pcrval))
+      (send (enc "created" k pcr-id pcrval aik)))
+    (non-orig (invk k))
+    (uniq-orig k)
+    (auth tpm))
+  (defrole tpm-decrypt
+    (vars (m current-value mesg) (pcr-id text) (k aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcr-id current-value aik))
+      (load pcr current-value) (send m))
+    (non-orig aik))
+  (defrole alice
+    (vars (n v data) (pcr-id text) (k aik akey) (tpm chan))
+    (trace (send tpm (cat "extend" pcr-id n))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig aik)
+    (uniq-orig n v)
+    (conf tpm)
+    (neq (k aik)))
+  (defrule genStV-if-hashed-tpm-power-on
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-power-on" z 2)
+          (p "tpm-power-on" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-extend-enc
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-extend-enc" z 2)
+          (p "tpm-extend-enc" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-decrypt
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-decrypt" z 3)
+          (p "tpm-decrypt" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-quote
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-quote" z 2)
+          (p "tpm-quote" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_tpm-power-on-at-2
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-power-on-at-1
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 1))))
+  (defgenrule trRl_tpm-extend-enc-at-2
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-extend-enc-at-1
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 1)))))
+
+(defskeleton envelope
+  (vars (n v data) (pcr-id pcr-id-0 text) (k aik akey) (tpm chan))
+  (deflistener
+    (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id-0) (k k) (aik aik)
+    (tpm tpm))
+  (non-orig aik)
+  (uniq-orig n v)
+  (conf tpm)
+  (traces
+    ((recv
+       (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik))) ((recv v) (send v))
+    ((send tpm (cat "extend" pcr-id-0 n))
+      (send tpm
+        (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 17)
+  (unrealized (0 0) (1 0) (2 2))
+  (preskeleton)
+  (origs (v (2 3)) (n (2 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (n v data) (pcr-id pcr-id-0 pcr-id-1 pcr-id-2 text) (k aik akey)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (tpm tpm-0 tpm-1 tpm-2 tpm-3 chan) (pcr pcr-0 locn))
+  (deflistener
+    (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id-0) (k k) (aik aik)
+    (tpm tpm))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (pcr-id pcr-id-0) (k k) (aik aik) (tpm tpm))
+  (defstrand tpm-decrypt 4 (m v)
+    (current-value (hash (hash "0" n) "obtain")) (pcr-id pcr-id-0) (k k)
+    (aik aik) (tpm tpm-0) (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value "obtain")
+    (current-value (hash "0" n)) (pcr-id pcr-id-1) (tpm tpm-1)
+    (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcr-id pcr-id-0) (tpm tpm) (pcr pcr))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (pcr-id pcr-id)
+    (aik aik) (tpm tpm-2) (pcr pcr-0))
+  (defstrand tpm-extend-enc 3 (value "refuse")
+    (current-value (hash "0" n)) (pcr-id pcr-id-2) (tpm tpm-3)
+    (pcr pcr-0))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcr-id pcr-id-0) (tpm tpm) (pcr pcr-0))
+  (precedes ((2 0) (6 0)) ((2 0) (9 0)) ((2 1) (3 0)) ((2 3) (4 0))
+    ((2 3) (7 0)) ((3 1) (2 2)) ((4 3) (1 0)) ((5 2) (4 2))
+    ((6 2) (5 1)) ((7 2) (0 0)) ((8 2) (7 1)) ((9 2) (8 1)))
+  (non-orig aik (invk k))
+  (uniq-orig n v k)
+  (gen-st (hash "0" n) (hash (hash "0" n) "obtain")
+    (hash (hash "0" n) "refuse"))
+  (conf tpm)
+  (auth tpm)
+  (facts (trans 9 2) (trans 9 1) (trans 8 2) (trans 8 1) (trans 6 2)
+    (trans 6 1) (trans 5 2) (trans 5 1))
+  (operation nonce-test (contracted (pcr-id-3 pcr-id-0) (tpm-4 tpm)) n
+    (9 0) (ch-msg tpm (cat "extend" pcr-id-0 n)))
+  (traces
+    ((recv
+       (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik))) ((recv v) (send v))
+    ((send tpm (cat "extend" pcr-id-0 n))
+      (send tpm
+        (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv tpm (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (send
+        (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik)))
+    ((recv tpm-0 (cat "decrypt" (enc v k)))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (load pcr (cat pt (hash (hash "0" n) "obtain"))) (send v))
+    ((recv tpm-1 (cat "extend" pcr-id-1 "obtain"))
+      (load pcr (cat pt-0 (hash "0" n)))
+      (stor pcr (cat pt (hash (hash "0" n) "obtain"))))
+    ((recv tpm (cat "extend" pcr-id-0 n)) (load pcr (cat pt-1 "0"))
+      (stor pcr (cat pt-0 (hash "0" n))))
+    ((recv tpm-2 (cat "quote" pcr-id (enc v k)))
+      (load pcr-0 (cat pt-2 (hash (hash "0" n) "refuse")))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik)))
+    ((recv tpm-3 (cat "extend" pcr-id-2 "refuse"))
+      (load pcr-0 (cat pt-3 (hash "0" n)))
+      (stor pcr-0 (cat pt-2 (hash (hash "0" n) "refuse"))))
+    ((recv tpm (cat "extend" pcr-id-0 n)) (load pcr-0 (cat pt-4 "0"))
+      (stor pcr-0 (cat pt-3 (hash "0" n)))))
+  (label 29)
+  (parent 17)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 2)
+      ((n n) (v v) (k k) (aik aik) (pcr-id pcr-id) (pcr-id-0 pcr-id-0)
+        (tpm tpm))))
+  (origs (pt-3 (9 2)) (pt-2 (8 2)) (pt-0 (6 2)) (pt (5 2)) (k (3 1))
+    (n (2 0)) (v (2 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope-plus basic
+  (defrole tpm-power-on
+    (vars (current-value mesg) (pcr locn) (tpm chan))
+    (trace (recv tpm "power on") (load pcr current-value)
+      (stor pcr "0")))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcr-id text) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "extend" pcr-id value))
+      (load pcr current-value) (stor pcr (hash current-value value))
+      (send "ext ok")))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcr-id text) (aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "quote" pcr-id nonce))
+      (load pcr current-value)
+      (send (enc "quote" pcr-id current-value nonce aik))))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcr-id text) (pcrval mesg) (tpm chan))
+    (trace (recv tpm (cat "create-req" pcr-id pcrval))
+      (send (enc "created" k pcr-id pcrval aik)))
+    (non-orig (invk k))
+    (uniq-orig k)
+    (auth tpm))
+  (defrole tpm-decrypt
+    (vars (m current-value mesg) (pcr-id text) (k aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcr-id current-value aik))
+      (load pcr current-value) (send m))
+    (non-orig aik))
+  (defrole alice
+    (vars (n v data) (pcr-id text) (k aik akey) (tpm chan))
+    (trace (send tpm (cat "extend" pcr-id n))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig aik)
+    (uniq-orig n v)
+    (conf tpm)
+    (neq (k aik)))
+  (defrule genStV-if-hashed-tpm-power-on
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-power-on" z 2)
+          (p "tpm-power-on" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-extend-enc
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-extend-enc" z 2)
+          (p "tpm-extend-enc" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-decrypt
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-decrypt" z 3)
+          (p "tpm-decrypt" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-quote
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-quote" z 2)
+          (p "tpm-quote" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule ordered-extends
+    (forall ((y z strd) (pcr locn))
+      (implies
+        (and (p "tpm-extend-enc" y 3) (p "tpm-extend-enc" z 3)
+          (p "tpm-extend-enc" "pcr" y pcr)
+          (p "tpm-extend-enc" "pcr" z pcr))
+        (or (= y z) (prec y 2 z 1) (prec z 2 y 1)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_tpm-power-on-at-2
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-power-on-at-1
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 1))))
+  (defgenrule trRl_tpm-extend-enc-at-2
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-extend-enc-at-1
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 1)))))
+
+(defskeleton envelope-plus
+  (vars (v n data) (pcr-id text) (k aik akey) (tpm chan))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id) (k k) (aik aik)
+    (tpm tpm))
+  (non-orig aik)
+  (uniq-orig v n)
+  (conf tpm)
+  (traces ((recv v) (send v))
+    ((send tpm (cat "extend" pcr-id n))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 30)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope-plus
+  (vars (v n data) (pcr-id pcr-id-0 text) (k aik akey)
+    (pt pt-0 pt-1 pval) (tpm tpm-0 tpm-1 chan) (pcr locn))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id) (k k) (aik aik)
+    (tpm tpm))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (pcr-id pcr-id) (k k) (aik aik) (tpm tpm))
+  (defstrand tpm-decrypt 4 (m v)
+    (current-value (hash (hash "0" n) "obtain")) (pcr-id pcr-id) (k k)
+    (aik aik) (tpm tpm-0) (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value "obtain")
+    (current-value (hash "0" n)) (pcr-id pcr-id-0) (tpm tpm-1)
+    (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcr-id pcr-id) (tpm tpm) (pcr pcr))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 3) (0 0)) ((4 2) (3 2)) ((5 2) (4 1)))
+  (non-orig aik (invk k))
+  (uniq-orig v n k)
+  (gen-st (hash "0" n) (hash (hash "0" n) "obtain"))
+  (conf tpm)
+  (auth tpm)
+  (facts (trans 5 2) (trans 5 1) (trans 4 2) (trans 4 1))
+  (operation nonce-test (contracted (pcr-id-1 pcr-id) (tpm-2 tpm)) n
+    (5 0) (ch-msg tpm (cat "extend" pcr-id n)))
+  (traces ((recv v) (send v))
+    ((send tpm (cat "extend" pcr-id n))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (send (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik)))
+    ((recv tpm-0 (cat "decrypt" (enc v k)))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (load pcr (cat pt (hash (hash "0" n) "obtain"))) (send v))
+    ((recv tpm-1 (cat "extend" pcr-id-0 "obtain"))
+      (load pcr (cat pt-0 (hash "0" n)))
+      (stor pcr (cat pt (hash (hash "0" n) "obtain"))))
+    ((recv tpm (cat "extend" pcr-id n)) (load pcr (cat pt-1 "0"))
+      (stor pcr (cat pt-0 (hash "0" n)))))
+  (label 38)
+  (parent 30)
+  (realized)
+  (shape)
+  (maps ((0 1) ((v v) (n n) (pcr-id pcr-id) (k k) (aik aik) (tpm tpm))))
+  (origs (pt-0 (5 2)) (pt (4 2)) (k (2 1)) (n (1 0)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope-plus basic
+  (defrole tpm-power-on
+    (vars (current-value mesg) (pcr locn) (tpm chan))
+    (trace (recv tpm "power on") (load pcr current-value)
+      (stor pcr "0")))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcr-id text) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "extend" pcr-id value))
+      (load pcr current-value) (stor pcr (hash current-value value))
+      (send "ext ok")))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcr-id text) (aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "quote" pcr-id nonce))
+      (load pcr current-value)
+      (send (enc "quote" pcr-id current-value nonce aik))))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcr-id text) (pcrval mesg) (tpm chan))
+    (trace (recv tpm (cat "create-req" pcr-id pcrval))
+      (send (enc "created" k pcr-id pcrval aik)))
+    (non-orig (invk k))
+    (uniq-orig k)
+    (auth tpm))
+  (defrole tpm-decrypt
+    (vars (m current-value mesg) (pcr-id text) (k aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcr-id current-value aik))
+      (load pcr current-value) (send m))
+    (non-orig aik))
+  (defrole alice
+    (vars (n v data) (pcr-id text) (k aik akey) (tpm chan))
+    (trace (send tpm (cat "extend" pcr-id n))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig aik)
+    (uniq-orig n v)
+    (conf tpm)
+    (neq (k aik)))
+  (defrule genStV-if-hashed-tpm-power-on
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-power-on" z 2)
+          (p "tpm-power-on" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-extend-enc
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-extend-enc" z 2)
+          (p "tpm-extend-enc" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-decrypt
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-decrypt" z 3)
+          (p "tpm-decrypt" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-quote
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-quote" z 2)
+          (p "tpm-quote" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule ordered-extends
+    (forall ((y z strd) (pcr locn))
+      (implies
+        (and (p "tpm-extend-enc" y 3) (p "tpm-extend-enc" z 3)
+          (p "tpm-extend-enc" "pcr" y pcr)
+          (p "tpm-extend-enc" "pcr" z pcr))
+        (or (= y z) (prec y 2 z 1) (prec z 2 y 1)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_tpm-power-on-at-2
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-power-on-at-1
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 1))))
+  (defgenrule trRl_tpm-extend-enc-at-2
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-extend-enc-at-1
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 1)))))
+
+(defskeleton envelope-plus
+  (vars (n v data) (pcr-id pcr-id-0 text) (k aik akey) (tpm chan))
+  (deflistener
+    (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id-0) (k k) (aik aik)
+    (tpm tpm))
+  (non-orig aik)
+  (uniq-orig n v)
+  (conf tpm)
+  (traces
+    ((recv
+       (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik)))
+    ((send tpm (cat "extend" pcr-id-0 n))
+      (send tpm
+        (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 39)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope-plus
+  (vars (n v data) (pcr-id pcr-id-0 pcr-id-1 text) (k aik akey)
+    (pt pt-0 pt-1 pval) (tpm tpm-0 tpm-1 chan) (pcr locn))
+  (deflistener
+    (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id-0) (k k) (aik aik)
+    (tpm tpm))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (pcr-id pcr-id-0) (k k) (aik aik) (tpm tpm))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (pcr-id pcr-id)
+    (aik aik) (tpm tpm-0) (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value "refuse")
+    (current-value (hash "0" n)) (pcr-id pcr-id-1) (tpm tpm-1)
+    (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcr-id pcr-id-0) (tpm tpm) (pcr pcr))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 2) (0 0)) ((4 2) (3 1)) ((5 2) (4 1)))
+  (non-orig aik (invk k))
+  (uniq-orig n v k)
+  (gen-st (hash "0" n) (hash (hash "0" n) "refuse"))
+  (conf tpm)
+  (auth tpm)
+  (facts (trans 5 2) (trans 5 1) (trans 4 2) (trans 4 1))
+  (operation nonce-test (contracted (pcr-id-2 pcr-id-0) (tpm-2 tpm)) n
+    (5 0) (ch-msg tpm (cat "extend" pcr-id-0 n)))
+  (traces
+    ((recv
+       (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik)))
+    ((send tpm (cat "extend" pcr-id-0 n))
+      (send tpm
+        (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv tpm (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (send
+        (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik)))
+    ((recv tpm-0 (cat "quote" pcr-id (enc v k)))
+      (load pcr (cat pt (hash (hash "0" n) "refuse")))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik)))
+    ((recv tpm-1 (cat "extend" pcr-id-1 "refuse"))
+      (load pcr (cat pt-0 (hash "0" n)))
+      (stor pcr (cat pt (hash (hash "0" n) "refuse"))))
+    ((recv tpm (cat "extend" pcr-id-0 n)) (load pcr (cat pt-1 "0"))
+      (stor pcr (cat pt-0 (hash "0" n)))))
+  (label 46)
+  (parent 39)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((n n) (v v) (k k) (aik aik) (pcr-id pcr-id) (pcr-id-0 pcr-id-0)
+        (tpm tpm))))
+  (origs (pt-0 (5 2)) (pt (4 2)) (n (1 0)) (k (2 1)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope-plus basic
+  (defrole tpm-power-on
+    (vars (current-value mesg) (pcr locn) (tpm chan))
+    (trace (recv tpm "power on") (load pcr current-value)
+      (stor pcr "0")))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcr-id text) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "extend" pcr-id value))
+      (load pcr current-value) (stor pcr (hash current-value value))
+      (send "ext ok")))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcr-id text) (aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "quote" pcr-id nonce))
+      (load pcr current-value)
+      (send (enc "quote" pcr-id current-value nonce aik))))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcr-id text) (pcrval mesg) (tpm chan))
+    (trace (recv tpm (cat "create-req" pcr-id pcrval))
+      (send (enc "created" k pcr-id pcrval aik)))
+    (non-orig (invk k))
+    (uniq-orig k)
+    (auth tpm))
+  (defrole tpm-decrypt
+    (vars (m current-value mesg) (pcr-id text) (k aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcr-id current-value aik))
+      (load pcr current-value) (send m))
+    (non-orig aik))
+  (defrole alice
+    (vars (n v data) (pcr-id text) (k aik akey) (tpm chan))
+    (trace (send tpm (cat "extend" pcr-id n))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig aik)
+    (uniq-orig n v)
+    (conf tpm)
+    (neq (k aik)))
+  (defrule genStV-if-hashed-tpm-power-on
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-power-on" z 2)
+          (p "tpm-power-on" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-extend-enc
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-extend-enc" z 2)
+          (p "tpm-extend-enc" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-decrypt
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-decrypt" z 3)
+          (p "tpm-decrypt" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-quote
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-quote" z 2)
+          (p "tpm-quote" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule ordered-extends
+    (forall ((y z strd) (pcr locn))
+      (implies
+        (and (p "tpm-extend-enc" y 3) (p "tpm-extend-enc" z 3)
+          (p "tpm-extend-enc" "pcr" y pcr)
+          (p "tpm-extend-enc" "pcr" z pcr))
+        (or (= y z) (prec y 2 z 1) (prec z 2 y 1)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_tpm-power-on-at-2
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-power-on-at-1
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 1))))
+  (defgenrule trRl_tpm-extend-enc-at-2
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-extend-enc-at-1
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 1)))))
+
+(defskeleton envelope-plus
+  (vars (n v data) (pcr-id pcr-id-0 text) (k aik akey) (tpm chan))
+  (deflistener
+    (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id-0) (k k) (aik aik)
+    (tpm tpm))
+  (non-orig aik)
+  (uniq-orig n v)
+  (conf tpm)
+  (traces
+    ((recv
+       (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik))) ((recv v) (send v))
+    ((send tpm (cat "extend" pcr-id-0 n))
+      (send tpm
+        (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 47)
+  (unrealized (0 0) (1 0) (2 2))
+  (preskeleton)
+  (origs (v (2 3)) (n (2 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope-plus
+  (vars (n v data) (pcr-id pcr-id-0 pcr-id-1 pcr-id-2 text) (k aik akey)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (tpm tpm-0 tpm-1 tpm-2 tpm-3 chan) (pcr pcr-0 locn))
+  (deflistener
+    (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id-0) (k k) (aik aik)
+    (tpm tpm))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (pcr-id pcr-id-0) (k k) (aik aik) (tpm tpm))
+  (defstrand tpm-decrypt 4 (m v)
+    (current-value (hash (hash "0" n) "obtain")) (pcr-id pcr-id-0) (k k)
+    (aik aik) (tpm tpm-0) (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value "obtain")
+    (current-value (hash "0" n)) (pcr-id pcr-id-1) (tpm tpm-1)
+    (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcr-id pcr-id-0) (tpm tpm) (pcr pcr))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (pcr-id pcr-id)
+    (aik aik) (tpm tpm-2) (pcr pcr-0))
+  (defstrand tpm-extend-enc 3 (value "refuse")
+    (current-value (hash "0" n)) (pcr-id pcr-id-2) (tpm tpm-3)
+    (pcr pcr-0))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcr-id pcr-id-0) (tpm tpm) (pcr pcr-0))
+  (precedes ((2 0) (6 0)) ((2 0) (9 0)) ((2 1) (3 0)) ((2 3) (4 0))
+    ((2 3) (7 0)) ((3 1) (2 2)) ((4 3) (1 0)) ((5 2) (4 2))
+    ((6 2) (5 1)) ((7 2) (0 0)) ((8 2) (7 1)) ((9 2) (8 1)))
+  (non-orig aik (invk k))
+  (uniq-orig n v k)
+  (gen-st (hash "0" n) (hash (hash "0" n) "obtain")
+    (hash (hash "0" n) "refuse"))
+  (conf tpm)
+  (auth tpm)
+  (facts (trans 9 2) (trans 9 1) (trans 8 2) (trans 8 1) (trans 6 2)
+    (trans 6 1) (trans 5 2) (trans 5 1))
+  (operation nonce-test (contracted (pcr-id-3 pcr-id-0) (tpm-4 tpm)) n
+    (9 0) (ch-msg tpm (cat "extend" pcr-id-0 n)))
+  (traces
+    ((recv
+       (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik))) ((recv v) (send v))
+    ((send tpm (cat "extend" pcr-id-0 n))
+      (send tpm
+        (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv tpm (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (send
+        (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik)))
+    ((recv tpm-0 (cat "decrypt" (enc v k)))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (load pcr (cat pt (hash (hash "0" n) "obtain"))) (send v))
+    ((recv tpm-1 (cat "extend" pcr-id-1 "obtain"))
+      (load pcr (cat pt-0 (hash "0" n)))
+      (stor pcr (cat pt (hash (hash "0" n) "obtain"))))
+    ((recv tpm (cat "extend" pcr-id-0 n)) (load pcr (cat pt-1 "0"))
+      (stor pcr (cat pt-0 (hash "0" n))))
+    ((recv tpm-2 (cat "quote" pcr-id (enc v k)))
+      (load pcr-0 (cat pt-2 (hash (hash "0" n) "refuse")))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik)))
+    ((recv tpm-3 (cat "extend" pcr-id-2 "refuse"))
+      (load pcr-0 (cat pt-3 (hash "0" n)))
+      (stor pcr-0 (cat pt-2 (hash (hash "0" n) "refuse"))))
+    ((recv tpm (cat "extend" pcr-id-0 n)) (load pcr-0 (cat pt-4 "0"))
+      (stor pcr-0 (cat pt-3 (hash "0" n)))))
+  (label 59)
+  (parent 47)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 2)
+      ((n n) (v v) (k k) (aik aik) (pcr-id pcr-id) (pcr-id-0 pcr-id-0)
+        (tpm tpm))))
+  (origs (pt-3 (9 2)) (pt-2 (8 2)) (pt-0 (6 2)) (pt (5 2)) (k (3 1))
+    (n (2 0)) (v (2 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope-plus-2 basic
+  (defrole tpm-power-on
+    (vars (current-value mesg) (pcr locn) (tpm chan))
+    (trace (recv tpm "power on") (load pcr current-value)
+      (stor pcr "0")))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcr-id text) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "extend" pcr-id value))
+      (load pcr current-value) (stor pcr (hash current-value value))
+      (send "ext ok")))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcr-id text) (aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "quote" pcr-id nonce))
+      (load pcr current-value)
+      (send (enc "quote" pcr-id current-value nonce aik))))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcr-id text) (pcrval mesg) (tpm chan))
+    (trace (recv tpm (cat "create-req" pcr-id pcrval))
+      (send (enc "created" k pcr-id pcrval aik)))
+    (non-orig (invk k))
+    (uniq-orig k)
+    (auth tpm))
+  (defrole tpm-decrypt
+    (vars (m current-value mesg) (pcr-id text) (k aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcr-id current-value aik))
+      (load pcr current-value) (send m))
+    (non-orig aik))
+  (defrole alice
+    (vars (n v data) (pcr-id text) (k aik akey) (tpm chan))
+    (trace (send tpm (cat "extend" pcr-id n))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig aik)
+    (uniq-orig n v)
+    (conf tpm)
+    (neq (k aik)))
+  (defrule genStV-if-hashed-tpm-power-on
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-power-on" z 2)
+          (p "tpm-power-on" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-extend-enc
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-extend-enc" z 2)
+          (p "tpm-extend-enc" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-decrypt
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-decrypt" z 3)
+          (p "tpm-decrypt" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-quote
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-quote" z 2)
+          (p "tpm-quote" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule pcr-id-identifies-pcr
+    (forall ((y z strd) (pcr-id text) (pcr pcr-0 locn))
+      (implies
+        (and (p "tpm-extend-enc" y 3) (p "tpm-extend-enc" z 3)
+          (p "tpm-extend-enc" "pcr-id" y pcr-id)
+          (p "tpm-extend-enc" "pcr-id" z pcr-id)
+          (p "tpm-extend-enc" "pcr" y pcr)
+          (p "tpm-extend-enc" "pcr" z pcr-0))
+        (= pcr pcr-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_tpm-power-on-at-2
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-power-on-at-1
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 1))))
+  (defgenrule trRl_tpm-extend-enc-at-2
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-extend-enc-at-1
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 1)))))
+
+(defskeleton envelope-plus-2
+  (vars (v n data) (pcr-id text) (k aik akey) (tpm chan))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id) (k k) (aik aik)
+    (tpm tpm))
+  (non-orig aik)
+  (uniq-orig v n)
+  (conf tpm)
+  (traces ((recv v) (send v))
+    ((send tpm (cat "extend" pcr-id n))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 60)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope-plus-2
+  (vars (v n data) (pcr-id pcr-id-0 text) (k aik akey)
+    (pt pt-0 pt-1 pval) (tpm tpm-0 tpm-1 chan) (pcr locn))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id) (k k) (aik aik)
+    (tpm tpm))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (pcr-id pcr-id) (k k) (aik aik) (tpm tpm))
+  (defstrand tpm-decrypt 4 (m v)
+    (current-value (hash (hash "0" n) "obtain")) (pcr-id pcr-id) (k k)
+    (aik aik) (tpm tpm-0) (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value "obtain")
+    (current-value (hash "0" n)) (pcr-id pcr-id-0) (tpm tpm-1)
+    (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcr-id pcr-id) (tpm tpm) (pcr pcr))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 3) (0 0)) ((4 2) (3 2)) ((5 2) (4 1)))
+  (non-orig aik (invk k))
+  (uniq-orig v n k)
+  (gen-st (hash "0" n) (hash (hash "0" n) "obtain"))
+  (conf tpm)
+  (auth tpm)
+  (facts (trans 5 2) (trans 5 1) (trans 4 2) (trans 4 1))
+  (operation nonce-test (contracted (pcr-id-1 pcr-id) (tpm-2 tpm)) n
+    (5 0) (ch-msg tpm (cat "extend" pcr-id n)))
+  (traces ((recv v) (send v))
+    ((send tpm (cat "extend" pcr-id n))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (send (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik)))
+    ((recv tpm-0 (cat "decrypt" (enc v k)))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (load pcr (cat pt (hash (hash "0" n) "obtain"))) (send v))
+    ((recv tpm-1 (cat "extend" pcr-id-0 "obtain"))
+      (load pcr (cat pt-0 (hash "0" n)))
+      (stor pcr (cat pt (hash (hash "0" n) "obtain"))))
+    ((recv tpm (cat "extend" pcr-id n)) (load pcr (cat pt-1 "0"))
+      (stor pcr (cat pt-0 (hash "0" n)))))
+  (label 68)
+  (parent 60)
+  (realized)
+  (shape)
+  (maps ((0 1) ((v v) (n n) (pcr-id pcr-id) (k k) (aik aik) (tpm tpm))))
+  (origs (pt-0 (5 2)) (pt (4 2)) (k (2 1)) (n (1 0)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope-plus-2 basic
+  (defrole tpm-power-on
+    (vars (current-value mesg) (pcr locn) (tpm chan))
+    (trace (recv tpm "power on") (load pcr current-value)
+      (stor pcr "0")))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcr-id text) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "extend" pcr-id value))
+      (load pcr current-value) (stor pcr (hash current-value value))
+      (send "ext ok")))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcr-id text) (aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "quote" pcr-id nonce))
+      (load pcr current-value)
+      (send (enc "quote" pcr-id current-value nonce aik))))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcr-id text) (pcrval mesg) (tpm chan))
+    (trace (recv tpm (cat "create-req" pcr-id pcrval))
+      (send (enc "created" k pcr-id pcrval aik)))
+    (non-orig (invk k))
+    (uniq-orig k)
+    (auth tpm))
+  (defrole tpm-decrypt
+    (vars (m current-value mesg) (pcr-id text) (k aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcr-id current-value aik))
+      (load pcr current-value) (send m))
+    (non-orig aik))
+  (defrole alice
+    (vars (n v data) (pcr-id text) (k aik akey) (tpm chan))
+    (trace (send tpm (cat "extend" pcr-id n))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig aik)
+    (uniq-orig n v)
+    (conf tpm)
+    (neq (k aik)))
+  (defrule genStV-if-hashed-tpm-power-on
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-power-on" z 2)
+          (p "tpm-power-on" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-extend-enc
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-extend-enc" z 2)
+          (p "tpm-extend-enc" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-decrypt
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-decrypt" z 3)
+          (p "tpm-decrypt" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-quote
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-quote" z 2)
+          (p "tpm-quote" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule pcr-id-identifies-pcr
+    (forall ((y z strd) (pcr-id text) (pcr pcr-0 locn))
+      (implies
+        (and (p "tpm-extend-enc" y 3) (p "tpm-extend-enc" z 3)
+          (p "tpm-extend-enc" "pcr-id" y pcr-id)
+          (p "tpm-extend-enc" "pcr-id" z pcr-id)
+          (p "tpm-extend-enc" "pcr" y pcr)
+          (p "tpm-extend-enc" "pcr" z pcr-0))
+        (= pcr pcr-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_tpm-power-on-at-2
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-power-on-at-1
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 1))))
+  (defgenrule trRl_tpm-extend-enc-at-2
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-extend-enc-at-1
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 1)))))
+
+(defskeleton envelope-plus-2
+  (vars (n v data) (pcr-id pcr-id-0 text) (k aik akey) (tpm chan))
+  (deflistener
+    (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id-0) (k k) (aik aik)
+    (tpm tpm))
+  (non-orig aik)
+  (uniq-orig n v)
+  (conf tpm)
+  (traces
+    ((recv
+       (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik)))
+    ((send tpm (cat "extend" pcr-id-0 n))
+      (send tpm
+        (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 69)
+  (unrealized (0 0) (1 2))
+  (preskeleton)
+  (origs (v (1 3)) (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope-plus-2
+  (vars (n v data) (pcr-id pcr-id-0 pcr-id-1 text) (k aik akey)
+    (pt pt-0 pt-1 pval) (tpm tpm-0 tpm-1 chan) (pcr locn))
+  (deflistener
+    (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id-0) (k k) (aik aik)
+    (tpm tpm))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (pcr-id pcr-id-0) (k k) (aik aik) (tpm tpm))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (pcr-id pcr-id)
+    (aik aik) (tpm tpm-0) (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value "refuse")
+    (current-value (hash "0" n)) (pcr-id pcr-id-1) (tpm tpm-1)
+    (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcr-id pcr-id-0) (tpm tpm) (pcr pcr))
+  (precedes ((1 0) (5 0)) ((1 1) (2 0)) ((1 3) (3 0)) ((2 1) (1 2))
+    ((3 2) (0 0)) ((4 2) (3 1)) ((5 2) (4 1)))
+  (non-orig aik (invk k))
+  (uniq-orig n v k)
+  (gen-st (hash "0" n) (hash (hash "0" n) "refuse"))
+  (conf tpm)
+  (auth tpm)
+  (facts (trans 5 2) (trans 5 1) (trans 4 2) (trans 4 1))
+  (operation nonce-test (contracted (pcr-id-2 pcr-id-0) (tpm-2 tpm)) n
+    (5 0) (ch-msg tpm (cat "extend" pcr-id-0 n)))
+  (traces
+    ((recv
+       (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik)))
+    ((send tpm (cat "extend" pcr-id-0 n))
+      (send tpm
+        (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv tpm (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (send
+        (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik)))
+    ((recv tpm-0 (cat "quote" pcr-id (enc v k)))
+      (load pcr (cat pt (hash (hash "0" n) "refuse")))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik)))
+    ((recv tpm-1 (cat "extend" pcr-id-1 "refuse"))
+      (load pcr (cat pt-0 (hash "0" n)))
+      (stor pcr (cat pt (hash (hash "0" n) "refuse"))))
+    ((recv tpm (cat "extend" pcr-id-0 n)) (load pcr (cat pt-1 "0"))
+      (stor pcr (cat pt-0 (hash "0" n)))))
+  (label 76)
+  (parent 69)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((n n) (v v) (k k) (aik aik) (pcr-id pcr-id) (pcr-id-0 pcr-id-0)
+        (tpm tpm))))
+  (origs (pt-0 (5 2)) (pt (4 2)) (n (1 0)) (k (2 1)) (v (1 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope-plus-2 basic
+  (defrole tpm-power-on
+    (vars (current-value mesg) (pcr locn) (tpm chan))
+    (trace (recv tpm "power on") (load pcr current-value)
+      (stor pcr "0")))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcr-id text) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "extend" pcr-id value))
+      (load pcr current-value) (stor pcr (hash current-value value))
+      (send "ext ok")))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcr-id text) (aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "quote" pcr-id nonce))
+      (load pcr current-value)
+      (send (enc "quote" pcr-id current-value nonce aik))))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcr-id text) (pcrval mesg) (tpm chan))
+    (trace (recv tpm (cat "create-req" pcr-id pcrval))
+      (send (enc "created" k pcr-id pcrval aik)))
+    (non-orig (invk k))
+    (uniq-orig k)
+    (auth tpm))
+  (defrole tpm-decrypt
+    (vars (m current-value mesg) (pcr-id text) (k aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcr-id current-value aik))
+      (load pcr current-value) (send m))
+    (non-orig aik))
+  (defrole alice
+    (vars (n v data) (pcr-id text) (k aik akey) (tpm chan))
+    (trace (send tpm (cat "extend" pcr-id n))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig aik)
+    (uniq-orig n v)
+    (conf tpm)
+    (neq (k aik)))
+  (defrule genStV-if-hashed-tpm-power-on
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-power-on" z 2)
+          (p "tpm-power-on" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-extend-enc
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-extend-enc" z 2)
+          (p "tpm-extend-enc" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-decrypt
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-decrypt" z 3)
+          (p "tpm-decrypt" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-quote
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-quote" z 2)
+          (p "tpm-quote" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule pcr-id-identifies-pcr
+    (forall ((y z strd) (pcr-id text) (pcr pcr-0 locn))
+      (implies
+        (and (p "tpm-extend-enc" y 3) (p "tpm-extend-enc" z 3)
+          (p "tpm-extend-enc" "pcr-id" y pcr-id)
+          (p "tpm-extend-enc" "pcr-id" z pcr-id)
+          (p "tpm-extend-enc" "pcr" y pcr)
+          (p "tpm-extend-enc" "pcr" z pcr-0))
+        (= pcr pcr-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_tpm-power-on-at-2
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-power-on-at-1
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 1))))
+  (defgenrule trRl_tpm-extend-enc-at-2
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-extend-enc-at-1
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 3) (trans z 1)))))
+
+(defskeleton envelope-plus-2
+  (vars (n v data) (pcr-id pcr-id-0 text) (k aik akey) (tpm chan))
+  (deflistener
+    (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id-0) (k k) (aik aik)
+    (tpm tpm))
+  (non-orig aik)
+  (uniq-orig n v)
+  (conf tpm)
+  (traces
+    ((recv
+       (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik))) ((recv v) (send v))
+    ((send tpm (cat "extend" pcr-id-0 n))
+      (send tpm
+        (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 77)
+  (unrealized (0 0) (1 0) (2 2))
+  (preskeleton)
+  (origs (v (2 3)) (n (2 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope-plus-2
+  (vars (n v data) (pcr-id pcr-id-0 pcr-id-1 pcr-id-2 text) (k aik akey)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval)
+    (tpm tpm-0 tpm-1 tpm-2 tpm-3 chan) (pcr locn))
+  (deflistener
+    (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 4 (n n) (v v) (pcr-id pcr-id-0) (k k) (aik aik)
+    (tpm tpm))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (pcr-id pcr-id-0) (k k) (aik aik) (tpm tpm))
+  (defstrand tpm-decrypt 4 (m v)
+    (current-value (hash (hash "0" n) "obtain")) (pcr-id pcr-id-0) (k k)
+    (aik aik) (tpm tpm-0) (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value "obtain")
+    (current-value (hash "0" n)) (pcr-id pcr-id-1) (tpm tpm-1)
+    (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcr-id pcr-id-0) (tpm tpm) (pcr pcr))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (pcr-id pcr-id)
+    (aik aik) (tpm tpm-2) (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value "refuse")
+    (current-value (hash "0" n)) (pcr-id pcr-id-2) (tpm tpm-3)
+    (pcr pcr))
+  (defstrand tpm-extend-enc 3 (value n) (current-value "0")
+    (pcr-id pcr-id-0) (tpm tpm) (pcr pcr))
+  (precedes ((2 0) (6 0)) ((2 0) (9 0)) ((2 1) (3 0)) ((2 3) (4 0))
+    ((2 3) (7 0)) ((3 1) (2 2)) ((4 3) (1 0)) ((5 2) (4 2))
+    ((6 2) (5 1)) ((7 2) (0 0)) ((8 2) (7 1)) ((9 2) (8 1)))
+  (non-orig aik (invk k))
+  (uniq-orig n v k)
+  (gen-st (hash "0" n) (hash (hash "0" n) "obtain")
+    (hash (hash "0" n) "refuse"))
+  (conf tpm)
+  (auth tpm)
+  (facts (trans 9 2) (trans 9 1) (trans 8 2) (trans 8 1) (trans 6 2)
+    (trans 6 1) (trans 5 2) (trans 5 1))
+  (rule pcr-id-identifies-pcr)
+  (operation nonce-test
+    (contracted (pcr-0 pcr) (pcr-id-3 pcr-id-0) (tpm-4 tpm)) n (9 0)
+    (ch-msg tpm (cat "extend" pcr-id-0 n)))
+  (traces
+    ((recv
+       (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik))) ((recv v) (send v))
+    ((send tpm (cat "extend" pcr-id-0 n))
+      (send tpm
+        (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv tpm (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (send
+        (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik)))
+    ((recv tpm-0 (cat "decrypt" (enc v k)))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (load pcr (cat pt (hash (hash "0" n) "obtain"))) (send v))
+    ((recv tpm-1 (cat "extend" pcr-id-1 "obtain"))
+      (load pcr (cat pt-0 (hash "0" n)))
+      (stor pcr (cat pt (hash (hash "0" n) "obtain"))))
+    ((recv tpm (cat "extend" pcr-id-0 n)) (load pcr (cat pt-1 "0"))
+      (stor pcr (cat pt-0 (hash "0" n))))
+    ((recv tpm-2 (cat "quote" pcr-id (enc v k)))
+      (load pcr (cat pt-2 (hash (hash "0" n) "refuse")))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik)))
+    ((recv tpm-3 (cat "extend" pcr-id-2 "refuse"))
+      (load pcr (cat pt-3 (hash "0" n)))
+      (stor pcr (cat pt-2 (hash (hash "0" n) "refuse"))))
+    ((recv tpm (cat "extend" pcr-id-0 n)) (load pcr (cat pt-4 "0"))
+      (stor pcr (cat pt-3 (hash "0" n)))))
+  (label 89)
+  (parent 77)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 2)
+      ((n n) (v v) (k k) (aik aik) (pcr-id pcr-id) (pcr-id-0 pcr-id-0)
+        (tpm tpm))))
+  (origs (pt-3 (9 2)) (pt-2 (8 2)) (pt-0 (6 2)) (pt (5 2)) (k (3 1))
+    (n (2 0)) (v (2 3))))
+
+(comment "Nothing left to do")
diff --git a/tst/mass.tst b/tst/mass.tst
--- a/tst/mass.tst
+++ b/tst/mass.tst
@@ -1,6 +1,6 @@
 (herald mass (bound 8))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/mass.lsp")
 (comment "Strand count bounded at 8")
 
@@ -42,6 +42,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand init 3) (enc n2 (ltk a b))
     (0 4))
+  (strand-map 0)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -62,6 +63,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand resp 5) (enc n2 (ltk a b))
     (0 4))
+  (strand-map 0)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -81,6 +83,7 @@
   (uniq-orig n2)
   (operation encryption-test (displaced 2 0 init 3) (enc n1-0 (ltk a b))
     (1 2))
+  (strand-map 0 1)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -103,6 +106,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand init 3) (enc n1-0 (ltk a b))
     (1 2))
+  (strand-map 0 1)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -126,6 +130,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand resp 5) (enc n1-0 (ltk a b))
     (1 2))
+  (strand-map 0 1)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -148,6 +153,7 @@
   (uniq-orig n2)
   (operation encryption-test (displaced 3 0 init 3) (enc n1-1 (ltk a b))
     (2 2))
+  (strand-map 0 1 2)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -173,6 +179,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand init 3) (enc n1-1 (ltk a b))
     (2 2))
+  (strand-map 0 1 2)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -199,6 +206,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand resp 5) (enc n1-1 (ltk a b))
     (2 2))
+  (strand-map 0 1 2)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -225,6 +233,7 @@
   (uniq-orig n2)
   (operation encryption-test (displaced 4 0 init 3) (enc n1-2 (ltk a b))
     (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -254,6 +263,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand init 3) (enc n1-2 (ltk a b))
     (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -284,6 +294,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand resp 5) (enc n1-2 (ltk a b))
     (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -313,6 +324,7 @@
   (uniq-orig n2)
   (operation encryption-test (displaced 5 0 init 3) (enc n1-3 (ltk a b))
     (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -345,6 +357,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand init 3) (enc n1-3 (ltk a b))
     (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -378,6 +391,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand resp 5) (enc n1-3 (ltk a b))
     (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -410,6 +424,7 @@
   (uniq-orig n2)
   (operation encryption-test (displaced 6 0 init 3) (enc n1-4 (ltk a b))
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -445,6 +460,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand init 3) (enc n1-4 (ltk a b))
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -481,6 +497,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand resp 5) (enc n1-4 (ltk a b))
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -516,6 +533,7 @@
   (uniq-orig n2)
   (operation encryption-test (displaced 7 0 init 3) (enc n1-5 (ltk a b))
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -554,6 +572,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand init 3) (enc n1-5 (ltk a b))
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
@@ -595,6 +614,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand resp 5) (enc n1-5 (ltk a b))
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
       (recv (enc n2 (ltk a b))))
diff --git a/tst/mass2.tst b/tst/mass2.tst
--- a/tst/mass2.tst
+++ b/tst/mass2.tst
@@ -1,6 +1,6 @@
 (herald mass2 (bound 8))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/mass2.lsp")
 (comment "Strand count bounded at 8")
 
@@ -42,6 +42,7 @@
   (uniq-orig n1)
   (operation encryption-test (added-strand init 3) (enc n1 (ltk a b))
     (0 2))
+  (strand-map 0)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -61,6 +62,7 @@
   (uniq-orig n1)
   (operation encryption-test (added-strand resp 2) (enc n1 (ltk a b))
     (0 2))
+  (strand-map 0)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -82,6 +84,7 @@
   (uniq-orig n1)
   (operation encryption-test (added-strand init 3) (enc n2-0 (ltk a b))
     (1 1))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -103,6 +106,7 @@
   (uniq-orig n1)
   (operation encryption-test (displaced 2 0 resp 2) (enc n2-0 (ltk a b))
     (1 1))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -125,6 +129,7 @@
   (uniq-orig n1)
   (operation encryption-test (added-strand resp 2) (enc n2-0 (ltk a b))
     (1 1))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -149,6 +154,7 @@
   (uniq-orig n1)
   (operation encryption-test (added-strand init 3) (enc n2-1 (ltk a b))
     (2 1))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -173,6 +179,7 @@
   (uniq-orig n1)
   (operation encryption-test (displaced 3 0 resp 2) (enc n2-1 (ltk a b))
     (2 1))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -198,6 +205,7 @@
   (uniq-orig n1)
   (operation encryption-test (added-strand resp 2) (enc n2-1 (ltk a b))
     (2 1))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -226,6 +234,7 @@
   (uniq-orig n1)
   (operation encryption-test (added-strand init 3) (enc n2-2 (ltk a b))
     (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -253,6 +262,7 @@
   (uniq-orig n1)
   (operation encryption-test (displaced 4 0 resp 2) (enc n2-2 (ltk a b))
     (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -282,6 +292,7 @@
   (uniq-orig n1)
   (operation encryption-test (added-strand resp 2) (enc n2-2 (ltk a b))
     (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -313,6 +324,7 @@
   (uniq-orig n1)
   (operation encryption-test (added-strand init 3) (enc n2-3 (ltk a b))
     (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -344,6 +356,7 @@
   (uniq-orig n1)
   (operation encryption-test (displaced 5 0 resp 2) (enc n2-3 (ltk a b))
     (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -376,6 +389,7 @@
   (uniq-orig n1)
   (operation encryption-test (added-strand resp 2) (enc n2-3 (ltk a b))
     (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -410,6 +424,7 @@
   (uniq-orig n1)
   (operation encryption-test (added-strand init 3) (enc n2-4 (ltk a b))
     (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -444,6 +459,7 @@
   (uniq-orig n1)
   (operation encryption-test (displaced 6 0 resp 2) (enc n2-4 (ltk a b))
     (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -479,6 +495,7 @@
   (uniq-orig n1)
   (operation encryption-test (added-strand resp 2) (enc n2-4 (ltk a b))
     (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -515,6 +532,7 @@
   (uniq-orig n1)
   (operation encryption-test (displaced 7 0 resp 2) (enc n2-5 (ltk a b))
     (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -553,6 +571,7 @@
   (uniq-orig n1)
   (operation encryption-test (added-strand resp 2) (enc n2-5 (ltk a b))
     (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
@@ -594,6 +613,7 @@
   (uniq-orig n1)
   (operation encryption-test (added-strand init 3) (enc n2-5 (ltk a b))
     (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
       (recv (enc n1 (ltk a b))))
diff --git a/tst/mass2_shapes.tst b/tst/mass2_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/mass2_shapes.tst
@@ -0,0 +1,418 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/mass2.lsp")
+
+(defprotocol mass2 basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (cat a n2)) (recv (cat n1 (enc n2 (ltk a b))))
+      (send (enc n1 (ltk a b)))))
+  (defrole resp
+    (vars (a b name) (n1 n2 text))
+    (trace (recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
+      (recv (enc n1 (ltk a b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton mass2
+  (vars (n1 n2 text) (a b name))
+  (defstrand resp 3 (n1 n1) (n2 n2) (a a) (b b))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (traces
+    ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
+      (recv (enc n1 (ltk a b)))))
+  (label 0)
+  (unrealized (0 2))
+  (origs (n1 (0 1)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton mass2
+  (vars (n1 n2 n1-0 text) (a b name))
+  (defstrand resp 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n1 n1-0) (n2 n1) (a a) (b b))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (operation encryption-test (added-strand resp 2) (enc n1 (ltk a b))
+    (0 2))
+  (traces
+    ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
+      (recv (enc n1 (ltk a b))))
+    ((recv (cat a n1)) (send (cat n1-0 (enc n1 (ltk a b))))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 1))))
+
+(defskeleton mass2
+  (vars (n1 n2 text) (a b name))
+  (defstrand resp 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (operation encryption-test (displaced 2 0 resp 2) (enc n2-0 (ltk a b))
+    (1 1))
+  (traces
+    ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
+      (recv (enc n1 (ltk a b))))
+    ((send (cat a n2)) (recv (cat n1 (enc n2 (ltk a b))))
+      (send (enc n1 (ltk a b)))))
+  (label 4)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 1))))
+
+(defskeleton mass2
+  (vars (n1 n2 n2-0 n1-0 text) (a b name))
+  (defstrand resp 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1) (n2 n2-0) (a a) (b b))
+  (defstrand resp 2 (n1 n1-0) (n2 n2-0) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)) ((2 1) (1 1)))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (operation encryption-test (added-strand resp 2) (enc n2-0 (ltk a b))
+    (1 1))
+  (traces
+    ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
+      (recv (enc n1 (ltk a b))))
+    ((send (cat a n2-0)) (recv (cat n1 (enc n2-0 (ltk a b))))
+      (send (enc n1 (ltk a b))))
+    ((recv (cat a n2-0)) (send (cat n1-0 (enc n2-0 (ltk a b))))))
+  (label 5)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 1))))
+
+(defskeleton mass2
+  (vars (n1 n2 n2-0 text) (a b name))
+  (defstrand resp 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1) (n2 n2-0) (a a) (b b))
+  (defstrand init 3 (n1 n2-0) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (2 1)) ((1 2) (0 2)) ((2 2) (1 1)))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (operation encryption-test (displaced 3 0 resp 2) (enc n2-1 (ltk a b))
+    (2 1))
+  (traces
+    ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
+      (recv (enc n1 (ltk a b))))
+    ((send (cat a n2-0)) (recv (cat n1 (enc n2-0 (ltk a b))))
+      (send (enc n1 (ltk a b))))
+    ((send (cat a n2)) (recv (cat n2-0 (enc n2 (ltk a b))))
+      (send (enc n2-0 (ltk a b)))))
+  (label 7)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 1))))
+
+(defskeleton mass2
+  (vars (n1 n2 n2-0 n2-1 n1-0 text) (a b name))
+  (defstrand resp 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1) (n2 n2-0) (a a) (b b))
+  (defstrand init 3 (n1 n2-0) (n2 n2-1) (a a) (b b))
+  (defstrand resp 2 (n1 n1-0) (n2 n2-1) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)) ((2 2) (1 1)) ((3 1) (2 1)))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (operation encryption-test (added-strand resp 2) (enc n2-1 (ltk a b))
+    (2 1))
+  (traces
+    ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
+      (recv (enc n1 (ltk a b))))
+    ((send (cat a n2-0)) (recv (cat n1 (enc n2-0 (ltk a b))))
+      (send (enc n1 (ltk a b))))
+    ((send (cat a n2-1)) (recv (cat n2-0 (enc n2-1 (ltk a b))))
+      (send (enc n2-0 (ltk a b))))
+    ((recv (cat a n2-1)) (send (cat n1-0 (enc n2-1 (ltk a b))))))
+  (label 8)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 1))))
+
+(defskeleton mass2
+  (vars (n1 n2 n2-0 n2-1 text) (a b name))
+  (defstrand resp 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1) (n2 n2-0) (a a) (b b))
+  (defstrand init 3 (n1 n2-0) (n2 n2-1) (a a) (b b))
+  (defstrand init 3 (n1 n2-1) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (3 1)) ((1 2) (0 2)) ((2 2) (1 1)) ((3 2) (2 1)))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (operation encryption-test (displaced 4 0 resp 2) (enc n2-2 (ltk a b))
+    (3 1))
+  (traces
+    ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
+      (recv (enc n1 (ltk a b))))
+    ((send (cat a n2-0)) (recv (cat n1 (enc n2-0 (ltk a b))))
+      (send (enc n1 (ltk a b))))
+    ((send (cat a n2-1)) (recv (cat n2-0 (enc n2-1 (ltk a b))))
+      (send (enc n2-0 (ltk a b))))
+    ((send (cat a n2)) (recv (cat n2-1 (enc n2 (ltk a b))))
+      (send (enc n2-1 (ltk a b)))))
+  (label 10)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 1))))
+
+(defskeleton mass2
+  (vars (n1 n2 n2-0 n2-1 n2-2 n1-0 text) (a b name))
+  (defstrand resp 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1) (n2 n2-0) (a a) (b b))
+  (defstrand init 3 (n1 n2-0) (n2 n2-1) (a a) (b b))
+  (defstrand init 3 (n1 n2-1) (n2 n2-2) (a a) (b b))
+  (defstrand resp 2 (n1 n1-0) (n2 n2-2) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)) ((2 2) (1 1)) ((3 2) (2 1))
+    ((4 1) (3 1)))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (operation encryption-test (added-strand resp 2) (enc n2-2 (ltk a b))
+    (3 1))
+  (traces
+    ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
+      (recv (enc n1 (ltk a b))))
+    ((send (cat a n2-0)) (recv (cat n1 (enc n2-0 (ltk a b))))
+      (send (enc n1 (ltk a b))))
+    ((send (cat a n2-1)) (recv (cat n2-0 (enc n2-1 (ltk a b))))
+      (send (enc n2-0 (ltk a b))))
+    ((send (cat a n2-2)) (recv (cat n2-1 (enc n2-2 (ltk a b))))
+      (send (enc n2-1 (ltk a b))))
+    ((recv (cat a n2-2)) (send (cat n1-0 (enc n2-2 (ltk a b))))))
+  (label 11)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 1))))
+
+(defskeleton mass2
+  (vars (n1 n2 n2-0 n2-1 n2-2 text) (a b name))
+  (defstrand resp 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1) (n2 n2-0) (a a) (b b))
+  (defstrand init 3 (n1 n2-0) (n2 n2-1) (a a) (b b))
+  (defstrand init 3 (n1 n2-1) (n2 n2-2) (a a) (b b))
+  (defstrand init 3 (n1 n2-2) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (4 1)) ((1 2) (0 2)) ((2 2) (1 1)) ((3 2) (2 1))
+    ((4 2) (3 1)))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (operation encryption-test (displaced 5 0 resp 2) (enc n2-3 (ltk a b))
+    (4 1))
+  (traces
+    ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
+      (recv (enc n1 (ltk a b))))
+    ((send (cat a n2-0)) (recv (cat n1 (enc n2-0 (ltk a b))))
+      (send (enc n1 (ltk a b))))
+    ((send (cat a n2-1)) (recv (cat n2-0 (enc n2-1 (ltk a b))))
+      (send (enc n2-0 (ltk a b))))
+    ((send (cat a n2-2)) (recv (cat n2-1 (enc n2-2 (ltk a b))))
+      (send (enc n2-1 (ltk a b))))
+    ((send (cat a n2)) (recv (cat n2-2 (enc n2 (ltk a b))))
+      (send (enc n2-2 (ltk a b)))))
+  (label 13)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 1))))
+
+(defskeleton mass2
+  (vars (n1 n2 n2-0 n2-1 n2-2 n2-3 n1-0 text) (a b name))
+  (defstrand resp 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1) (n2 n2-0) (a a) (b b))
+  (defstrand init 3 (n1 n2-0) (n2 n2-1) (a a) (b b))
+  (defstrand init 3 (n1 n2-1) (n2 n2-2) (a a) (b b))
+  (defstrand init 3 (n1 n2-2) (n2 n2-3) (a a) (b b))
+  (defstrand resp 2 (n1 n1-0) (n2 n2-3) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)) ((2 2) (1 1)) ((3 2) (2 1))
+    ((4 2) (3 1)) ((5 1) (4 1)))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (operation encryption-test (added-strand resp 2) (enc n2-3 (ltk a b))
+    (4 1))
+  (traces
+    ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
+      (recv (enc n1 (ltk a b))))
+    ((send (cat a n2-0)) (recv (cat n1 (enc n2-0 (ltk a b))))
+      (send (enc n1 (ltk a b))))
+    ((send (cat a n2-1)) (recv (cat n2-0 (enc n2-1 (ltk a b))))
+      (send (enc n2-0 (ltk a b))))
+    ((send (cat a n2-2)) (recv (cat n2-1 (enc n2-2 (ltk a b))))
+      (send (enc n2-1 (ltk a b))))
+    ((send (cat a n2-3)) (recv (cat n2-2 (enc n2-3 (ltk a b))))
+      (send (enc n2-2 (ltk a b))))
+    ((recv (cat a n2-3)) (send (cat n1-0 (enc n2-3 (ltk a b))))))
+  (label 14)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 1))))
+
+(defskeleton mass2
+  (vars (n1 n2 n2-0 n2-1 n2-2 n2-3 text) (a b name))
+  (defstrand resp 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1) (n2 n2-0) (a a) (b b))
+  (defstrand init 3 (n1 n2-0) (n2 n2-1) (a a) (b b))
+  (defstrand init 3 (n1 n2-1) (n2 n2-2) (a a) (b b))
+  (defstrand init 3 (n1 n2-2) (n2 n2-3) (a a) (b b))
+  (defstrand init 3 (n1 n2-3) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (5 1)) ((1 2) (0 2)) ((2 2) (1 1)) ((3 2) (2 1))
+    ((4 2) (3 1)) ((5 2) (4 1)))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (operation encryption-test (displaced 6 0 resp 2) (enc n2-4 (ltk a b))
+    (5 1))
+  (traces
+    ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
+      (recv (enc n1 (ltk a b))))
+    ((send (cat a n2-0)) (recv (cat n1 (enc n2-0 (ltk a b))))
+      (send (enc n1 (ltk a b))))
+    ((send (cat a n2-1)) (recv (cat n2-0 (enc n2-1 (ltk a b))))
+      (send (enc n2-0 (ltk a b))))
+    ((send (cat a n2-2)) (recv (cat n2-1 (enc n2-2 (ltk a b))))
+      (send (enc n2-1 (ltk a b))))
+    ((send (cat a n2-3)) (recv (cat n2-2 (enc n2-3 (ltk a b))))
+      (send (enc n2-2 (ltk a b))))
+    ((send (cat a n2)) (recv (cat n2-3 (enc n2 (ltk a b))))
+      (send (enc n2-3 (ltk a b)))))
+  (label 16)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 1))))
+
+(defskeleton mass2
+  (vars (n1 n2 n2-0 n2-1 n2-2 n2-3 n2-4 n1-0 text) (a b name))
+  (defstrand resp 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1) (n2 n2-0) (a a) (b b))
+  (defstrand init 3 (n1 n2-0) (n2 n2-1) (a a) (b b))
+  (defstrand init 3 (n1 n2-1) (n2 n2-2) (a a) (b b))
+  (defstrand init 3 (n1 n2-2) (n2 n2-3) (a a) (b b))
+  (defstrand init 3 (n1 n2-3) (n2 n2-4) (a a) (b b))
+  (defstrand resp 2 (n1 n1-0) (n2 n2-4) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)) ((2 2) (1 1)) ((3 2) (2 1))
+    ((4 2) (3 1)) ((5 2) (4 1)) ((6 1) (5 1)))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (operation encryption-test (added-strand resp 2) (enc n2-4 (ltk a b))
+    (5 1))
+  (traces
+    ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
+      (recv (enc n1 (ltk a b))))
+    ((send (cat a n2-0)) (recv (cat n1 (enc n2-0 (ltk a b))))
+      (send (enc n1 (ltk a b))))
+    ((send (cat a n2-1)) (recv (cat n2-0 (enc n2-1 (ltk a b))))
+      (send (enc n2-0 (ltk a b))))
+    ((send (cat a n2-2)) (recv (cat n2-1 (enc n2-2 (ltk a b))))
+      (send (enc n2-1 (ltk a b))))
+    ((send (cat a n2-3)) (recv (cat n2-2 (enc n2-3 (ltk a b))))
+      (send (enc n2-2 (ltk a b))))
+    ((send (cat a n2-4)) (recv (cat n2-3 (enc n2-4 (ltk a b))))
+      (send (enc n2-3 (ltk a b))))
+    ((recv (cat a n2-4)) (send (cat n1-0 (enc n2-4 (ltk a b))))))
+  (label 17)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 1))))
+
+(defskeleton mass2
+  (vars (n1 n2 n2-0 n2-1 n2-2 n2-3 n2-4 text) (a b name))
+  (defstrand resp 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1) (n2 n2-0) (a a) (b b))
+  (defstrand init 3 (n1 n2-0) (n2 n2-1) (a a) (b b))
+  (defstrand init 3 (n1 n2-1) (n2 n2-2) (a a) (b b))
+  (defstrand init 3 (n1 n2-2) (n2 n2-3) (a a) (b b))
+  (defstrand init 3 (n1 n2-3) (n2 n2-4) (a a) (b b))
+  (defstrand init 3 (n1 n2-4) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (6 1)) ((1 2) (0 2)) ((2 2) (1 1)) ((3 2) (2 1))
+    ((4 2) (3 1)) ((5 2) (4 1)) ((6 2) (5 1)))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (operation encryption-test (displaced 7 0 resp 2) (enc n2-5 (ltk a b))
+    (6 1))
+  (traces
+    ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
+      (recv (enc n1 (ltk a b))))
+    ((send (cat a n2-0)) (recv (cat n1 (enc n2-0 (ltk a b))))
+      (send (enc n1 (ltk a b))))
+    ((send (cat a n2-1)) (recv (cat n2-0 (enc n2-1 (ltk a b))))
+      (send (enc n2-0 (ltk a b))))
+    ((send (cat a n2-2)) (recv (cat n2-1 (enc n2-2 (ltk a b))))
+      (send (enc n2-1 (ltk a b))))
+    ((send (cat a n2-3)) (recv (cat n2-2 (enc n2-3 (ltk a b))))
+      (send (enc n2-2 (ltk a b))))
+    ((send (cat a n2-4)) (recv (cat n2-3 (enc n2-4 (ltk a b))))
+      (send (enc n2-3 (ltk a b))))
+    ((send (cat a n2)) (recv (cat n2-4 (enc n2 (ltk a b))))
+      (send (enc n2-4 (ltk a b)))))
+  (label 19)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 1))))
+
+(defskeleton mass2
+  (vars (n1 n2 n2-0 n2-1 n2-2 n2-3 n2-4 n2-5 n1-0 text) (a b name))
+  (defstrand resp 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1) (n2 n2-0) (a a) (b b))
+  (defstrand init 3 (n1 n2-0) (n2 n2-1) (a a) (b b))
+  (defstrand init 3 (n1 n2-1) (n2 n2-2) (a a) (b b))
+  (defstrand init 3 (n1 n2-2) (n2 n2-3) (a a) (b b))
+  (defstrand init 3 (n1 n2-3) (n2 n2-4) (a a) (b b))
+  (defstrand init 3 (n1 n2-4) (n2 n2-5) (a a) (b b))
+  (defstrand resp 2 (n1 n1-0) (n2 n2-5) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)) ((2 2) (1 1)) ((3 2) (2 1))
+    ((4 2) (3 1)) ((5 2) (4 1)) ((6 2) (5 1)) ((7 1) (6 1)))
+  (non-orig (ltk a b))
+  (uniq-orig n1)
+  (operation encryption-test (added-strand resp 2) (enc n2-5 (ltk a b))
+    (6 1))
+  (traces
+    ((recv (cat a n2)) (send (cat n1 (enc n2 (ltk a b))))
+      (recv (enc n1 (ltk a b))))
+    ((send (cat a n2-0)) (recv (cat n1 (enc n2-0 (ltk a b))))
+      (send (enc n1 (ltk a b))))
+    ((send (cat a n2-1)) (recv (cat n2-0 (enc n2-1 (ltk a b))))
+      (send (enc n2-0 (ltk a b))))
+    ((send (cat a n2-2)) (recv (cat n2-1 (enc n2-2 (ltk a b))))
+      (send (enc n2-1 (ltk a b))))
+    ((send (cat a n2-3)) (recv (cat n2-2 (enc n2-3 (ltk a b))))
+      (send (enc n2-2 (ltk a b))))
+    ((send (cat a n2-4)) (recv (cat n2-3 (enc n2-4 (ltk a b))))
+      (send (enc n2-3 (ltk a b))))
+    ((send (cat a n2-5)) (recv (cat n2-4 (enc n2-5 (ltk a b))))
+      (send (enc n2-4 (ltk a b))))
+    ((recv (cat a n2-5)) (send (cat n1-0 (enc n2-5 (ltk a b))))))
+  (label 20)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 1))))
+
+(comment "Strand bound exceeded--aborting run")
diff --git a/tst/mass_shapes.tst b/tst/mass_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/mass_shapes.tst
@@ -0,0 +1,419 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/mass.lsp")
+
+(defprotocol mass basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
+      (recv (enc n2 (ltk a b)))))
+  (defrole resp
+    (vars (a b name) (n1 n2 text))
+    (trace (recv a) (send n1) (recv (enc n1 (ltk a b))) (recv n2)
+      (send (enc n2 (ltk a b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton mass
+  (vars (n2 n1 text) (a b name))
+  (defstrand init 5 (n1 n1) (n2 n2) (a a) (b b))
+  (non-orig (ltk a b))
+  (uniq-orig n2)
+  (traces
+    ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
+      (recv (enc n2 (ltk a b)))))
+  (label 0)
+  (unrealized (0 4))
+  (origs (n2 (0 3)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton mass
+  (vars (n2 n1 text) (a b name))
+  (defstrand init 5 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n2) (a a) (b b))
+  (precedes ((0 3) (1 1)) ((1 2) (0 4)))
+  (non-orig (ltk a b))
+  (uniq-orig n2)
+  (operation encryption-test (added-strand init 3) (enc n2 (ltk a b))
+    (0 4))
+  (traces
+    ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
+      (recv (enc n2 (ltk a b))))
+    ((send a) (recv n2) (send (enc n2 (ltk a b)))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 3))))
+
+(defskeleton mass
+  (vars (n2 n1 text) (a b name))
+  (defstrand init 5 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1) (n2 n2) (a a) (b b))
+  (precedes ((0 2) (1 2)) ((0 3) (1 3)) ((1 4) (0 4)))
+  (non-orig (ltk a b))
+  (uniq-orig n2)
+  (operation encryption-test (displaced 2 0 init 3) (enc n1-0 (ltk a b))
+    (1 2))
+  (traces
+    ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
+      (recv (enc n2 (ltk a b))))
+    ((recv a) (send n1) (recv (enc n1 (ltk a b))) (recv n2)
+      (send (enc n2 (ltk a b)))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 3))))
+
+(defskeleton mass
+  (vars (n2 n1 n1-0 text) (a b name))
+  (defstrand init 5 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-0) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1-0) (a a) (b b))
+  (precedes ((0 3) (1 3)) ((1 4) (0 4)) ((2 2) (1 2)))
+  (non-orig (ltk a b))
+  (uniq-orig n2)
+  (operation encryption-test (added-strand init 3) (enc n1-0 (ltk a b))
+    (1 2))
+  (traces
+    ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
+      (recv (enc n2 (ltk a b))))
+    ((recv a) (send n1-0) (recv (enc n1-0 (ltk a b))) (recv n2)
+      (send (enc n2 (ltk a b))))
+    ((send a) (recv n1-0) (send (enc n1-0 (ltk a b)))))
+  (label 4)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 3))))
+
+(defskeleton mass
+  (vars (n2 n1 n1-0 text) (a b name))
+  (defstrand init 5 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-0) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1) (n2 n1-0) (a a) (b b))
+  (precedes ((0 2) (2 2)) ((0 3) (1 3)) ((1 4) (0 4)) ((2 4) (1 2)))
+  (non-orig (ltk a b))
+  (uniq-orig n2)
+  (operation encryption-test (displaced 3 0 init 3) (enc n1-1 (ltk a b))
+    (2 2))
+  (traces
+    ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
+      (recv (enc n2 (ltk a b))))
+    ((recv a) (send n1-0) (recv (enc n1-0 (ltk a b))) (recv n2)
+      (send (enc n2 (ltk a b))))
+    ((recv a) (send n1) (recv (enc n1 (ltk a b))) (recv n1-0)
+      (send (enc n1-0 (ltk a b)))))
+  (label 6)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 3))))
+
+(defskeleton mass
+  (vars (n2 n1 n1-0 n1-1 text) (a b name))
+  (defstrand init 5 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-0) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-1) (n2 n1-0) (a a) (b b))
+  (defstrand init 3 (n1 n1-1) (a a) (b b))
+  (precedes ((0 3) (1 3)) ((1 4) (0 4)) ((2 4) (1 2)) ((3 2) (2 2)))
+  (non-orig (ltk a b))
+  (uniq-orig n2)
+  (operation encryption-test (added-strand init 3) (enc n1-1 (ltk a b))
+    (2 2))
+  (traces
+    ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
+      (recv (enc n2 (ltk a b))))
+    ((recv a) (send n1-0) (recv (enc n1-0 (ltk a b))) (recv n2)
+      (send (enc n2 (ltk a b))))
+    ((recv a) (send n1-1) (recv (enc n1-1 (ltk a b))) (recv n1-0)
+      (send (enc n1-0 (ltk a b))))
+    ((send a) (recv n1-1) (send (enc n1-1 (ltk a b)))))
+  (label 7)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 3))))
+
+(defskeleton mass
+  (vars (n2 n1 n1-0 n1-1 text) (a b name))
+  (defstrand init 5 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-0) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-1) (n2 n1-0) (a a) (b b))
+  (defstrand resp 5 (n1 n1) (n2 n1-1) (a a) (b b))
+  (precedes ((0 2) (3 2)) ((0 3) (1 3)) ((1 4) (0 4)) ((2 4) (1 2))
+    ((3 4) (2 2)))
+  (non-orig (ltk a b))
+  (uniq-orig n2)
+  (operation encryption-test (displaced 4 0 init 3) (enc n1-2 (ltk a b))
+    (3 2))
+  (traces
+    ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
+      (recv (enc n2 (ltk a b))))
+    ((recv a) (send n1-0) (recv (enc n1-0 (ltk a b))) (recv n2)
+      (send (enc n2 (ltk a b))))
+    ((recv a) (send n1-1) (recv (enc n1-1 (ltk a b))) (recv n1-0)
+      (send (enc n1-0 (ltk a b))))
+    ((recv a) (send n1) (recv (enc n1 (ltk a b))) (recv n1-1)
+      (send (enc n1-1 (ltk a b)))))
+  (label 9)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 3))))
+
+(defskeleton mass
+  (vars (n2 n1 n1-0 n1-1 n1-2 text) (a b name))
+  (defstrand init 5 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-0) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-1) (n2 n1-0) (a a) (b b))
+  (defstrand resp 5 (n1 n1-2) (n2 n1-1) (a a) (b b))
+  (defstrand init 3 (n1 n1-2) (a a) (b b))
+  (precedes ((0 3) (1 3)) ((1 4) (0 4)) ((2 4) (1 2)) ((3 4) (2 2))
+    ((4 2) (3 2)))
+  (non-orig (ltk a b))
+  (uniq-orig n2)
+  (operation encryption-test (added-strand init 3) (enc n1-2 (ltk a b))
+    (3 2))
+  (traces
+    ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
+      (recv (enc n2 (ltk a b))))
+    ((recv a) (send n1-0) (recv (enc n1-0 (ltk a b))) (recv n2)
+      (send (enc n2 (ltk a b))))
+    ((recv a) (send n1-1) (recv (enc n1-1 (ltk a b))) (recv n1-0)
+      (send (enc n1-0 (ltk a b))))
+    ((recv a) (send n1-2) (recv (enc n1-2 (ltk a b))) (recv n1-1)
+      (send (enc n1-1 (ltk a b))))
+    ((send a) (recv n1-2) (send (enc n1-2 (ltk a b)))))
+  (label 10)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 3))))
+
+(defskeleton mass
+  (vars (n2 n1 n1-0 n1-1 n1-2 text) (a b name))
+  (defstrand init 5 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-0) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-1) (n2 n1-0) (a a) (b b))
+  (defstrand resp 5 (n1 n1-2) (n2 n1-1) (a a) (b b))
+  (defstrand resp 5 (n1 n1) (n2 n1-2) (a a) (b b))
+  (precedes ((0 2) (4 2)) ((0 3) (1 3)) ((1 4) (0 4)) ((2 4) (1 2))
+    ((3 4) (2 2)) ((4 4) (3 2)))
+  (non-orig (ltk a b))
+  (uniq-orig n2)
+  (operation encryption-test (displaced 5 0 init 3) (enc n1-3 (ltk a b))
+    (4 2))
+  (traces
+    ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
+      (recv (enc n2 (ltk a b))))
+    ((recv a) (send n1-0) (recv (enc n1-0 (ltk a b))) (recv n2)
+      (send (enc n2 (ltk a b))))
+    ((recv a) (send n1-1) (recv (enc n1-1 (ltk a b))) (recv n1-0)
+      (send (enc n1-0 (ltk a b))))
+    ((recv a) (send n1-2) (recv (enc n1-2 (ltk a b))) (recv n1-1)
+      (send (enc n1-1 (ltk a b))))
+    ((recv a) (send n1) (recv (enc n1 (ltk a b))) (recv n1-2)
+      (send (enc n1-2 (ltk a b)))))
+  (label 12)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 3))))
+
+(defskeleton mass
+  (vars (n2 n1 n1-0 n1-1 n1-2 n1-3 text) (a b name))
+  (defstrand init 5 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-0) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-1) (n2 n1-0) (a a) (b b))
+  (defstrand resp 5 (n1 n1-2) (n2 n1-1) (a a) (b b))
+  (defstrand resp 5 (n1 n1-3) (n2 n1-2) (a a) (b b))
+  (defstrand init 3 (n1 n1-3) (a a) (b b))
+  (precedes ((0 3) (1 3)) ((1 4) (0 4)) ((2 4) (1 2)) ((3 4) (2 2))
+    ((4 4) (3 2)) ((5 2) (4 2)))
+  (non-orig (ltk a b))
+  (uniq-orig n2)
+  (operation encryption-test (added-strand init 3) (enc n1-3 (ltk a b))
+    (4 2))
+  (traces
+    ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
+      (recv (enc n2 (ltk a b))))
+    ((recv a) (send n1-0) (recv (enc n1-0 (ltk a b))) (recv n2)
+      (send (enc n2 (ltk a b))))
+    ((recv a) (send n1-1) (recv (enc n1-1 (ltk a b))) (recv n1-0)
+      (send (enc n1-0 (ltk a b))))
+    ((recv a) (send n1-2) (recv (enc n1-2 (ltk a b))) (recv n1-1)
+      (send (enc n1-1 (ltk a b))))
+    ((recv a) (send n1-3) (recv (enc n1-3 (ltk a b))) (recv n1-2)
+      (send (enc n1-2 (ltk a b))))
+    ((send a) (recv n1-3) (send (enc n1-3 (ltk a b)))))
+  (label 13)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 3))))
+
+(defskeleton mass
+  (vars (n2 n1 n1-0 n1-1 n1-2 n1-3 text) (a b name))
+  (defstrand init 5 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-0) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-1) (n2 n1-0) (a a) (b b))
+  (defstrand resp 5 (n1 n1-2) (n2 n1-1) (a a) (b b))
+  (defstrand resp 5 (n1 n1-3) (n2 n1-2) (a a) (b b))
+  (defstrand resp 5 (n1 n1) (n2 n1-3) (a a) (b b))
+  (precedes ((0 2) (5 2)) ((0 3) (1 3)) ((1 4) (0 4)) ((2 4) (1 2))
+    ((3 4) (2 2)) ((4 4) (3 2)) ((5 4) (4 2)))
+  (non-orig (ltk a b))
+  (uniq-orig n2)
+  (operation encryption-test (displaced 6 0 init 3) (enc n1-4 (ltk a b))
+    (5 2))
+  (traces
+    ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
+      (recv (enc n2 (ltk a b))))
+    ((recv a) (send n1-0) (recv (enc n1-0 (ltk a b))) (recv n2)
+      (send (enc n2 (ltk a b))))
+    ((recv a) (send n1-1) (recv (enc n1-1 (ltk a b))) (recv n1-0)
+      (send (enc n1-0 (ltk a b))))
+    ((recv a) (send n1-2) (recv (enc n1-2 (ltk a b))) (recv n1-1)
+      (send (enc n1-1 (ltk a b))))
+    ((recv a) (send n1-3) (recv (enc n1-3 (ltk a b))) (recv n1-2)
+      (send (enc n1-2 (ltk a b))))
+    ((recv a) (send n1) (recv (enc n1 (ltk a b))) (recv n1-3)
+      (send (enc n1-3 (ltk a b)))))
+  (label 15)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 3))))
+
+(defskeleton mass
+  (vars (n2 n1 n1-0 n1-1 n1-2 n1-3 n1-4 text) (a b name))
+  (defstrand init 5 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-0) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-1) (n2 n1-0) (a a) (b b))
+  (defstrand resp 5 (n1 n1-2) (n2 n1-1) (a a) (b b))
+  (defstrand resp 5 (n1 n1-3) (n2 n1-2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-4) (n2 n1-3) (a a) (b b))
+  (defstrand init 3 (n1 n1-4) (a a) (b b))
+  (precedes ((0 3) (1 3)) ((1 4) (0 4)) ((2 4) (1 2)) ((3 4) (2 2))
+    ((4 4) (3 2)) ((5 4) (4 2)) ((6 2) (5 2)))
+  (non-orig (ltk a b))
+  (uniq-orig n2)
+  (operation encryption-test (added-strand init 3) (enc n1-4 (ltk a b))
+    (5 2))
+  (traces
+    ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
+      (recv (enc n2 (ltk a b))))
+    ((recv a) (send n1-0) (recv (enc n1-0 (ltk a b))) (recv n2)
+      (send (enc n2 (ltk a b))))
+    ((recv a) (send n1-1) (recv (enc n1-1 (ltk a b))) (recv n1-0)
+      (send (enc n1-0 (ltk a b))))
+    ((recv a) (send n1-2) (recv (enc n1-2 (ltk a b))) (recv n1-1)
+      (send (enc n1-1 (ltk a b))))
+    ((recv a) (send n1-3) (recv (enc n1-3 (ltk a b))) (recv n1-2)
+      (send (enc n1-2 (ltk a b))))
+    ((recv a) (send n1-4) (recv (enc n1-4 (ltk a b))) (recv n1-3)
+      (send (enc n1-3 (ltk a b))))
+    ((send a) (recv n1-4) (send (enc n1-4 (ltk a b)))))
+  (label 16)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 3))))
+
+(defskeleton mass
+  (vars (n2 n1 n1-0 n1-1 n1-2 n1-3 n1-4 text) (a b name))
+  (defstrand init 5 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-0) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-1) (n2 n1-0) (a a) (b b))
+  (defstrand resp 5 (n1 n1-2) (n2 n1-1) (a a) (b b))
+  (defstrand resp 5 (n1 n1-3) (n2 n1-2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-4) (n2 n1-3) (a a) (b b))
+  (defstrand resp 5 (n1 n1) (n2 n1-4) (a a) (b b))
+  (precedes ((0 2) (6 2)) ((0 3) (1 3)) ((1 4) (0 4)) ((2 4) (1 2))
+    ((3 4) (2 2)) ((4 4) (3 2)) ((5 4) (4 2)) ((6 4) (5 2)))
+  (non-orig (ltk a b))
+  (uniq-orig n2)
+  (operation encryption-test (displaced 7 0 init 3) (enc n1-5 (ltk a b))
+    (6 2))
+  (traces
+    ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
+      (recv (enc n2 (ltk a b))))
+    ((recv a) (send n1-0) (recv (enc n1-0 (ltk a b))) (recv n2)
+      (send (enc n2 (ltk a b))))
+    ((recv a) (send n1-1) (recv (enc n1-1 (ltk a b))) (recv n1-0)
+      (send (enc n1-0 (ltk a b))))
+    ((recv a) (send n1-2) (recv (enc n1-2 (ltk a b))) (recv n1-1)
+      (send (enc n1-1 (ltk a b))))
+    ((recv a) (send n1-3) (recv (enc n1-3 (ltk a b))) (recv n1-2)
+      (send (enc n1-2 (ltk a b))))
+    ((recv a) (send n1-4) (recv (enc n1-4 (ltk a b))) (recv n1-3)
+      (send (enc n1-3 (ltk a b))))
+    ((recv a) (send n1) (recv (enc n1 (ltk a b))) (recv n1-4)
+      (send (enc n1-4 (ltk a b)))))
+  (label 18)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 3))))
+
+(defskeleton mass
+  (vars (n2 n1 n1-0 n1-1 n1-2 n1-3 n1-4 n1-5 text) (a b name))
+  (defstrand init 5 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-0) (n2 n2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-1) (n2 n1-0) (a a) (b b))
+  (defstrand resp 5 (n1 n1-2) (n2 n1-1) (a a) (b b))
+  (defstrand resp 5 (n1 n1-3) (n2 n1-2) (a a) (b b))
+  (defstrand resp 5 (n1 n1-4) (n2 n1-3) (a a) (b b))
+  (defstrand resp 5 (n1 n1-5) (n2 n1-4) (a a) (b b))
+  (defstrand init 3 (n1 n1-5) (a a) (b b))
+  (precedes ((0 3) (1 3)) ((1 4) (0 4)) ((2 4) (1 2)) ((3 4) (2 2))
+    ((4 4) (3 2)) ((5 4) (4 2)) ((6 4) (5 2)) ((7 2) (6 2)))
+  (non-orig (ltk a b))
+  (uniq-orig n2)
+  (operation encryption-test (added-strand init 3) (enc n1-5 (ltk a b))
+    (6 2))
+  (traces
+    ((send a) (recv n1) (send (enc n1 (ltk a b))) (send n2)
+      (recv (enc n2 (ltk a b))))
+    ((recv a) (send n1-0) (recv (enc n1-0 (ltk a b))) (recv n2)
+      (send (enc n2 (ltk a b))))
+    ((recv a) (send n1-1) (recv (enc n1-1 (ltk a b))) (recv n1-0)
+      (send (enc n1-0 (ltk a b))))
+    ((recv a) (send n1-2) (recv (enc n1-2 (ltk a b))) (recv n1-1)
+      (send (enc n1-1 (ltk a b))))
+    ((recv a) (send n1-3) (recv (enc n1-3 (ltk a b))) (recv n1-2)
+      (send (enc n1-2 (ltk a b))))
+    ((recv a) (send n1-4) (recv (enc n1-4 (ltk a b))) (recv n1-3)
+      (send (enc n1-3 (ltk a b))))
+    ((recv a) (send n1-5) (recv (enc n1-5 (ltk a b))) (recv n1-4)
+      (send (enc n1-4 (ltk a b))))
+    ((send a) (recv n1-5) (send (enc n1-5 (ltk a b)))))
+  (label 19)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 3))))
+
+(comment "Strand bound exceeded--aborting run")
diff --git a/tst/missing_contraction.tst b/tst/missing_contraction.tst
--- a/tst/missing_contraction.tst
+++ b/tst/missing_contraction.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/missing_contraction.scm")
 
 (defprotocol missing-contraction basic
@@ -37,6 +37,7 @@
   (non-orig (privk a))
   (uniq-orig m)
   (operation nonce-test (contracted (c a)) m (1 0) (enc a m (pubk a)))
+  (strand-map 0 1)
   (traces ((send (enc a m (pubk a))) (send (enc a n (pubk b))))
     ((recv (enc a m (pubk a)))))
   (label 1)
@@ -55,6 +56,7 @@
   (uniq-orig n)
   (operation nonce-test (displaced 2 0 sender 2) m (1 0)
     (enc a m (pubk a)))
+  (strand-map 0 1)
   (traces ((send (enc a n (pubk a))) (send (enc a n (pubk b))))
     ((recv (enc a n (pubk c)))))
   (label 2)
@@ -117,6 +119,7 @@
   (non-orig (privk a))
   (uniq-orig m)
   (operation nonce-test (contracted (c a)) m (1 0) (enc a m (pubk a)))
+  (strand-map 0 1)
   (traces ((send (enc a m (pubk a))))
     ((recv (enc a m (pubk a))) (send (enc a m (pubk a)))))
   (label 5)
@@ -135,6 +138,7 @@
   (uniq-orig m)
   (operation nonce-test (displaced 0 2 sender 2) m-0 (1 0)
     (enc a-0 m-0 (pubk a-0)))
+  (strand-map 1 0)
   (traces ((recv (enc a m (pubk c))) (send (enc a m (pubk c))))
     ((send (enc a m (pubk a))) (send (enc a m (pubk b)))))
   (label 6)
@@ -182,6 +186,7 @@
   (non-orig (privk a) (privk b))
   (uniq-orig m)
   (operation nonce-test (contracted (c a)) m (1 0) (enc a m (pubk a)))
+  (strand-map 0 1)
   (traces ((send (enc a m (pubk a))) (send (enc a n (pubk b))))
     ((recv (enc a m (pubk a)))))
   (label 8)
@@ -200,6 +205,7 @@
   (uniq-orig n)
   (operation nonce-test (displaced 2 0 sender 2) m (1 0)
     (enc a m (pubk a)))
+  (strand-map 0 1)
   (traces ((send (enc a n (pubk a))) (send (enc a n (pubk b))))
     ((recv (enc a n (pubk c)))))
   (label 9)
@@ -217,11 +223,14 @@
   (uniq-orig n)
   (operation nonce-test (contracted (c a)) n (1 0) (enc a n (pubk a))
     (enc a n (pubk b)))
+  (strand-map 0 1)
   (traces ((send (enc a n (pubk a))) (send (enc a n (pubk b))))
     ((recv (enc a n (pubk a)))))
   (label 10)
   (parent 9)
   (seen 8)
+  (seen-ops
+    (8 (operation generalization separated n-0) (strand-map 0 1)))
   (realized)
   (origs (n (0 0)))
   (comment "1 in cohort - 0 not yet seen"))
@@ -235,6 +244,7 @@
   (uniq-orig n)
   (operation nonce-test (contracted (c b)) n (1 0) (enc a n (pubk a))
     (enc a n (pubk b)))
+  (strand-map 0 1)
   (traces ((send (enc a n (pubk a))) (send (enc a n (pubk b))))
     ((recv (enc a n (pubk b)))))
   (label 11)
diff --git a/tst/missing_contraction_shapes.tst b/tst/missing_contraction_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/missing_contraction_shapes.tst
@@ -0,0 +1,201 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/missing_contraction.scm")
+
+(defprotocol missing-contraction basic
+  (defrole sender
+    (vars (m n text) (a b name))
+    (trace (send (enc a m (pubk a))) (send (enc a n (pubk b)))))
+  (defrole receiver
+    (vars (m text) (a b name))
+    (trace (recv (enc a m (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton missing-contraction
+  (vars (m n text) (a c b name))
+  (defstrand sender 2 (m m) (n n) (a a) (b b))
+  (defstrand receiver 1 (m m) (a a) (b c))
+  (precedes ((0 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig m)
+  (traces ((send (enc a m (pubk a))) (send (enc a n (pubk b))))
+    ((recv (enc a m (pubk c)))))
+  (label 0)
+  (unrealized (1 0))
+  (origs (m (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton missing-contraction
+  (vars (m n text) (a b name))
+  (defstrand sender 2 (m m) (n n) (a a) (b b))
+  (defstrand receiver 1 (m m) (a a) (b a))
+  (precedes ((0 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig m)
+  (operation nonce-test (contracted (c a)) m (1 0) (enc a m (pubk a)))
+  (traces ((send (enc a m (pubk a))) (send (enc a n (pubk b))))
+    ((recv (enc a m (pubk a)))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((m m) (a a) (c a) (n n) (b b))))
+  (origs (m (0 0))))
+
+(defskeleton missing-contraction
+  (vars (n text) (a c b name))
+  (defstrand sender 2 (m n) (n n) (a a) (b b))
+  (defstrand receiver 1 (m n) (a a) (b c))
+  (precedes ((0 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (operation nonce-test (displaced 2 0 sender 2) m (1 0)
+    (enc a m (pubk a)))
+  (traces ((send (enc a n (pubk a))) (send (enc a n (pubk b))))
+    ((recv (enc a n (pubk c)))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((m n) (a a) (c c) (n n) (b b))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol missing-contraction basic
+  (defrole sender
+    (vars (m n text) (a b name))
+    (trace (send (enc a m (pubk a))) (send (enc a n (pubk b)))))
+  (defrole receiver
+    (vars (m text) (a b name))
+    (trace (recv (enc a m (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton missing-contraction
+  (vars (m text) (a c name))
+  (defstrand sender 1 (m m) (a a))
+  (deflistener (enc a m (pubk c)))
+  (non-orig (privk a))
+  (uniq-orig m)
+  (traces ((send (enc a m (pubk a))))
+    ((recv (enc a m (pubk c))) (send (enc a m (pubk c)))))
+  (label 3)
+  (unrealized (1 0))
+  (preskeleton)
+  (origs (m (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton missing-contraction
+  (vars (m text) (a name))
+  (defstrand sender 1 (m m) (a a))
+  (deflistener (enc a m (pubk a)))
+  (precedes ((0 0) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig m)
+  (operation nonce-test (contracted (c a)) m (1 0) (enc a m (pubk a)))
+  (traces ((send (enc a m (pubk a))))
+    ((recv (enc a m (pubk a))) (send (enc a m (pubk a)))))
+  (label 5)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0 1) ((m m) (a a) (c a))))
+  (origs (m (0 0))))
+
+(defskeleton missing-contraction
+  (vars (m text) (c a b name))
+  (deflistener (enc a m (pubk c)))
+  (defstrand sender 2 (m m) (n m) (a a) (b b))
+  (precedes ((1 1) (0 0)))
+  (non-orig (privk a))
+  (uniq-orig m)
+  (operation nonce-test (displaced 0 2 sender 2) m-0 (1 0)
+    (enc a-0 m-0 (pubk a-0)))
+  (traces ((recv (enc a m (pubk c))) (send (enc a m (pubk c))))
+    ((send (enc a m (pubk a))) (send (enc a m (pubk b)))))
+  (label 6)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((1 0) ((m m) (a a) (c c))))
+  (origs (m (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol missing-contraction basic
+  (defrole sender
+    (vars (m n text) (a b name))
+    (trace (send (enc a m (pubk a))) (send (enc a n (pubk b)))))
+  (defrole receiver
+    (vars (m text) (a b name))
+    (trace (recv (enc a m (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton missing-contraction
+  (vars (m n text) (a b c name))
+  (defstrand sender 2 (m m) (n n) (a a) (b b))
+  (defstrand receiver 1 (m m) (a a) (b c))
+  (precedes ((0 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig m)
+  (traces ((send (enc a m (pubk a))) (send (enc a n (pubk b))))
+    ((recv (enc a m (pubk c)))))
+  (label 7)
+  (unrealized (1 0))
+  (origs (m (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton missing-contraction
+  (vars (m n text) (a b name))
+  (defstrand sender 2 (m m) (n n) (a a) (b b))
+  (defstrand receiver 1 (m m) (a a) (b a))
+  (precedes ((0 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig m)
+  (operation nonce-test (contracted (c a)) m (1 0) (enc a m (pubk a)))
+  (traces ((send (enc a m (pubk a))) (send (enc a n (pubk b))))
+    ((recv (enc a m (pubk a)))))
+  (label 8)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((0 1) ((m m) (a a) (b b) (c a) (n n))))
+  (origs (m (0 0))))
+
+(defskeleton missing-contraction
+  (vars (n text) (a b name))
+  (defstrand sender 2 (m n) (n n) (a a) (b b))
+  (defstrand receiver 1 (m n) (a a) (b b))
+  (precedes ((0 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n)
+  (operation nonce-test (contracted (c b)) n (1 0) (enc a n (pubk a))
+    (enc a n (pubk b)))
+  (traces ((send (enc a n (pubk a))) (send (enc a n (pubk b))))
+    ((recv (enc a n (pubk b)))))
+  (label 11)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((0 1) ((m n) (a a) (b b) (c b) (n n))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/mksas b/tst/mksas
deleted file mode 100644
--- a/tst/mksas
+++ /dev/null
@@ -1,46 +0,0 @@
-# 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,%_sas.text,$(wildcard *.scm))
-CPSA	= ../dist/build/cpsa4/cpsa4$(EXE)
-DIFF	= ../dist/build/cpsa4diff/cpsa4diff$(EXE)
-SHAPES	= ../dist/build/cpsa4shapes/cpsa4shapes$(EXE)
-SAS	= ../dist/build/cpsa4sas/cpsa4sas$(EXE)
-GRAPH	= ../dist/build/cpsa4graph/cpsa4graph$(EXE)
-CPSAFLAGS = +RTS -M512m -RTS
-
-# The expected answers are in files with the .tst extension.
-
-# Analyze protocols for shapes expecting success
-%.txt:	%.scm $(CPSA)
-	$(CPSA) $(CPSAFLAGS) -o $@ $*.scm
-	-$(DIFF) $(DIFFFLAGS) $*.tst $*.txt
-
-# Analyze protocols for shapes expecting failure
-%.txt:	%.lsp $(CPSA)
-	-$(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 $@ $<
-
-# Visualize output
-%.svg:		%.txt
-	$(GRAPH) -c -o $@ $<
-
-# Visualize output using the expanded format
-%.xhtml:	%.txt
-	$(GRAPH) $(GRAPHFLAGS) -o $@ $<
-
-.PRECIOUS:	%.txt %_shapes.txt
-
-all:	$(TSTS)
-
-clean:
-	-rm *.text *.txt
diff --git a/tst/neq_test.tst b/tst/neq_test.tst
--- a/tst/neq_test.tst
+++ b/tst/neq_test.tst
@@ -2,7 +2,7 @@
   (comment "First skeleton should have a shape,"
     "second should be dead."))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/neq_test.scm")
 
 (defprotocol neq-test basic
@@ -36,6 +36,7 @@
   (non-orig k)
   (uniq-orig n1)
   (operation nonce-test (displaced 1 0 init 1) n2 (0 1) (enc n1 n2 k))
+  (strand-map 0)
   (traces ((send (cat n1 (enc n1 n1 k))) (recv n1)))
   (label 1)
   (parent 0)
diff --git a/tst/neq_test_shapes.tst b/tst/neq_test_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/neq_test_shapes.tst
@@ -0,0 +1,80 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Inequality constraint using facts and rules"
+  (comment "First skeleton should have a shape,"
+    "second should be dead."))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/neq_test.scm")
+
+(defprotocol neq-test basic
+  (defrole init
+    (vars (n1 n2 text) (k skey))
+    (trace (send (cat n1 (enc n1 n2 k))) (recv n2))
+    (non-orig k)
+    (uniq-orig n1 n2))
+  (defrule neq (forall ((a mesg)) (implies (fact neq a a) (false))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton neq-test
+  (vars (k skey) (n1 n2 text))
+  (defstrand init 2 (k k) (n1 n1) (n2 n2))
+  (non-orig k)
+  (uniq-orig n1 n2)
+  (traces ((send (cat n1 (enc n1 n2 k))) (recv n2)))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n2 (0 0)) (n1 (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton neq-test
+  (vars (k skey) (n1 text))
+  (defstrand init 2 (k k) (n1 n1) (n2 n1))
+  (non-orig k)
+  (uniq-orig n1)
+  (operation nonce-test (displaced 1 0 init 1) n2 (0 1) (enc n1 n2 k))
+  (traces ((send (cat n1 (enc n1 n1 k))) (recv n1)))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((n1 n1) (n2 n1) (k k))))
+  (origs (n1 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol neq-test basic
+  (defrole init
+    (vars (n1 n2 text) (k skey))
+    (trace (send (cat n1 (enc n1 n2 k))) (recv n2))
+    (non-orig k)
+    (uniq-orig n1 n2))
+  (defrule neq (forall ((a mesg)) (implies (fact neq a a) (false))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton neq-test
+  (vars (k skey) (n1 n2 text))
+  (defstrand init 2 (k k) (n1 n1) (n2 n2))
+  (non-orig k)
+  (uniq-orig n1 n2)
+  (facts (neq n1 n2))
+  (traces ((send (cat n1 (enc n1 n2 k))) (recv n2)))
+  (label 2)
+  (unrealized (0 1))
+  (dead)
+  (origs (n2 (0 0)) (n1 (0 0)))
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
diff --git a/tst/neuman-stubblebine-alt.lisp b/tst/neuman-stubblebine-alt.lisp
deleted file mode 100644
--- a/tst/neuman-stubblebine-alt.lisp
+++ /dev/null
@@ -1,36 +0,0 @@
-;;; derived from the protocol description in the CPSA tst directory
-
-(defprotocol neuman-stubblebine basic
-  (defrole init
-    (vars (a name) (b name) (ks name) (ra text) (rb text) (ltk-a-ks skey) (k skey) (tb text))
-    (trace (send (cat a ra))
-	   (recv (cat (enc (cat b ra k tb) ltk-a-ks) (enc (cat a k tb) (ltk b ks)) rb))
-	   (send (cat (enc (cat a k tb) (ltk b ks)) (enc rb k)))))
-  (defrole resp
-    (vars (a name) (b name) (ks name) (ra text) (rb text) (k skey) (tb text))
-    (trace (recv (cat a ra))
-	   (send (cat b rb (enc (cat a ra tb) (ltk b ks))))
-	   (recv (cat (enc (cat a k tb) (ltk b ks)) (enc rb k)))))
-  (defrole keyserver
-    (vars (a name) (b name) (ks name) (ra text) (rb text) (k skey) (tb text))
-    (trace (recv (cat b rb (enc (cat a ra tb) (ltk b ks))))
-	   (send (cat (enc (cat b ra k tb) (ltk a ks)) (enc (cat a k tb) (ltk b ks)) rb)))
-    (uniq-orig k)))
-
-(defskeleton neuman-stubblebine
-  (vars (a name) (b name) (ks name) (ra text) (rb text))
-  (defstrand init 3 (a a) (b b) (ks ks) (ra ra) (rb rb))
-  (uniq-orig ra rb)
-  (non-orig (ltk a ks) (ltk b ks)))
-
-(defskeleton neuman-stubblebine
-  (vars (a name) (b name) (ks name) (ra text) (rb text))
-  (defstrand resp 3 (a a) (b b) (ks ks) (ra ra) (rb rb))
-  (uniq-orig ra rb)
-  (non-orig (ltk a ks) (ltk b ks)))
-
-(defskeleton neuman-stubblebine
-  (vars (a name) (b name) (ks name) (ra text) (rb text))
-  (defstrand keyserver 2 (a a) (b b) (ks ks) (ra ra) (rb rb))
-  (uniq-orig ra rb)
-  (non-orig (ltk a ks) (ltk b ks)))
diff --git a/tst/neuman-stubblebine-reauth-tagged.lsp b/tst/neuman-stubblebine-reauth-tagged.lsp
new file mode 100644
--- /dev/null
+++ b/tst/neuman-stubblebine-reauth-tagged.lsp
@@ -0,0 +1,45 @@
+(herald neuman-stubblebine-reauth (bound 8))
+
+(defprotocol neuman-stubblebine-reauth basic
+  (defrole init (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace
+     (send (cat a ra))
+     (recv (cat (enc b ra k tb (ltk a ks))
+		(enc a k tb (ltk b ks)) rb))
+     (send (cat (enc a k tb (ltk b ks))
+		(enc "one" rb k)))))
+  (defrole resp (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace
+     (recv (cat a ra))
+     (send (cat b rb (enc a ra tb (ltk b ks))))
+     (recv (cat (enc a k tb (ltk b ks))
+		(enc "one" rb k)))))
+  (defrole init-reauth
+    (vars (a b ks name) (ra-prime rb-prime text) (k skey) (tb text))
+    (trace
+     (recv (enc a k tb (ltk b ks)))
+     (send (cat (enc a k tb (ltk b ks)) ra-prime))
+     (recv (cat rb-prime (enc "two" ra-prime k)))
+     (send (enc "three" rb-prime k))))
+  (defrole resp-reauth
+    (vars (a b ks name) (ra-prime rb-prime text) (k skey) (tb text))
+    (trace
+     (recv (cat (enc a k tb (ltk b ks)) ra-prime))
+     (send (cat rb-prime (enc "two" ra-prime k)))
+     (recv (enc "three" rb-prime k))))
+  (defrole keyserver
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace
+     (recv (cat b rb (enc a ra tb (ltk b ks))))
+     (send (cat (enc b ra k tb (ltk a ks))
+		(enc a k tb (ltk b ks)) rb)))
+    (uniq-orig k)))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (ra rb-0 tb rb text) (a b ks name) (k skey)
+	(ra-prime rb-prime text))
+  (defstrand resp 3 (a a) (b b) (ks ks) (ra ra) (rb rb) (k k) (tb tb))
+  (defstrand resp-reauth 3 (a a) (b b) (ks ks) (k k) (ra-prime ra-prime)
+    (rb-prime rb-prime))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra rb k ra-prime rb-prime))
diff --git a/tst/neuman-stubblebine-reauth-tagged.tst b/tst/neuman-stubblebine-reauth-tagged.tst
--- a/tst/neuman-stubblebine-reauth-tagged.tst
+++ b/tst/neuman-stubblebine-reauth-tagged.tst
@@ -1,7 +1,8 @@
 (herald neuman-stubblebine-reauth (bound 8))
 
-(comment "CPSA 4.3.1")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/neuman-stubblebine-reauth-tagged.lsp")
+(comment "Strand count bounded at 8")
 
 (defprotocol neuman-stubblebine-reauth basic
   (defrole init
@@ -68,6 +69,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand keyserver 2)
     (enc a k tb-0 (ltk b ks)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -95,6 +97,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 3 0 resp 2)
     (enc a ra-0 tb-0 (ltk b ks)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -123,6 +126,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp 2)
     (enc a ra-0 tb-0 (ltk b ks)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -156,6 +160,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc "three" rb-prime k) (1 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -188,6 +193,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc "three" rb-prime k)
     (1 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -222,6 +228,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc "three" rb-prime k) (1 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -259,6 +266,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc "three" rb-prime k)
     (1 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -294,6 +302,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (3 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -331,6 +340,7 @@
   (operation nonce-test
     (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-1 tb-0)) k (4 0)
     (enc a k tb-0 (ltk b ks)) (enc b ra-0 k tb-0 (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -367,6 +377,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 4 1 resp-reauth 2)
     (enc "two" ra-prime-0 k) (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -404,6 +415,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc "two" ra-prime-0 k) (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -441,6 +453,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc "two" ra-prime-0 k)
     (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -477,6 +490,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 5 1 resp-reauth 2)
     (enc "two" ra-prime-0 k) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -518,6 +532,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc "two" ra-prime-0 k) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -560,6 +575,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc "two" ra-prime-0 k)
     (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -600,6 +616,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc "one" rb k)
     (0 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -638,6 +655,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc "one" rb k) (0 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -676,6 +694,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (4 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -713,6 +732,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 5 2 keyserver 2)
     (enc a k tb-0 (ltk b ks)) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -754,6 +774,7 @@
   (operation nonce-test
     (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-1 tb-0)) k (5 0)
     (enc a k tb-0 (ltk b ks)) (enc b ra-0 k tb-0 (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -794,6 +815,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (4 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -838,6 +860,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc "one" rb k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -883,6 +906,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc "one" rb k) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -925,6 +949,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc "one" rb k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -967,6 +992,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc "one" rb k) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -1008,6 +1034,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 2 keyserver 2)
     (enc a k tb-0 (ltk b ks)) (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -1046,6 +1073,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 5 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -1094,6 +1122,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -1136,6 +1165,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 1) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -1183,6 +1213,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc "one" rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -1231,6 +1262,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc "one" rb k) (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -1276,6 +1308,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -1322,6 +1355,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 2 keyserver 2)
     (enc b ra-1 k tb (ltk a ks)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -1373,6 +1407,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 1) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
@@ -1421,6 +1456,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc b ra-1 k tb (ltk a ks)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
diff --git a/tst/neuman-stubblebine-reauth-tagged_shapes.tst b/tst/neuman-stubblebine-reauth-tagged_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/neuman-stubblebine-reauth-tagged_shapes.tst
@@ -0,0 +1,254 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald neuman-stubblebine-reauth (bound 8))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/neuman-stubblebine-reauth-tagged.lsp")
+
+(defprotocol neuman-stubblebine-reauth basic
+  (defrole init
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc "one" rb k)))))
+  (defrole resp
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k)))))
+  (defrole init-reauth
+    (vars (a b ks name) (ra-prime rb-prime text) (k skey) (tb text))
+    (trace (recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb-prime (enc "two" ra-prime k)))
+      (send (enc "three" rb-prime k))))
+  (defrole resp-reauth
+    (vars (a b ks name) (ra-prime rb-prime text) (k skey) (tb text))
+    (trace (recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc "two" ra-prime k)))
+      (recv (enc "three" rb-prime k))))
+  (defrole keyserver
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb rb ra-prime rb-prime tb-0 text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb-0) (a a) (b b) (ks ks))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
+    ((recv (cat (enc a k tb-0 (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc "two" ra-prime k)))
+      (recv (enc "three" rb-prime k))))
+  (label 0)
+  (unrealized (0 2) (1 0))
+  (origs (rb (0 1)) (rb-prime (1 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb rb ra-prime rb-prime rb-0 text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (3 0)) ((2 1) (4 1))
+    ((3 1) (1 0)) ((3 3) (1 2)) ((4 0) (0 0)) ((4 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 5 2 keyserver 2)
+    (enc b ra-0 k tb (ltk a ks)) (4 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc "two" ra-prime k)))
+      (recv (enc "three" rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb-prime (enc "two" ra-prime k)))
+      (send (enc "three" rb-prime k)))
+    ((send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc "one" rb k)))))
+  (label 27)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (4 0)) (rb (0 1)) (ra-prime (3 1))
+    (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 1)) ((3 3) (1 2)) ((4 1) (3 2))
+    ((5 0) (0 0)) ((5 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 2 keyserver 2)
+    (enc b ra-0 k tb (ltk a ks)) (5 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc "two" ra-prime k)))
+      (recv (enc "three" rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc "two" ra-prime-0 k)))
+      (send (enc "three" rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc "two" ra-prime-0 k))))
+    ((send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc "one" rb k)))))
+  (label 32)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (5 0)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (5 1)) ((1 1) (4 2)) ((2 1) (4 0)) ((2 1) (5 1))
+    ((3 1) (2 0)) ((4 1) (1 0)) ((4 3) (1 2)) ((5 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 2 keyserver 2)
+    (enc b ra-1 k tb (ltk a ks)) (5 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc "two" ra-prime k)))
+      (recv (enc "three" rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb-prime (enc "two" ra-prime k)))
+      (send (enc "three" rb-prime k)))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc "one" rb k)))))
+  (label 33)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (4 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 ra-prime-0 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (6 1)) ((1 1) (4 2)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 1)) ((3 1) (2 0)) ((4 3) (1 2))
+    ((5 1) (4 2)) ((6 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 2 keyserver 2)
+    (enc b ra-1 k tb (ltk a ks)) (6 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc "one" rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc "two" ra-prime k)))
+      (recv (enc "three" rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc "two" ra-prime-0 k)))
+      (send (enc "three" rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc "two" ra-prime-0 k))))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc "one" rb k)))))
+  (label 35)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/neuman-stubblebine-reauth.lisp b/tst/neuman-stubblebine-reauth.lisp
deleted file mode 100644
--- a/tst/neuman-stubblebine-reauth.lisp
+++ /dev/null
@@ -1,42 +0,0 @@
-(defprotocol neuman-stubblebine basic
-  (defrole init
-    (vars (a name) (b name) (ks name) (ra text) (ra-prime text) (rb text) (rb-prime text) (k skey) (tb text))
-    (trace (send (cat a ra))
-	   (recv (cat (enc (cat b ra k tb) (ltk a ks)) (enc (cat a k tb) (ltk b ks)) rb))
-	   (send (cat (enc (cat a k tb) (ltk b ks)) (enc rb k)))
-	   (send (cat (enc (cat a k tb) (ltk b ks)) ra-prime))
-	   (recv (cat rb-prime (enc ra-prime k)))
-	   (send (enc rb-prime k))))
-  (defrole resp
-    (vars (a name) (b name) (ks name) (ra text) (ra-prime text) (rb text) (rb-prime text) (k skey) (tb text))
-    (trace (recv (cat a ra))
-	   (send (cat b rb (enc (cat a ra tb) (ltk b ks))))
-	   (recv (cat (enc (cat a k tb) (ltk b ks)) (enc rb k)))
-	   (recv (cat (enc (cat a k tb) (ltk b ks)) ra-prime))
-	   (send (cat rb-prime (enc ra-prime k)))
-	   (recv (enc rb-prime k))))
-  (defrole keyserver
-    (vars (a name) (b name) (ks name) (ra text) (rb text) (k skey) (tb text))
-    (trace (recv (cat b rb (enc (cat a ra tb) (ltk b ks))))
-	   (send (cat (enc (cat b ra k tb) (ltk a ks)) (enc (cat a k tb) (ltk b ks)) rb)))
-    (uniq-orig k)))
-
-;(defskeleton neuman-stubblebine
-;  (vars (a name) (b name) (k skey) (ks name) (ra text) (rb text))
-;  (defstrand init 6 (a a) (b b) (ks ks) (ra ra) (rb rb))
-;  (deflistener k)
-;  (uniq-orig ra rb)
-;  (non-orig (ltk a ks) (ltk b ks)))
-
-(defskeleton neuman-stubblebine
-  (vars (a name) (b name) (ks name) (ra text) (rb text) (k skey))
-  (defstrand resp 6 (a a) (b b) (ks ks) (ra ra) (rb rb) (k k))
- ; (deflistener k)
-  (uniq-orig ra rb)
-  (non-orig (ltk a ks) (ltk b ks)))
-
-;(defskeleton neuman-stubblebine
-;  (vars (a name) (b name) (ks name) (ra text) (rb text))
-;  (defstrand keyserver 2 (a a) (b b) (ks ks) (ra ra) (rb rb))
-;  (uniq-orig ra rb)
-;  (non-orig (ltk a ks) (ltk b ks)))
diff --git a/tst/neuman-stubblebine-reauth.tst b/tst/neuman-stubblebine-reauth.tst
--- a/tst/neuman-stubblebine-reauth.tst
+++ b/tst/neuman-stubblebine-reauth.tst
@@ -1,6 +1,6 @@
 (herald neuman-stubblebine-reauth (bound 8))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/neuman-stubblebine-reauth.lsp")
 (comment "Strand count bounded at 8")
 
@@ -66,6 +66,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand keyserver 2)
     (enc a k tb-0 (ltk b ks)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -92,6 +93,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 3 0 resp 2)
     (enc a ra-0 tb-0 (ltk b ks)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -119,6 +121,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp 2)
     (enc a ra-0 tb-0 (ltk b ks)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -151,6 +154,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc rb-prime k) (1 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -183,6 +187,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb-prime k)
     (1 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -217,6 +222,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc rb-prime k) (1 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -245,6 +251,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb-prime k) (1 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -278,6 +285,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc rb-prime k) (1 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -315,6 +323,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb-prime k)
     (1 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -354,6 +363,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc rb-prime k) (1 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -387,6 +397,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb-prime k) (1 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -421,6 +432,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (3 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -453,6 +465,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (3 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -487,6 +500,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (3 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -521,6 +535,7 @@
   (operation nonce-test
     (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-1 tb-0)) k (4 0)
     (enc a k tb-0 (ltk b ks)) (enc b ra-0 k tb-0 (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -559,6 +574,7 @@
   (operation nonce-test
     (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-1 tb-0)) k (4 1)
     (enc a k tb-0 (ltk b ks)) (enc b ra-0 k tb-0 (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -599,6 +615,7 @@
   (operation nonce-test
     (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-1 tb-0)) k (4 0)
     (enc a k tb-0 (ltk b ks)) (enc b ra-0 k tb-0 (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -636,6 +653,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-0 k) (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -675,6 +693,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-0 k)
     (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -711,6 +730,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 4 1 resp-reauth 2)
     (enc ra-prime-0 k) (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -746,6 +766,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-0 k) (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -781,6 +802,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-0 k)
     (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -814,6 +836,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 4 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -851,6 +874,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -887,6 +911,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -924,6 +949,7 @@
   (uniq-orig k ra ra-prime rb-prime)
   (operation encryption-test (displaced 4 1 resp-reauth 2) (enc rb-0 k)
     (0 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
@@ -963,6 +989,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -996,6 +1023,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1032,6 +1060,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-0 k) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1075,6 +1104,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-0 k)
     (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1116,6 +1146,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 5 1 resp-reauth 2)
     (enc ra-prime-0 k) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1155,6 +1186,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-0 k) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1195,6 +1227,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-0 k)
     (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1233,6 +1266,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 5 2 keyserver 2)
     (enc b ra-1 k tb-0 (ltk a ks)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1272,6 +1306,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 5 2 keyserver 2)
     (enc a k tb-0 (ltk b ks)) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1308,6 +1343,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (4 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1346,6 +1382,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (4 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1385,6 +1422,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1421,6 +1459,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1460,6 +1499,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1493,6 +1533,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1530,6 +1571,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (4 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1566,6 +1608,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1604,6 +1647,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1643,6 +1687,7 @@
   (uniq-orig k ra ra-prime rb-prime)
   (operation encryption-test (displaced 4 1 resp-reauth 2) (enc rb-0 k)
     (0 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
@@ -1684,6 +1729,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1719,6 +1765,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1758,6 +1805,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (4 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1793,6 +1841,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (4 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1831,6 +1880,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (4 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1874,6 +1924,7 @@
   (operation nonce-test
     (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-1 tb-0)) k (5 0)
     (enc a k tb-0 (ltk b ks)) (enc b ra-0 k tb-0 (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1918,6 +1969,7 @@
   (operation nonce-test
     (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-1 tb-0)) k (5 1)
     (enc a k tb-0 (ltk b ks)) (enc b ra-0 k tb-0 (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1959,6 +2011,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 5 2 keyserver 2)
     (enc a k tb-0 (ltk b ks)) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -1998,6 +2051,7 @@
   (operation nonce-test
     (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-1 tb-0)) k (5 0)
     (enc a k tb-0 (ltk b ks)) (enc b ra-0 k tb-0 (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2036,6 +2090,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 5 2 keyserver 2)
     (enc a k tb-0 (ltk b ks)) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2076,6 +2131,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2115,6 +2171,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2155,6 +2212,7 @@
   (uniq-orig k ra ra-prime rb-prime)
   (operation encryption-test (displaced 5 1 resp-reauth 2) (enc rb-1 k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
@@ -2196,6 +2254,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2233,6 +2292,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2273,6 +2333,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-1 k) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2319,6 +2380,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-1 k)
     (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2362,6 +2424,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 5 1 resp-reauth 2)
     (enc ra-prime-1 k) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2404,6 +2467,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-1 k) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2447,6 +2511,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-1 k)
     (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2487,6 +2552,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 5 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2526,6 +2592,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (4 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2562,6 +2629,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (4 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2600,6 +2668,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (4 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2645,6 +2714,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2687,6 +2757,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2729,6 +2800,7 @@
   (uniq-orig k ra ra-prime rb-prime)
   (operation encryption-test (displaced 5 1 resp-reauth 2) (enc rb-0 k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
@@ -2774,6 +2846,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2814,6 +2887,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2851,6 +2925,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (4 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2889,6 +2964,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (4 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2930,6 +3006,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (4 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -2976,6 +3053,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-0 k) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3019,6 +3097,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-0 k)
     (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3060,6 +3139,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 5 1 resp-reauth 2)
     (enc ra-prime-0 k) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3104,6 +3184,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-0 k) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3144,6 +3225,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-0 k)
     (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3181,6 +3263,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 5 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3227,6 +3310,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3277,6 +3361,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-1 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3325,6 +3410,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 1 resp-reauth 2)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3371,6 +3457,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3418,6 +3505,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-1 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3462,6 +3550,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 2 keyserver 2)
     (enc b ra-1 k tb-0 (ltk a ks)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3506,6 +3595,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3546,6 +3636,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3589,6 +3680,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3626,6 +3718,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3666,6 +3759,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 2 keyserver 2)
     (enc a k tb-0 (ltk b ks)) (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3706,6 +3800,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3748,6 +3843,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3791,6 +3887,7 @@
   (uniq-orig k ra ra-prime rb-prime)
   (operation encryption-test (displaced 5 1 resp-reauth 2) (enc rb-1 k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
@@ -3835,6 +3932,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3874,6 +3972,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3916,6 +4015,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3955,6 +4055,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 1) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -3996,6 +4097,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4042,6 +4144,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4088,6 +4191,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4135,6 +4239,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4179,6 +4284,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4226,6 +4332,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4267,6 +4374,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4310,6 +4418,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4354,6 +4463,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4399,6 +4509,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4445,6 +4556,7 @@
   (uniq-orig k ra ra-prime rb-prime)
   (operation encryption-test (displaced 5 1 resp-reauth 2) (enc rb-0 k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
@@ -4493,6 +4605,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4535,6 +4648,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4580,6 +4694,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-0 k) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4625,6 +4740,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-0 k)
     (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4671,6 +4787,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-0 k) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4712,6 +4829,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-0 k)
     (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4749,6 +4867,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 5 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4796,6 +4915,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4838,6 +4958,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4882,6 +5003,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4929,6 +5051,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-0 k) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -4976,6 +5099,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-0 k)
     (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5019,6 +5143,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 5 1 resp-reauth 2)
     (enc ra-prime-0 k) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5068,6 +5193,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-0 k) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5111,6 +5237,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-0 k)
     (4 2))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5155,6 +5282,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5198,6 +5326,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5242,6 +5371,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5291,6 +5421,7 @@
   (operation nonce-test
     (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-1 tb-0)) k (6 0)
     (enc a k tb-0 (ltk b ks)) (enc b ra-0 k tb-0 (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5342,6 +5473,7 @@
   (operation nonce-test
     (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-1 tb-0)) k (6 1)
     (enc a k tb-0 (ltk b ks)) (enc b ra-0 k tb-0 (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5390,6 +5522,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 2 keyserver 2)
     (enc a k tb-0 (ltk b ks)) (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5436,6 +5569,7 @@
   (operation nonce-test
     (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-1 tb-0)) k (6 0)
     (enc a k tb-0 (ltk b ks)) (enc b ra-0 k tb-0 (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5481,6 +5615,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 2 keyserver 2)
     (enc a k tb-0 (ltk b ks)) (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5524,6 +5659,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5563,6 +5699,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 1) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5605,6 +5742,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5653,6 +5791,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5698,6 +5837,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5745,6 +5885,7 @@
   (uniq-orig k ra ra-prime rb-prime)
   (operation encryption-test (displaced 6 1 resp-reauth 2) (enc rb-1 k)
     (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
@@ -5792,6 +5933,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5835,6 +5977,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5876,6 +6019,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5917,6 +6061,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 1) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -5961,6 +6106,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6011,6 +6157,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-0 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6058,6 +6205,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-0 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6103,6 +6251,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 1 resp-reauth 2)
     (enc ra-prime-0 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6151,6 +6300,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-0 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6195,6 +6345,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-0 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6236,6 +6387,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 2 keyserver 2)
     (enc b ra-1 k tb (ltk a ks)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6286,6 +6438,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-2 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6338,6 +6491,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-2 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6389,6 +6543,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 1 resp-reauth 2)
     (enc ra-prime-2 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6437,6 +6592,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-2 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6486,6 +6642,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-2 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6533,6 +6690,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6580,6 +6738,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6623,6 +6782,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6669,6 +6829,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6720,6 +6881,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6768,6 +6930,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6818,6 +6981,7 @@
   (uniq-orig k ra ra-prime rb-prime)
   (operation encryption-test (displaced 6 1 resp-reauth 2) (enc rb-0 k)
     (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
@@ -6869,6 +7033,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6915,6 +7080,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -6960,6 +7126,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7004,6 +7171,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7052,6 +7220,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7102,6 +7271,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7146,6 +7316,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7192,6 +7363,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7240,6 +7412,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 1 resp-reauth 2)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7290,6 +7463,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7339,6 +7513,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-1 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7387,6 +7562,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 4 resp-reauth 2)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7437,6 +7613,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7483,6 +7660,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-1 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7527,6 +7705,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7575,6 +7754,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7621,6 +7801,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7670,6 +7851,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7722,6 +7904,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7772,6 +7955,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-1 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7821,6 +8005,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 1 resp-reauth 2)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7872,6 +8057,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7919,6 +8105,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-1 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -7964,6 +8151,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8015,6 +8203,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 1 resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8065,6 +8254,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc b ra-1 k tb-0 (ltk a ks)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8116,6 +8306,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8163,6 +8354,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8213,6 +8405,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8258,6 +8451,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8304,6 +8498,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc a k tb-0 (ltk b ks)) (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8351,6 +8546,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8399,6 +8595,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8448,6 +8645,7 @@
   (uniq-orig k ra ra-prime rb-prime)
   (operation encryption-test (displaced 6 1 resp-reauth 2) (enc rb-1 k)
     (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
@@ -8498,6 +8696,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8544,6 +8743,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8592,6 +8792,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-0 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8640,6 +8841,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-0 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8689,6 +8891,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-0 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8734,6 +8937,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-0 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8775,6 +8979,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 2 keyserver 2)
     (enc b ra-1 k tb (ltk a ks)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8825,6 +9030,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8870,6 +9076,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 1) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8917,6 +9124,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -8967,6 +9175,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-0 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9017,6 +9226,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-0 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9064,6 +9274,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 1 resp-reauth 2)
     (enc ra-prime-0 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9115,6 +9326,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-0 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9162,6 +9374,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-0 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9205,6 +9418,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 2 keyserver 2)
     (enc b ra-1 k tb (ltk a ks)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9257,6 +9471,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9304,6 +9519,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 1) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9352,6 +9568,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9403,6 +9620,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9455,6 +9673,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9508,6 +9727,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9558,6 +9778,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9611,6 +9832,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9659,6 +9881,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9708,6 +9931,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9758,6 +9982,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9809,6 +10034,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9861,6 +10087,7 @@
   (uniq-orig k ra ra-prime rb-prime)
   (operation encryption-test (displaced 6 1 resp-reauth 2) (enc rb-0 k)
     (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
@@ -9915,6 +10142,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -9964,6 +10192,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10012,6 +10241,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 4 init-reauth 4)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10064,6 +10294,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-1 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10116,6 +10347,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10167,6 +10399,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10215,6 +10448,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-1 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10260,6 +10494,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10313,6 +10548,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10361,6 +10597,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10411,6 +10648,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10464,6 +10702,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10516,6 +10755,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-1 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10566,6 +10806,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 4 init 3) (enc ra-prime-1 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10616,6 +10857,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 1 resp-reauth 2)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10670,6 +10912,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10719,6 +10962,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-1 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10769,6 +11013,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10820,6 +11065,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-1 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10872,6 +11118,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10920,6 +11167,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-1 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -10965,6 +11213,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11019,6 +11268,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11068,6 +11318,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11118,6 +11369,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11170,6 +11422,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11223,6 +11476,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-1 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11274,6 +11528,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 6 1 resp-reauth 2)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11329,6 +11584,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-1 k) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11379,6 +11635,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-1 k)
     (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11429,6 +11686,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11479,6 +11737,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11530,6 +11789,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11582,6 +11842,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc a k tb-0 (ltk b ks)) (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11631,6 +11892,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc a k tb-0 (ltk b ks)) (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11681,6 +11943,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11728,6 +11991,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 1) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11777,6 +12041,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11830,6 +12095,7 @@
   (uniq-orig k ra ra-prime rb-prime)
   (operation encryption-test (displaced 7 1 resp-reauth 2) (enc rb-1 k)
     (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
@@ -11881,6 +12147,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11929,6 +12196,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 1) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -11979,6 +12247,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12032,6 +12301,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12080,6 +12350,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 1) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12129,6 +12400,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12180,6 +12452,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 1 resp-reauth 2)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12231,6 +12504,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 5 resp-reauth 2)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12281,6 +12555,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc b ra-1 k tb (ltk a ks)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12333,6 +12608,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12383,6 +12659,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 1) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12434,6 +12711,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12487,6 +12765,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 1 resp-reauth 2)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12539,6 +12818,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc b ra-1 k tb (ltk a ks)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12593,6 +12873,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 1 resp-reauth 2)
     (enc ra-prime-3 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12646,6 +12927,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12699,6 +12981,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12749,6 +13032,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12801,6 +13085,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12857,6 +13142,7 @@
   (uniq-orig k ra ra-prime rb-prime)
   (operation encryption-test (displaced 7 1 resp-reauth 2) (enc rb-0 k)
     (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
@@ -12912,6 +13198,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -12963,6 +13250,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13017,6 +13305,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13073,6 +13362,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13125,6 +13415,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13176,6 +13467,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13230,6 +13522,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 4 init-reauth 4)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13284,6 +13577,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 5 resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13338,6 +13632,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 1 resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13391,6 +13686,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13445,6 +13741,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13497,6 +13794,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13551,6 +13849,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13606,6 +13905,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13657,6 +13957,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13709,6 +14010,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13763,6 +14065,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 1 resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13817,6 +14120,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 4 resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13871,6 +14175,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13926,6 +14231,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -13979,6 +14285,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -14034,6 +14341,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -14090,6 +14398,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 1 resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -14145,6 +14454,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -14201,6 +14511,7 @@
   (uniq-orig k ra ra-prime rb-prime)
   (operation encryption-test (displaced 7 1 resp-reauth 2) (enc rb-1 k)
     (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
@@ -14255,6 +14566,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 5 init-reauth 4)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -14307,6 +14619,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc b ra-1 k tb (ltk a ks)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -14361,6 +14674,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 5 init 3) (enc ra-prime-1 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -14415,6 +14729,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 1 resp-reauth 2)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -14468,6 +14783,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc b ra-1 k tb (ltk a ks)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -14523,6 +14839,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc b ra-1 k tb (ltk a ks)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -14577,6 +14894,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 1 resp-reauth 2)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -14632,6 +14950,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc b ra-1 k tb (ltk a ks)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -14691,6 +15010,7 @@
   (uniq-orig k ra ra-prime rb-prime)
   (operation encryption-test (displaced 7 1 resp-reauth 2) (enc rb-0 k)
     (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
@@ -14749,6 +15069,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 5 init-reauth 4)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -14805,6 +15126,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 4 init-reauth 4)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -14860,6 +15182,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -14918,6 +15241,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 4 init-reauth 4)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -14976,6 +15300,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 5 init 3) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15034,6 +15359,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 1 resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15092,6 +15418,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15150,6 +15477,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 4 init-reauth 4)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15207,6 +15535,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 4 init 3) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15265,6 +15594,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 1 resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15323,6 +15653,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 2 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15381,6 +15712,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (displaced 7 1 resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15444,6 +15776,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15501,6 +15834,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15560,6 +15894,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15614,6 +15949,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15667,6 +16003,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15719,6 +16056,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15774,6 +16112,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15824,6 +16163,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15874,6 +16214,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15927,6 +16268,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-1 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -15981,6 +16323,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16031,6 +16374,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-1 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16081,6 +16425,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16135,6 +16480,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-1 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16190,6 +16536,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16241,6 +16588,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-1 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16293,6 +16641,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-3 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16353,6 +16702,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-3 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16414,6 +16764,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-3 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16471,6 +16822,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-3 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16527,6 +16879,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16583,6 +16936,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16642,6 +16996,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16696,6 +17051,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16750,6 +17106,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16807,6 +17164,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16865,6 +17223,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16919,6 +17278,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -16973,6 +17333,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17030,6 +17391,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17088,6 +17450,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17142,6 +17505,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17194,6 +17558,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17251,6 +17616,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17309,6 +17675,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17363,6 +17730,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17415,6 +17783,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17469,6 +17838,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17526,6 +17896,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17578,6 +17949,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17630,6 +18002,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17685,6 +18058,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17743,6 +18117,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17796,6 +18171,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17850,6 +18226,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-1 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17906,6 +18283,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -17961,6 +18339,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18013,6 +18392,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-1 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18065,6 +18445,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18121,6 +18502,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-1 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18178,6 +18560,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18231,6 +18614,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-1 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18284,6 +18668,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18339,6 +18724,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-1 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18395,6 +18781,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18447,6 +18834,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-1 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18498,6 +18886,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18555,6 +18944,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-1 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18613,6 +19003,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-1 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18667,6 +19058,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-1 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18722,6 +19114,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18780,6 +19173,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18841,6 +19235,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18897,6 +19292,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -18953,6 +19349,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -19012,6 +19409,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -19074,6 +19472,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2) (enc rb k)
     (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -19131,6 +19530,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -19189,6 +19589,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -19249,6 +19650,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -19308,6 +19710,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -19364,6 +19767,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -19420,6 +19824,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -19481,6 +19886,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -19541,6 +19947,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -19598,6 +20005,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -19655,6 +20063,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -19715,6 +20124,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -19774,6 +20184,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -19830,6 +20241,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -19885,6 +20297,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -19945,6 +20358,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -20006,6 +20420,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -20063,6 +20478,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -20119,6 +20535,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -20178,6 +20595,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -20238,6 +20656,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -20294,6 +20713,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -20349,6 +20769,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init-reauth 4)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -20410,6 +20831,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand init 3) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -20472,6 +20894,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-strand resp-reauth 2)
     (enc ra-prime-2 k) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -20530,6 +20953,7 @@
   (uniq-orig k ra rb ra-prime rb-prime)
   (operation encryption-test (added-listener k) (enc ra-prime-2 k)
     (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
diff --git a/tst/neuman-stubblebine-reauth_shapes.tst b/tst/neuman-stubblebine-reauth_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/neuman-stubblebine-reauth_shapes.tst
@@ -0,0 +1,4881 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald neuman-stubblebine-reauth (bound 8))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/neuman-stubblebine-reauth.lsp")
+
+(defprotocol neuman-stubblebine-reauth basic
+  (defrole init
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (defrole resp
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (defrole init-reauth
+    (vars (a b ks name) (ra-prime rb-prime text) (k skey) (tb text))
+    (trace (recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb-prime (enc ra-prime k))) (send (enc rb-prime k))))
+  (defrole resp-reauth
+    (vars (a b ks name) (ra-prime rb-prime text) (k skey) (tb text))
+    (trace (recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k))))
+  (defrole keyserver
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb rb ra-prime rb-prime tb-0 text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb-0) (a a) (b b) (ks ks))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb-0 (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k))))
+  (label 0)
+  (unrealized (0 2) (1 0))
+  (origs (rb (0 1)) (rb-prime (1 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb ra-prime rb-prime rb rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb ra-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((1 1) (3 0)) ((2 1) (1 0))
+    ((3 1) (1 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra ra-prime rb-prime)
+  (operation encryption-test (displaced 4 1 resp-reauth 2) (enc rb-0 k)
+    (0 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k)))))
+  (label 26)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb ra-prime) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra-prime (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb ra-prime rb-prime rb text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb ra-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb rb-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((1 1) (3 1)) ((2 1) (1 0))
+    ((3 0) (0 0)) ((3 2) (1 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra ra-prime rb-prime)
+  (operation encryption-test (displaced 4 1 resp-reauth 2) (enc rb-0 k)
+    (0 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-prime))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb-prime k)))))
+  (label 45)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb ra-prime) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (3 0)) (ra-prime (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 rb-prime-0 rb-prime-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb) (rb-prime rb-prime-1)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 0)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((3 1) (1 2)) ((4 1) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (4 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb))
+      (send (cat rb-prime-1 (enc rb k)))))
+  (label 50)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra ra-prime rb-prime tb ra-0 rb rb-0 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb ra-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((1 1) (4 0)) ((2 1) (1 0))
+    ((3 1) (2 0)) ((4 1) (1 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra ra-prime rb-prime)
+  (operation encryption-test (displaced 5 1 resp-reauth 2) (enc rb-1 k)
+    (0 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra-0)) (send (cat b rb-0 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k)))))
+  (label 58)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb ra-prime) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra-prime (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb rb ra-prime rb-prime rb-0 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb) (rb-prime rb-prime-0)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (3 0)) ((2 1) (4 0))
+    ((3 1) (1 0)) ((3 3) (1 2)) ((4 1) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (4 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb-prime (enc ra-prime k))) (send (enc rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) rb))
+      (send (cat rb-prime-0 (enc rb k)))))
+  (label 69)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (3 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb ra-prime rb-prime rb ra-prime-0 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb ra-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((1 1) (3 2)) ((2 1) (1 0))
+    ((2 1) (3 0)) ((2 1) (4 0)) ((3 3) (1 2)) ((4 1) (3 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra ra-prime rb-prime)
+  (operation encryption-test (displaced 5 1 resp-reauth 2) (enc rb-0 k)
+    (0 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k)))))
+  (label 72)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb ra-prime) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra-prime (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb rb ra-prime rb-prime rb-0 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb rb-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb) (rb-prime rb-prime-0)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 1)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((3 0) (0 0)) ((3 2) (1 2)) ((4 1) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (4 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-prime))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb))
+      (send (cat rb-prime-0 (enc rb k)))))
+  (label 77)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (3 0)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb rb ra-prime rb-prime rb-0 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 0)) ((1 1) (4 2)) ((2 1) (4 0))
+    ((3 1) (1 2)) ((4 1) (1 0)) ((4 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 5 1 resp-reauth 2)
+    (enc ra-prime-0 k) (4 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb (enc ra-prime k))) (send (enc rb k))))
+  (label 80)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (4 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb rb ra-prime rb-prime rb-0 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 0)) ((2 1) (1 0)) ((2 1) (4 1))
+    ((3 1) (1 2)) ((4 0) (0 0)) ((4 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 5 2 keyserver 2)
+    (enc b ra-0 k tb (ltk a ks)) (4 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k))))
+    ((send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 83)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (4 0)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra ra-prime rb-prime tb ra-0 rb rb-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb ra-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb rb-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((1 1) (4 1)) ((2 1) (1 0))
+    ((3 1) (2 0)) ((4 2) (1 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra ra-prime rb-prime)
+  (operation encryption-test (displaced 5 1 resp-reauth 2) (enc rb-1 k)
+    (0 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra-0)) (send (cat b rb-0 (enc a ra-0 tb (ltk b ks)))))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-prime))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb-prime k)))))
+  (label 97)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb ra-prime) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra-prime (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 rb-prime-0 rb-prime-1
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb) (rb-prime rb-prime-1)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (5 0)) ((1 1) (4 0)) ((2 1) (1 0)) ((2 1) (5 0))
+    ((3 1) (2 0)) ((4 1) (1 2)) ((5 1) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (5 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb))
+      (send (cat rb-prime-1 (enc rb k)))))
+  (label 102)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb ra-prime rb-prime rb ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb ra-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((1 1) (3 2)) ((2 1) (1 0))
+    ((2 1) (3 0)) ((2 1) (4 1)) ((3 3) (1 2)) ((4 0) (0 0))
+    ((4 2) (3 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra ra-prime rb-prime)
+  (operation encryption-test (displaced 5 1 resp-reauth 2) (enc rb-0 k)
+    (0 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-0))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-0 k)))))
+  (label 112)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb ra-prime) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (4 0)) (ra-prime (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb rb ra-prime rb-prime rb-0 text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (3 0)) ((2 1) (4 1))
+    ((3 1) (1 0)) ((3 3) (1 2)) ((4 0) (0 0)) ((4 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 5 2 keyserver 2)
+    (enc b ra-0 k tb (ltk a ks)) (4 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb-prime (enc ra-prime k))) (send (enc rb-prime k)))
+    ((send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 119)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (4 0)) (rb (0 1)) (ra-prime (3 1))
+    (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 rb-prime-0 rb-prime-1
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb) (rb-prime rb-prime-1)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 0)) ((3 3) (1 2)) ((4 1) (3 2))
+    ((5 1) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb))
+      (send (cat rb-prime-1 (enc rb k)))))
+  (label 122)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb rb ra-prime rb-prime rb-0 text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb rb-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 1)) ((1 1) (4 2)) ((2 1) (4 0))
+    ((3 0) (0 0)) ((3 2) (1 2)) ((4 1) (1 0)) ((4 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 5 1 resp-reauth 2)
+    (enc ra-prime-0 k) (4 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-prime))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb (enc ra-prime k))) (send (enc rb k))))
+  (label 125)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (3 0)) (rb (0 1)) (ra-prime (4 1))
+    (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 rb-prime-0 ra-prime-0 rb-prime-1
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-1) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 0)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((3 1) (1 2)) ((4 3) (0 2)) ((5 1) (4 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-1 (enc ra-prime-0 k)))))
+  (label 130)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb) (rb-prime rb-prime-0)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (5 0)) ((1 1) (4 2)) ((2 1) (4 0)) ((2 1) (5 0))
+    ((3 1) (2 0)) ((4 1) (1 0)) ((4 3) (1 2)) ((5 1) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (5 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb-prime (enc ra-prime k))) (send (enc rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) rb))
+      (send (cat rb-prime-0 (enc rb k)))))
+  (label 138)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (4 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra ra-prime rb-prime tb ra-0 rb rb-0 ra-prime-0 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb ra-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((1 1) (4 2)) ((2 1) (1 0))
+    ((2 1) (4 0)) ((2 1) (5 0)) ((3 1) (2 0)) ((4 3) (1 2))
+    ((5 1) (4 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra ra-prime rb-prime)
+  (operation encryption-test (displaced 6 1 resp-reauth 2) (enc rb-1 k)
+    (0 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra-0)) (send (cat b rb-0 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k)))))
+  (label 141)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb ra-prime) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra-prime (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb rb-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb) (rb-prime rb-prime-0)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (5 0)) ((1 1) (4 1)) ((2 1) (1 0)) ((2 1) (5 0))
+    ((3 1) (2 0)) ((4 2) (1 2)) ((5 1) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (5 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-prime))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb))
+      (send (cat rb-prime-0 (enc rb k)))))
+  (label 146)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (5 2)) ((1 1) (4 0)) ((1 1) (5 2)) ((2 1) (5 0))
+    ((3 1) (2 0)) ((4 1) (1 2)) ((5 1) (1 0)) ((5 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 1 resp-reauth 2)
+    (enc ra-prime-0 k) (5 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb (enc ra-prime k))) (send (enc rb k))))
+  (label 149)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (5 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (5 1)) ((1 1) (4 0)) ((2 1) (1 0)) ((2 1) (5 1))
+    ((3 1) (2 0)) ((4 1) (1 2)) ((5 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 2 keyserver 2)
+    (enc b ra-1 k tb (ltk a ks)) (5 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k))))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 152)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb) (rb-prime rb-prime-0)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (4 2)) ((2 1) (3 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((3 3) (1 2)) ((4 1) (1 0)) ((4 3) (3 2))
+    ((5 1) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-0 (enc ra-prime k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (cat (enc a k tb (ltk b ks)) rb))
+      (send (cat rb-prime-0 (enc rb k)))))
+  (label 161)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (4 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb ra-prime rb-prime rb ra-prime-0 ra-prime-1 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb ra-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-1)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((1 1) (3 2)) ((2 1) (1 0))
+    ((2 1) (3 0)) ((2 1) (4 0)) ((2 1) (5 0)) ((3 3) (1 2))
+    ((4 3) (3 2)) ((5 1) (4 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra ra-prime rb-prime)
+  (operation encryption-test (displaced 6 1 resp-reauth 2) (enc rb-0 k)
+    (0 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (send (cat rb-prime-0 (enc ra-prime-1 k)))))
+  (label 164)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb ra-prime) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra-prime (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb) (rb-prime rb-prime-0)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 1)) ((2 1) (5 0)) ((3 3) (1 2)) ((4 0) (0 0))
+    ((4 2) (3 2)) ((5 1) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-0))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-0 k))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb))
+      (send (cat rb-prime-0 (enc rb k)))))
+  (label 169)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (4 0)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (3 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((3 1) (1 0)) ((3 3) (1 2)) ((4 3) (0 2))
+    ((5 1) (4 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb-prime (enc ra-prime k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k)))))
+  (label 172)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (3 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((1 1) (5 2)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 0)) ((3 3) (1 2)) ((4 1) (3 2))
+    ((5 1) (1 0)) ((5 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 1 resp-reauth 2)
+    (enc ra-prime-1 k) (5 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb (enc ra-prime k))) (send (enc rb k))))
+  (label 173)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (5 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 0)) ((3 3) (1 2)) ((4 1) (3 2))
+    ((4 1) (5 2)) ((5 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 4 resp-reauth 2)
+    (enc ra-prime-1 k) (5 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k))))
+  (label 176)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 1)) ((3 3) (1 2)) ((4 1) (3 2))
+    ((5 0) (0 0)) ((5 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 2 keyserver 2)
+    (enc b ra-0 k tb (ltk a ks)) (5 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k))))
+    ((send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 179)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (5 0)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 rb-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb rb-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 1)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((3 0) (0 0)) ((3 2) (1 2)) ((4 3) (0 2))
+    ((5 1) (4 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (5 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-prime))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k)))))
+  (label 182)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (3 0)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 rb-prime-0 ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 0)) ((1 1) (5 2)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((3 1) (1 2)) ((4 3) (0 2)) ((5 1) (1 0))
+    ((5 3) (4 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 1 resp-reauth 2)
+    (enc ra-prime-1 k) (5 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-0 (enc ra-prime k)))
+      (send (enc ra-prime-0 k))))
+  (label 185)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (5 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 rb-prime-0 ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 0)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((2 1) (5 1)) ((3 1) (1 2)) ((4 3) (0 2)) ((5 0) (0 0))
+    ((5 2) (4 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 2 keyserver 2)
+    (enc b ra-0 k tb (ltk a ks)) (5 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-0))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-0 k)))))
+  (label 188)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (5 0)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra ra-prime rb-prime tb ra-0 rb rb-0 ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb ra-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb ra-prime-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((1 1) (4 2)) ((2 1) (1 0))
+    ((2 1) (4 0)) ((2 1) (5 1)) ((3 1) (2 0)) ((4 3) (1 2))
+    ((5 2) (4 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra ra-prime rb-prime)
+  (operation encryption-test (displaced 6 1 resp-reauth 2) (enc rb-1 k)
+    (0 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra-0)) (send (cat b rb-0 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-0))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-0 k)))))
+  (label 202)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb ra-prime) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra-prime (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (5 1)) ((1 1) (4 2)) ((2 1) (4 0)) ((2 1) (5 1))
+    ((3 1) (2 0)) ((4 1) (1 0)) ((4 3) (1 2)) ((5 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 2 keyserver 2)
+    (enc b ra-1 k tb (ltk a ks)) (5 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb-prime (enc ra-prime k))) (send (enc rb-prime k)))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 209)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (4 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 ra-prime-0 rb-prime-0
+      rb-prime-1 text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb) (rb-prime rb-prime-1)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (6 0)) ((1 1) (4 2)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 0)) ((3 1) (2 0)) ((4 3) (1 2))
+    ((5 1) (4 2)) ((6 1) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb))
+      (send (cat rb-prime-1 (enc rb k)))))
+  (label 212)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb rb-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (5 2)) ((1 1) (4 1)) ((1 1) (5 2)) ((2 1) (5 0))
+    ((3 1) (2 0)) ((4 2) (1 2)) ((5 1) (1 0)) ((5 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 1 resp-reauth 2)
+    (enc ra-prime-0 k) (5 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-prime))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb (enc ra-prime k))) (send (enc rb k))))
+  (label 215)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (5 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb rb-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (5 1)) ((1 1) (4 1)) ((2 1) (1 0)) ((2 1) (5 1))
+    ((3 1) (2 0)) ((4 2) (1 2)) ((5 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 2 keyserver 2)
+    (enc b ra-1 k tb (ltk a ks)) (5 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-prime))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb-prime k))))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 218)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 rb-prime-0 ra-prime-0
+      rb-prime-1 text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-1) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (5 2)) ((1 1) (4 0)) ((2 1) (1 0)) ((2 1) (5 0))
+    ((2 1) (6 0)) ((3 1) (2 0)) ((4 1) (1 2)) ((5 3) (0 2))
+    ((6 1) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-1 (enc ra-prime-0 k)))))
+  (label 221)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb ra-prime rb-prime rb ra-prime-0 ra-prime-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb ra-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-1) (tb tb) (a a) (b b)
+    (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((1 1) (3 2)) ((2 1) (1 0))
+    ((2 1) (3 0)) ((2 1) (4 0)) ((2 1) (5 1)) ((3 3) (1 2))
+    ((4 3) (3 2)) ((5 0) (0 0)) ((5 2) (4 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra ra-prime rb-prime)
+  (operation encryption-test (displaced 6 1 resp-reauth 2) (enc rb-0 k)
+    (0 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-1))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-1 k)))))
+  (label 231)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb ra-prime) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (5 0)) (ra-prime (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (4 2)) ((2 1) (3 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((3 3) (1 2)) ((4 1) (1 0)) ((4 3) (3 2))
+    ((4 3) (5 2)) ((5 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 4 init-reauth 4)
+    (enc ra-prime-1 k) (5 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-0 (enc ra-prime k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k))))
+  (label 234)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (4 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (4 2)) ((2 1) (3 0)) ((2 1) (4 0))
+    ((2 1) (5 1)) ((3 3) (1 2)) ((4 1) (1 0)) ((4 3) (3 2))
+    ((5 0) (0 0)) ((5 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 2 keyserver 2)
+    (enc b ra-0 k tb (ltk a ks)) (5 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-0 (enc ra-prime k)))
+      (send (enc ra-prime-0 k)))
+    ((send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 239)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (5 0)) (rb (0 1)) (ra-prime (4 1))
+    (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 rb-prime-0
+      rb-prime-1 text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-1)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb) (rb-prime rb-prime-1)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 0)) ((2 1) (6 0)) ((3 3) (1 2))
+    ((4 3) (3 2)) ((5 1) (4 2)) ((6 1) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (send (cat rb-prime-0 (enc ra-prime-1 k))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb))
+      (send (cat rb-prime-1 (enc rb k)))))
+  (label 242)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 1)) ((2 1) (5 0)) ((3 3) (1 2)) ((4 0) (0 0))
+    ((4 2) (3 2)) ((4 2) (5 2)) ((5 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 4 init 3) (enc ra-prime-1 k)
+    (5 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-0))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-0 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k))))
+  (label 245)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (4 0)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((1 1) (5 2)) ((2 1) (3 0))
+    ((2 1) (4 1)) ((2 1) (5 0)) ((3 3) (1 2)) ((4 0) (0 0))
+    ((4 2) (3 2)) ((5 1) (1 0)) ((5 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 1 resp-reauth 2)
+    (enc ra-prime-1 k) (5 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-0))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-0 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb (enc ra-prime k))) (send (enc rb k))))
+  (label 246)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (4 0)) (rb (0 1)) (ra-prime (5 1))
+    (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (3 0)) ((2 1) (4 0))
+    ((2 1) (5 1)) ((3 1) (1 0)) ((3 3) (1 2)) ((4 3) (0 2))
+    ((5 0) (0 0)) ((5 2) (4 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 2 keyserver 2)
+    (enc b ra-0 k tb (ltk a ks)) (5 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb-prime (enc ra-prime k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-0))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-0 k)))))
+  (label 253)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (5 0)) (rb (0 1)) (ra-prime (3 1))
+    (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 rb-prime-0 ra-prime-1
+      rb-prime-1 text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-1)
+    (rb-prime rb-prime-1) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 0)) ((2 1) (6 0)) ((3 3) (1 2))
+    ((4 1) (3 2)) ((5 3) (0 2)) ((6 1) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat rb (enc ra-prime-1 k))) (send (enc rb k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (send (cat rb-prime-1 (enc ra-prime-1 k)))))
+  (label 256)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey) (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb rb-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 1)) ((1 1) (5 2)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((3 0) (0 0)) ((3 2) (1 2)) ((4 3) (0 2))
+    ((5 1) (1 0)) ((5 3) (4 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 6 1 resp-reauth 2)
+    (enc ra-prime-1 k) (5 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-prime))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-0 (enc ra-prime k)))
+      (send (enc ra-prime-0 k))))
+  (label 259)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (3 0)) (rb (0 1)) (ra-prime (5 1))
+    (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 rb-prime-0 ra-prime-0 ra-prime-1
+      rb-prime-1 text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-1)
+    (rb-prime rb-prime-1) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 0)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 0)) ((3 1) (1 2)) ((4 3) (0 2))
+    ((5 3) (4 2)) ((6 1) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (send (cat rb-prime-1 (enc ra-prime-1 k)))))
+  (label 264)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 ra-prime-0 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb) (rb-prime rb-prime-0)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (6 0)) ((1 1) (5 2)) ((2 1) (4 0)) ((2 1) (5 0))
+    ((2 1) (6 0)) ((3 1) (2 0)) ((4 3) (1 2)) ((5 1) (1 0))
+    ((5 3) (4 2)) ((6 1) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-0 (enc ra-prime k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (cat (enc a k tb (ltk b ks)) rb))
+      (send (cat rb-prime-0 (enc rb k)))))
+  (label 269)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (5 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra ra-prime rb-prime tb ra-0 rb rb-0 ra-prime-0 ra-prime-1
+      rb-prime-0 text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb ra-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-1)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((1 1) (4 2)) ((2 1) (1 0))
+    ((2 1) (4 0)) ((2 1) (5 0)) ((2 1) (6 0)) ((3 1) (2 0))
+    ((4 3) (1 2)) ((5 3) (4 2)) ((6 1) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra ra-prime rb-prime)
+  (operation encryption-test (displaced 7 1 resp-reauth 2) (enc rb-1 k)
+    (0 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra-0)) (send (cat b rb-0 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (send (cat rb-prime-0 (enc ra-prime-1 k)))))
+  (label 272)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb ra-prime) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra-prime (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 ra-prime-0 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb ra-prime-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb) (rb-prime rb-prime-0)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (6 0)) ((1 1) (4 2)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((2 1) (5 1)) ((2 1) (6 0)) ((3 1) (2 0)) ((4 3) (1 2))
+    ((5 2) (4 2)) ((6 1) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-0))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-0 k))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb))
+      (send (cat rb-prime-0 (enc rb k)))))
+  (label 277)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 ra-prime-0 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (5 2)) ((1 1) (4 2)) ((2 1) (4 0)) ((2 1) (5 0))
+    ((2 1) (6 0)) ((3 1) (2 0)) ((4 1) (1 0)) ((4 3) (1 2))
+    ((5 3) (0 2)) ((6 1) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb-prime (enc ra-prime k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k)))))
+  (label 280)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (4 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 ra-prime-0 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (6 2)) ((1 1) (4 2)) ((1 1) (6 2)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 0)) ((3 1) (2 0)) ((4 3) (1 2))
+    ((5 1) (4 2)) ((6 1) (1 0)) ((6 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 1 resp-reauth 2)
+    (enc ra-prime-1 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb (enc ra-prime k))) (send (enc rb k))))
+  (label 281)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (6 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 ra-prime-0 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (6 2)) ((1 1) (4 2)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 0)) ((3 1) (2 0)) ((4 3) (1 2))
+    ((5 1) (4 2)) ((5 1) (6 2)) ((6 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 5 resp-reauth 2)
+    (enc ra-prime-1 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k))))
+  (label 284)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 ra-prime-0 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (6 1)) ((1 1) (4 2)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 1)) ((3 1) (2 0)) ((4 3) (1 2))
+    ((5 1) (4 2)) ((6 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 2 keyserver 2)
+    (enc b ra-1 k tb (ltk a ks)) (6 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k))))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 287)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 ra-prime-0 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb rb-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (5 2)) ((1 1) (4 1)) ((2 1) (1 0)) ((2 1) (5 0))
+    ((2 1) (6 0)) ((3 1) (2 0)) ((4 2) (1 2)) ((5 3) (0 2))
+    ((6 1) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (6 0) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-prime))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k)))))
+  (label 290)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 rb-prime-0 ra-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (5 2)) ((1 1) (4 0)) ((1 1) (6 2)) ((2 1) (5 0))
+    ((2 1) (6 0)) ((3 1) (2 0)) ((4 1) (1 2)) ((5 3) (0 2))
+    ((6 1) (1 0)) ((6 3) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 1 resp-reauth 2)
+    (enc ra-prime-1 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-0 (enc ra-prime k)))
+      (send (enc ra-prime-0 k))))
+  (label 293)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (6 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 rb-prime-0 ra-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb ra-prime-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (precedes ((0 1) (5 2)) ((1 1) (4 0)) ((2 1) (1 0)) ((2 1) (5 0))
+    ((2 1) (6 1)) ((3 1) (2 0)) ((4 1) (1 2)) ((5 3) (0 2))
+    ((6 2) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 2 keyserver 2)
+    (enc b ra-1 k tb (ltk a ks)) (6 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-0))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-0 k)))))
+  (label 296)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb) (rb-prime rb-prime-0)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (5 2)) ((2 1) (3 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 0)) ((3 3) (1 2)) ((4 3) (3 2))
+    ((5 1) (1 0)) ((5 3) (4 2)) ((6 1) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-1 (enc ra-prime k)))
+      (send (enc ra-prime-1 k)))
+    ((recv (cat (enc a k tb (ltk b ks)) rb))
+      (send (cat rb-prime-0 (enc rb k)))))
+  (label 305)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (5 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb ra-prime rb-prime rb ra-prime-0 ra-prime-1 ra-prime-2
+      rb-prime-0 text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb ra-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-2)
+    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-2)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((1 1) (3 2)) ((2 1) (1 0))
+    ((2 1) (3 0)) ((2 1) (4 0)) ((2 1) (5 0)) ((2 1) (6 0))
+    ((3 3) (1 2)) ((4 3) (3 2)) ((5 3) (4 2)) ((6 1) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra ra-prime rb-prime)
+  (operation encryption-test (displaced 7 1 resp-reauth 2) (enc rb-0 k)
+    (0 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-2))
+      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
+      (send (enc ra-prime-1 k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-2))
+      (send (cat rb-prime-0 (enc ra-prime-2 k)))))
+  (label 308)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb ra-prime) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra-prime (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-1) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb) (rb-prime rb-prime-0)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 1)) ((2 1) (6 0)) ((3 3) (1 2))
+    ((4 3) (3 2)) ((5 0) (0 0)) ((5 2) (4 2)) ((6 1) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-1))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-1 k))))
+    ((recv (cat (enc a k tb (ltk b ks)) rb))
+      (send (cat rb-prime-0 (enc rb k)))))
+  (label 313)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (5 0)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-1)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (4 2)) ((2 1) (3 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 0)) ((3 3) (1 2)) ((4 1) (1 0))
+    ((4 3) (3 2)) ((5 3) (0 2)) ((6 1) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-0 (enc ra-prime k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat rb (enc ra-prime-1 k))) (send (enc rb k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (send (cat rb-prime-0 (enc ra-prime-1 k)))))
+  (label 316)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (4 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-1)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 0)) ((2 1) (6 0)) ((3 3) (1 2))
+    ((4 3) (3 2)) ((4 3) (6 2)) ((5 1) (4 2)) ((6 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 4 init-reauth 4)
+    (enc ra-prime-2 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (send (cat rb-prime-0 (enc ra-prime-1 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k))))
+  (label 318)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-1)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 0)) ((2 1) (6 0)) ((3 3) (1 2))
+    ((4 3) (3 2)) ((5 1) (4 2)) ((5 1) (6 2)) ((6 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 5 resp-reauth 2)
+    (enc ra-prime-2 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (send (cat rb-prime-0 (enc ra-prime-1 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat rb (enc ra-prime-1 k))) (send (enc rb k))))
+  (label 320)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-1)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((1 1) (6 2)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 0)) ((2 1) (6 0)) ((3 3) (1 2))
+    ((4 3) (3 2)) ((5 1) (4 2)) ((6 1) (1 0)) ((6 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 1 resp-reauth 2)
+    (enc ra-prime-2 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (send (cat rb-prime-0 (enc ra-prime-1 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb (enc ra-prime k))) (send (enc rb k))))
+  (label 321)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (6 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-1)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 0)) ((2 1) (6 1)) ((3 3) (1 2))
+    ((4 3) (3 2)) ((5 1) (4 2)) ((6 0) (0 0)) ((6 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 2 keyserver 2)
+    (enc b ra-0 k tb (ltk a ks)) (6 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (send (cat rb-prime-0 (enc ra-prime-1 k))))
+    ((send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 324)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (6 0)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-1)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 1)) ((2 1) (5 0)) ((2 1) (6 0)) ((3 3) (1 2))
+    ((4 0) (0 0)) ((4 2) (3 2)) ((5 3) (0 2)) ((6 1) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-0))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-0 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat rb (enc ra-prime-1 k))) (send (enc rb k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (send (cat rb-prime-0 (enc ra-prime-1 k)))))
+  (label 327)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (4 0)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-1)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (3 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 0)) ((3 1) (1 0)) ((3 3) (1 2))
+    ((4 3) (0 2)) ((5 3) (4 2)) ((6 1) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb-prime (enc ra-prime k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (send (cat rb-prime-0 (enc ra-prime-1 k)))))
+  (label 330)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (3 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 rb-prime-0 ra-prime-1
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((1 1) (6 2)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 0)) ((2 1) (6 0)) ((3 3) (1 2))
+    ((4 1) (3 2)) ((5 3) (0 2)) ((6 1) (1 0)) ((6 3) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 1 resp-reauth 2)
+    (enc ra-prime-2 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat rb (enc ra-prime-1 k))) (send (enc rb k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-1 (enc ra-prime k)))
+      (send (enc ra-prime-1 k))))
+  (label 331)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (6 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 rb-prime-0 ra-prime-1
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 0)) ((2 1) (6 0)) ((3 3) (1 2))
+    ((4 1) (3 2)) ((4 1) (6 2)) ((5 3) (0 2)) ((6 3) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 4 resp-reauth 2)
+    (enc ra-prime-2 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat rb (enc ra-prime-1 k))) (send (enc rb k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat ra-prime-1 (enc ra-prime-0 k)))
+      (send (enc ra-prime-1 k))))
+  (label 334)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 rb-prime-0 ra-prime-1
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-1) (tb tb) (a a) (b b)
+    (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 0)) ((2 1) (6 1)) ((3 3) (1 2))
+    ((4 1) (3 2)) ((5 3) (0 2)) ((6 0) (0 0)) ((6 2) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 2 keyserver 2)
+    (enc b ra-0 k tb (ltk a ks)) (6 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (send (cat rb-prime-0 (enc ra-prime-0 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat rb (enc ra-prime-1 k))) (send (enc rb k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-1))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-1 k)))))
+  (label 337)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (6 0)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 rb-prime-0
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb rb-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime ra-prime-1)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 1)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 0)) ((3 0) (0 0)) ((3 2) (1 2))
+    ((4 3) (0 2)) ((5 3) (4 2)) ((6 1) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
+    k (6 0) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-prime))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (send (cat rb-prime-0 (enc ra-prime-1 k)))))
+  (label 340)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (3 0)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 rb-prime-0 ra-prime-0 ra-prime-1
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 0)) ((1 1) (6 2)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 0)) ((3 1) (1 2)) ((4 3) (0 2))
+    ((5 3) (4 2)) ((6 1) (1 0)) ((6 3) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 1 resp-reauth 2)
+    (enc ra-prime-2 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-1 (enc ra-prime k)))
+      (send (enc ra-prime-1 k))))
+  (label 343)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (6 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 rb-prime-0 ra-prime-0 ra-prime-1
+      text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 2 (k k) (ra-prime rb-prime)
+    (rb-prime rb-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-1) (tb tb) (a a) (b b)
+    (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 0)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 1)) ((3 1) (1 2)) ((4 3) (0 2))
+    ((5 3) (4 2)) ((6 0) (0 0)) ((6 2) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 2 keyserver 2)
+    (enc b ra-0 k tb (ltk a ks)) (6 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (cat (enc a k tb (ltk b ks)) rb-prime))
+      (send (cat rb-prime-0 (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-1))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-1 k)))))
+  (label 346)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (6 0)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra ra-prime rb-prime tb ra-0 rb rb-0 ra-prime-0 ra-prime-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb ra-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb ra-prime-1) (tb tb) (a a) (b b)
+    (ks ks))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((1 1) (4 2)) ((2 1) (1 0))
+    ((2 1) (4 0)) ((2 1) (5 0)) ((2 1) (6 1)) ((3 1) (2 0))
+    ((4 3) (1 2)) ((5 3) (4 2)) ((6 2) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra ra-prime rb-prime)
+  (operation encryption-test (displaced 7 1 resp-reauth 2) (enc rb-1 k)
+    (0 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra-0)) (send (cat b rb-0 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-1))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-1 k)))))
+  (label 353)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb ra-prime) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra-prime (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (6 2)) ((1 1) (5 2)) ((2 1) (4 0)) ((2 1) (5 0))
+    ((2 1) (6 0)) ((3 1) (2 0)) ((4 3) (1 2)) ((5 1) (1 0))
+    ((5 3) (4 2)) ((5 3) (6 2)) ((6 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 5 init-reauth 4)
+    (enc ra-prime-1 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-0 (enc ra-prime k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k))))
+  (label 356)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (5 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (6 1)) ((1 1) (5 2)) ((2 1) (4 0)) ((2 1) (5 0))
+    ((2 1) (6 1)) ((3 1) (2 0)) ((4 3) (1 2)) ((5 1) (1 0))
+    ((5 3) (4 2)) ((6 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 2 keyserver 2)
+    (enc b ra-1 k tb (ltk a ks)) (6 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-0 (enc ra-prime k)))
+      (send (enc ra-prime-0 k)))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 361)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (5 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb ra-prime-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (6 2)) ((1 1) (4 2)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((2 1) (5 1)) ((2 1) (6 0)) ((3 1) (2 0)) ((4 3) (1 2))
+    ((5 2) (4 2)) ((5 2) (6 2)) ((6 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 5 init 3) (enc ra-prime-1 k)
+    (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-0))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-0 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k))))
+  (label 364)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb ra-prime-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (6 2)) ((1 1) (4 2)) ((1 1) (6 2)) ((2 1) (4 0))
+    ((2 1) (5 1)) ((2 1) (6 0)) ((3 1) (2 0)) ((4 3) (1 2))
+    ((5 2) (4 2)) ((6 1) (1 0)) ((6 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 1 resp-reauth 2)
+    (enc ra-prime-1 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-0))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-0 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb (enc ra-prime k))) (send (enc rb k))))
+  (label 365)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (6 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb ra-prime-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (6 1)) ((1 1) (4 2)) ((2 1) (1 0)) ((2 1) (4 0))
+    ((2 1) (5 1)) ((2 1) (6 1)) ((3 1) (2 0)) ((4 3) (1 2))
+    ((5 2) (4 2)) ((6 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 2 keyserver 2)
+    (enc b ra-1 k tb (ltk a ks)) (6 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-0))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-0 k))))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 368)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb ra-prime-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (precedes ((0 1) (5 2)) ((1 1) (4 2)) ((2 1) (4 0)) ((2 1) (5 0))
+    ((2 1) (6 1)) ((3 1) (2 0)) ((4 1) (1 0)) ((4 3) (1 2))
+    ((5 3) (0 2)) ((6 2) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 2 keyserver 2)
+    (enc b ra-1 k tb (ltk a ks)) (6 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb-prime (enc ra-prime k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-0))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-0 k)))))
+  (label 373)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (4 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb rb-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (5 2)) ((1 1) (4 1)) ((1 1) (6 2)) ((2 1) (5 0))
+    ((2 1) (6 0)) ((3 1) (2 0)) ((4 2) (1 2)) ((5 3) (0 2))
+    ((6 1) (1 0)) ((6 3) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 1 resp-reauth 2)
+    (enc ra-prime-1 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-prime))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-0 (enc ra-prime k)))
+      (send (enc ra-prime-0 k))))
+  (label 376)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (6 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra rb ra-prime rb-prime tb ra-0 rb-0 rb-1 ra-prime-0 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb rb-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb ra-prime-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (precedes ((0 1) (5 2)) ((1 1) (4 1)) ((2 1) (1 0)) ((2 1) (5 0))
+    ((2 1) (6 1)) ((3 1) (2 0)) ((4 2) (1 2)) ((5 3) (0 2))
+    ((6 2) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 2 keyserver 2)
+    (enc b ra-1 k tb (ltk a ks)) (6 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-prime))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-0))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-0 k)))))
+  (label 379)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb ra-prime rb-prime rb ra-prime-0 ra-prime-1 ra-prime-2 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb ra-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-2)
+    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-2) (tb tb) (a a) (b b)
+    (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((1 1) (3 2)) ((2 1) (1 0))
+    ((2 1) (3 0)) ((2 1) (4 0)) ((2 1) (5 0)) ((2 1) (6 1))
+    ((3 3) (1 2)) ((4 3) (3 2)) ((5 3) (4 2)) ((6 0) (0 0))
+    ((6 2) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra ra-prime rb-prime)
+  (operation encryption-test (displaced 7 1 resp-reauth 2) (enc rb-0 k)
+    (0 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b ra-prime (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc ra-prime k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-2))
+      (recv (cat ra-prime-1 (enc ra-prime-2 k)))
+      (send (enc ra-prime-1 k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-2))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-2 k)))))
+  (label 386)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb ra-prime) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (6 0)) (ra-prime (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (5 2)) ((2 1) (3 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 0)) ((3 3) (1 2)) ((4 3) (3 2))
+    ((5 1) (1 0)) ((5 3) (4 2)) ((5 3) (6 2)) ((6 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 5 init-reauth 4)
+    (enc ra-prime-2 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-1 (enc ra-prime k)))
+      (send (enc ra-prime-1 k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat rb (enc ra-prime-1 k))) (send (enc rb k))))
+  (label 389)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (5 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (5 2)) ((2 1) (3 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 0)) ((3 3) (1 2)) ((4 3) (3 2))
+    ((4 3) (6 2)) ((5 1) (1 0)) ((5 3) (4 2)) ((6 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 4 init-reauth 4)
+    (enc ra-prime-2 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-1 (enc ra-prime k)))
+      (send (enc ra-prime-1 k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k))))
+  (label 390)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (5 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (5 2)) ((2 1) (3 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 1)) ((3 3) (1 2)) ((4 3) (3 2))
+    ((5 1) (1 0)) ((5 3) (4 2)) ((6 0) (0 0)) ((6 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 2 keyserver 2)
+    (enc b ra-0 k tb (ltk a ks)) (6 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-1 (enc ra-prime k)))
+      (send (enc ra-prime-1 k)))
+    ((send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 395)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (6 0)) (rb (0 1)) (ra-prime (5 1))
+    (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-1) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 1)) ((2 1) (6 0)) ((3 3) (1 2))
+    ((4 3) (3 2)) ((4 3) (6 2)) ((5 0) (0 0)) ((5 2) (4 2))
+    ((6 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 4 init-reauth 4)
+    (enc ra-prime-2 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-1))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-1 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k))))
+  (label 396)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (5 0)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-1) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 1)) ((2 1) (6 0)) ((3 3) (1 2))
+    ((4 3) (3 2)) ((5 0) (0 0)) ((5 2) (4 2)) ((5 2) (6 2))
+    ((6 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 5 init 3) (enc ra-prime-2 k)
+    (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-1))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-1 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat rb (enc ra-prime-1 k))) (send (enc rb k))))
+  (label 398)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (5 0)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-1) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((1 1) (6 2)) ((2 1) (3 0))
+    ((2 1) (4 0)) ((2 1) (5 1)) ((2 1) (6 0)) ((3 3) (1 2))
+    ((4 3) (3 2)) ((5 0) (0 0)) ((5 2) (4 2)) ((6 1) (1 0))
+    ((6 3) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 1 resp-reauth 2)
+    (enc ra-prime-2 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-1))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-1 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb (enc ra-prime k))) (send (enc rb k))))
+  (label 399)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (5 0)) (rb (0 1)) (ra-prime (6 1))
+    (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-1) (tb tb) (a a) (b b)
+    (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (4 2)) ((2 1) (3 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 1)) ((3 3) (1 2)) ((4 1) (1 0))
+    ((4 3) (3 2)) ((5 3) (0 2)) ((6 0) (0 0)) ((6 2) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 2 keyserver 2)
+    (enc b ra-0 k tb (ltk a ks)) (6 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-0 (enc ra-prime k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat rb (enc ra-prime-1 k))) (send (enc rb k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-1))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-1 k)))))
+  (label 403)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (6 0)) (rb (0 1)) (ra-prime (4 1))
+    (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (4 2)) ((2 1) (3 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 0)) ((3 3) (1 2)) ((4 1) (1 0))
+    ((4 3) (3 2)) ((4 3) (6 2)) ((5 3) (0 2)) ((6 3) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 4 init-reauth 4)
+    (enc ra-prime-2 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-0 (enc ra-prime k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat rb (enc ra-prime-1 k))) (send (enc rb k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat ra-prime-1 (enc ra-prime-0 k)))
+      (send (enc ra-prime-1 k))))
+  (label 404)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (rb (0 1)) (ra-prime (4 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (1 0)) ((2 1) (3 0))
+    ((2 1) (4 1)) ((2 1) (5 0)) ((2 1) (6 0)) ((3 3) (1 2))
+    ((4 0) (0 0)) ((4 2) (3 2)) ((4 2) (6 2)) ((5 3) (0 2))
+    ((6 3) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 4 init 3) (enc ra-prime-2 k)
+    (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-0))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-0 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat rb (enc ra-prime-1 k))) (send (enc rb k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat ra-prime-1 (enc ra-prime-0 k)))
+      (send (enc ra-prime-1 k))))
+  (label 411)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (4 0)) (rb (0 1)) (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0)
+    (rb-prime rb-prime) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((1 1) (6 2)) ((2 1) (3 0))
+    ((2 1) (4 1)) ((2 1) (5 0)) ((2 1) (6 0)) ((3 3) (1 2))
+    ((4 0) (0 0)) ((4 2) (3 2)) ((5 3) (0 2)) ((6 1) (1 0))
+    ((6 3) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 1 resp-reauth 2)
+    (enc ra-prime-2 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb-prime (enc ra-prime-0 k))) (send (enc rb-prime k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-0))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-0 k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat rb (enc ra-prime-1 k))) (send (enc rb k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-1 (enc ra-prime k)))
+      (send (enc ra-prime-1 k))))
+  (label 412)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (4 0)) (rb (0 1)) (ra-prime (6 1))
+    (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb ra-prime-1) (tb tb) (a a) (b b)
+    (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 2)) ((2 1) (3 0)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 1)) ((3 1) (1 0)) ((3 3) (1 2))
+    ((4 3) (0 2)) ((5 3) (4 2)) ((6 0) (0 0)) ((6 2) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 2 keyserver 2)
+    (enc b ra-0 k tb (ltk a ks)) (6 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat rb-prime (enc ra-prime k))) (send (enc rb-prime k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          ra-prime-1))
+      (send (cat (enc a k tb (ltk b ks)) (enc ra-prime-1 k)))))
+  (label 419)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (6 0)) (rb (0 1)) (ra-prime (3 1))
+    (rb-prime (1 1))))
+
+(defskeleton neuman-stubblebine-reauth
+  (vars (k skey)
+    (ra tb rb ra-prime rb-prime rb-0 ra-prime-0 ra-prime-1 text)
+    (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand resp-reauth 3 (k k) (ra-prime ra-prime) (rb-prime rb-prime)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb rb-prime) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-0) (rb-prime rb)
+    (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime-1)
+    (rb-prime ra-prime-0) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init-reauth 4 (k k) (ra-prime ra-prime)
+    (rb-prime ra-prime-1) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (2 0)) ((1 1) (3 1)) ((1 1) (6 2)) ((2 1) (4 0))
+    ((2 1) (5 0)) ((2 1) (6 0)) ((3 0) (0 0)) ((3 2) (1 2))
+    ((4 3) (0 2)) ((5 3) (4 2)) ((6 1) (1 0)) ((6 3) (5 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb ra-prime rb-prime)
+  (operation encryption-test (displaced 7 1 resp-reauth 2)
+    (enc ra-prime-2 k) (6 2))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat (enc a k tb (ltk b ks)) ra-prime))
+      (send (cat rb-prime (enc ra-prime k))) (recv (enc rb-prime k)))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((send (cat a ra))
+      (recv
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-prime))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb-prime k))))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-0))
+      (recv (cat rb (enc ra-prime-0 k))) (send (enc rb k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime-1))
+      (recv (cat ra-prime-0 (enc ra-prime-1 k)))
+      (send (enc ra-prime-0 k)))
+    ((recv (enc a k tb (ltk b ks)))
+      (send (cat (enc a k tb (ltk b ks)) ra-prime))
+      (recv (cat ra-prime-1 (enc ra-prime k)))
+      (send (enc ra-prime-1 k))))
+  (label 422)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((ra ra) (tb tb) (rb rb) (a a) (b b) (ks ks) (k k)
+        (ra-prime ra-prime) (rb-prime rb-prime) (tb-0 tb))))
+  (origs (k (2 1)) (ra (3 0)) (rb (0 1)) (ra-prime (6 1))
+    (rb-prime (1 1))))
+
+(comment "Strand bound exceeded--aborting run")
diff --git a/tst/neuman-stubblebine.tst b/tst/neuman-stubblebine.tst
--- a/tst/neuman-stubblebine.tst
+++ b/tst/neuman-stubblebine.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/neuman-stubblebine.scm")
 
 (defprotocol neuman-stubblebine basic
@@ -48,6 +48,7 @@
   (uniq-orig k ra rb)
   (operation encryption-test (added-strand keyserver 2)
     (enc b ra k tb (ltk a ks)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat a ra))
       (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
@@ -71,6 +72,7 @@
   (uniq-orig k ra rb)
   (operation encryption-test (added-strand resp 2)
     (enc a ra tb (ltk b ks)) (1 0))
+  (strand-map 0 1)
   (traces
     ((send (cat a ra))
       (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
@@ -134,6 +136,7 @@
   (uniq-orig k ra rb)
   (operation encryption-test (added-strand keyserver 2)
     (enc a k tb (ltk b ks)) (0 2))
+  (strand-map 0)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -156,6 +159,7 @@
   (uniq-orig k ra rb)
   (operation encryption-test (displaced 2 0 resp 2)
     (enc a ra-0 tb (ltk b ks)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -178,6 +182,7 @@
   (uniq-orig k ra rb)
   (operation encryption-test (added-strand resp 2)
     (enc a ra-0 tb (ltk b ks)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -204,6 +209,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -230,6 +236,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -256,6 +263,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb)
   (operation encryption-test (added-strand init 3) (enc rb k) (0 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -285,6 +293,7 @@
   (non-orig (ltk a ks) (ltk b ks))
   (uniq-orig k ra rb)
   (operation encryption-test (added-listener k) (enc rb k) (0 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -311,6 +320,7 @@
   (uniq-orig k ra rb)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (2 1) (enc a k tb (ltk b ks)) (enc b ra k tb (ltk a ks)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -338,6 +348,7 @@
   (uniq-orig k ra rb)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (ks-0 ks) (tb-0 tb))
     k (3 1) (enc a k tb (ltk b ks)) (enc b ra-0 k tb (ltk a ks)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -366,6 +377,7 @@
   (uniq-orig k ra rb)
   (operation encryption-test (displaced 3 1 keyserver 2)
     (enc b ra-0 k tb (ltk a ks)) (2 1))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -394,6 +406,7 @@
   (uniq-orig k ra rb)
   (operation encryption-test (displaced 4 1 keyserver 2)
     (enc b ra-1 k tb (ltk a ks)) (3 1))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
       (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
@@ -463,6 +476,7 @@
   (uniq-orig k ra rb)
   (operation encryption-test (added-strand resp 2)
     (enc a ra tb (ltk b ks)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (cat b rb (enc a ra tb (ltk b ks))))
       (send
diff --git a/tst/neuman-stubblebine_shapes.tst b/tst/neuman-stubblebine_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/neuman-stubblebine_shapes.tst
@@ -0,0 +1,229 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/neuman-stubblebine.scm")
+
+(defprotocol neuman-stubblebine basic
+  (defrole init
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (defrole resp
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (defrole keyserver
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton neuman-stubblebine
+  (vars (k skey) (ra rb tb text) (a b ks name))
+  (defstrand init 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra rb)
+  (traces
+    ((send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (ra (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton neuman-stubblebine
+  (vars (k skey) (ra rb tb rb-0 rb-1 text) (a b ks name))
+  (defstrand init 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb)
+  (operation encryption-test (added-strand resp 2)
+    (enc a ra tb (ltk b ks)) (1 0))
+  (traces
+    ((send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((recv (cat a ra)) (send (cat b rb-1 (enc a ra tb (ltk b ks))))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (ra ra) (rb rb) (k k) (tb tb))))
+  (origs (k (1 1)) (ra (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol neuman-stubblebine basic
+  (defrole init
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (defrole resp
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (defrole keyserver
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton neuman-stubblebine
+  (vars (k skey) (ra rb tb text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig ra rb)
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 3)
+  (unrealized (0 2))
+  (origs (rb (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton neuman-stubblebine
+  (vars (k skey) (ra rb tb rb-0 text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand init 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (1 0)) ((1 1) (2 1)) ((2 0) (0 0)) ((2 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb)
+  (operation encryption-test (displaced 3 1 keyserver 2)
+    (enc b ra-0 k tb (ltk a ks)) (2 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat b rb-0 (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb-0)))
+    ((send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 13)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (ra ra) (rb rb) (k k) (tb tb))))
+  (origs (k (1 1)) (ra (2 0)) (rb (0 1))))
+
+(defskeleton neuman-stubblebine
+  (vars (k skey) (ra rb tb ra-0 rb-0 rb-1 text) (a b ks name))
+  (defstrand resp 3 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (defstrand keyserver 2 (k k) (ra ra-0) (rb rb-0) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra-0) (rb rb-1) (tb tb) (a a) (b b) (ks ks))
+  (defstrand init 3 (k k) (ra ra-0) (rb rb) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((0 1) (3 1)) ((1 1) (3 1)) ((2 1) (1 0)) ((3 2) (0 2)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb)
+  (operation encryption-test (displaced 4 1 keyserver 2)
+    (enc b ra-1 k tb (ltk a ks)) (3 1))
+  (traces
+    ((recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k))))
+    ((recv (cat b rb-0 (enc a ra-0 tb (ltk b ks))))
+      (send
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks))
+          rb-0)))
+    ((recv (cat a ra-0)) (send (cat b rb-1 (enc a ra-0 tb (ltk b ks)))))
+    ((send (cat a ra-0))
+      (recv
+        (cat (enc b ra-0 k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (label 14)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (ra ra) (rb rb) (k k) (tb tb))))
+  (origs (k (1 1)) (rb (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol neuman-stubblebine basic
+  (defrole init
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (send (cat a ra))
+      (recv (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))
+      (send (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (defrole resp
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat a ra)) (send (cat b rb (enc a ra tb (ltk b ks))))
+      (recv (cat (enc a k tb (ltk b ks)) (enc rb k)))))
+  (defrole keyserver
+    (vars (a b ks name) (ra rb text) (k skey) (tb text))
+    (trace (recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton neuman-stubblebine
+  (vars (k skey) (ra rb tb text) (a b ks name))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b)
+    (ks ks))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb)
+  (traces
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb))))
+  (label 15)
+  (unrealized (0 0))
+  (origs (k (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton neuman-stubblebine
+  (vars (k skey) (ra rb tb rb-0 text) (a b ks name))
+  (defstrand keyserver 2 (k k) (ra ra) (rb rb) (tb tb) (a a) (b b)
+    (ks ks))
+  (defstrand resp 2 (ra ra) (rb rb-0) (tb tb) (a a) (b b) (ks ks))
+  (precedes ((1 1) (0 0)))
+  (non-orig (ltk a ks) (ltk b ks))
+  (uniq-orig k ra rb)
+  (operation encryption-test (added-strand resp 2)
+    (enc a ra tb (ltk b ks)) (0 0))
+  (traces
+    ((recv (cat b rb (enc a ra tb (ltk b ks))))
+      (send
+        (cat (enc b ra k tb (ltk a ks)) (enc a k tb (ltk b ks)) rb)))
+    ((recv (cat a ra)) (send (cat b rb-0 (enc a ra tb (ltk b ks))))))
+  (label 16)
+  (parent 15)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (ks ks) (ra ra) (rb rb) (k k) (tb tb))))
+  (origs (k (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/no_contraction.tst b/tst/no_contraction.tst
--- a/tst/no_contraction.tst
+++ b/tst/no_contraction.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/no_contraction.scm")
 
 (defprotocol no-contraction basic
@@ -53,6 +53,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 2 1 init 1) (enc n (privk a-0))
     (0 0))
+  (strand-map 0 1)
   (traces ((recv (enc n (privk a))))
     ((send (enc (enc n (privk a)) (pubk b)))))
   (label 2)
diff --git a/tst/no_contraction_shapes.tst b/tst/no_contraction_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/no_contraction_shapes.tst
@@ -0,0 +1,54 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/no_contraction.scm")
+
+(defprotocol no-contraction basic
+  (defrole init
+    (vars (a b name) (n text))
+    (trace (send (enc (enc n (privk a)) (pubk b)))))
+  (defrole resp
+    (vars (a name) (n text))
+    (trace (recv (enc n (privk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton no-contraction
+  (vars (n text) (a a-0 b name))
+  (defstrand resp 1 (n n) (a a))
+  (defstrand init 1 (n n) (a a-0) (b b))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (traces ((recv (enc n (privk a))))
+    ((send (enc (enc n (privk a-0)) (pubk b)))))
+  (label 0)
+  (unrealized (0 0))
+  (preskeleton)
+  (origs (n (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton no-contraction
+  (vars (n text) (a b name))
+  (defstrand resp 1 (n n) (a a))
+  (defstrand init 1 (n n) (a a) (b b))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (operation encryption-test (displaced 2 1 init 1) (enc n (privk a-0))
+    (0 0))
+  (traces ((recv (enc n (privk a))))
+    ((send (enc (enc n (privk a)) (pubk b)))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (n n) (a-0 a) (b b))))
+  (origs (n (1 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/non_transforming.tst b/tst/non_transforming.tst
--- a/tst/non_transforming.tst
+++ b/tst/non_transforming.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/non_transforming.scm")
 
 (defprotocol non_transforming basic
@@ -44,6 +44,7 @@
   (non-orig (privk B0))
   (uniq-orig a d)
   (operation collapsed 2 1)
+  (strand-map 0 1 1)
   (traces ((recv (enc a (pubk B))) (recv (enc d (pubk B))))
     ((send (enc a d (pubk B0)))))
   (label 1)
@@ -62,6 +63,7 @@
   (uniq-orig a b c d)
   (operation nonce-test (added-strand breaker 2) a (0 0)
     (enc a d (pubk B0)))
+  (strand-map 0 1 2)
   (traces ((recv (enc a (pubk B))) (recv (enc b (pubk B))))
     ((send (enc a d (pubk B0)))) ((send (enc c b (pubk B1))))
     ((recv (enc a d (pubk B0))) (send (enc a (pubk B0)))))
@@ -80,6 +82,7 @@
   (uniq-orig a d)
   (operation nonce-test (added-strand breaker 2) a (0 0)
     (enc a d (pubk B0)))
+  (strand-map 0 1)
   (traces ((recv (enc a (pubk B))) (recv (enc d (pubk B))))
     ((send (enc a d (pubk B0))))
     ((recv (enc a d (pubk B0))) (send (enc a (pubk B0)))))
@@ -100,6 +103,7 @@
   (uniq-orig a b c d)
   (operation nonce-test (contracted (B B0)) a (0 0) (enc a (pubk B0))
     (enc a d (pubk B0)))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc a (pubk B0))) (recv (enc b (pubk B0))))
     ((send (enc a d (pubk B0)))) ((send (enc c b (pubk B1))))
     ((recv (enc a d (pubk B0))) (send (enc a (pubk B0)))))
@@ -118,6 +122,7 @@
   (uniq-orig a d)
   (operation nonce-test (contracted (B B0)) a (0 0) (enc a (pubk B0))
     (enc a d (pubk B0)))
+  (strand-map 0 1 2)
   (traces ((recv (enc a (pubk B0))) (recv (enc d (pubk B0))))
     ((send (enc a d (pubk B0))))
     ((recv (enc a d (pubk B0))) (send (enc a (pubk B0)))))
@@ -139,6 +144,7 @@
   (uniq-orig a b c d)
   (operation nonce-test (added-strand breaker 3) b (0 1)
     (enc c b (pubk B1)))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc a (pubk B0))) (recv (enc b (pubk B0))))
     ((send (enc a d (pubk B0)))) ((send (enc c b (pubk B1))))
     ((recv (enc a d (pubk B0))) (send (enc a (pubk B0))))
@@ -161,6 +167,7 @@
   (uniq-orig a c d)
   (operation nonce-test (added-strand breaker 2) c (0 1)
     (enc c c (pubk B1)))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc a (pubk B0))) (recv (enc c (pubk B0))))
     ((send (enc a d (pubk B0)))) ((send (enc c c (pubk B1))))
     ((recv (enc a d (pubk B0))) (send (enc a (pubk B0))))
@@ -180,6 +187,7 @@
   (uniq-orig a d)
   (operation nonce-test (displaced 2 3 breaker 3) d (0 1)
     (enc a d (pubk B0)))
+  (strand-map 0 1 2)
   (traces ((recv (enc a (pubk B0))) (recv (enc d (pubk B0))))
     ((send (enc a d (pubk B0))))
     ((recv (enc a d (pubk B0))) (send (enc a (pubk B0)))
@@ -202,6 +210,7 @@
   (uniq-orig a d)
   (operation nonce-test (added-strand breaker 3) d (0 1)
     (enc a d (pubk B0)))
+  (strand-map 0 1 2)
   (traces ((recv (enc a (pubk B0))) (recv (enc d (pubk B0))))
     ((send (enc a d (pubk B0))))
     ((recv (enc a d (pubk B0))) (send (enc a (pubk B0))))
@@ -224,6 +233,7 @@
   (uniq-orig a)
   (operation nonce-test (displaced 3 2 breaker 2) a (0 1)
     (enc a a (pubk B0)))
+  (strand-map 0 1 2)
   (traces ((recv (enc a (pubk B0))) (recv (enc a (pubk B0))))
     ((send (enc a a (pubk B0))))
     ((recv (enc a a (pubk B0))) (send (enc a (pubk B0)))))
@@ -246,6 +256,7 @@
   (uniq-orig a b c d)
   (operation nonce-test (contracted (B0 B1)) b (0 1) (enc b (pubk B1))
     (enc c b (pubk B1)))
+  (strand-map 0 1 2 3 4)
   (traces ((recv (enc a (pubk B1))) (recv (enc b (pubk B1))))
     ((send (enc a d (pubk B1)))) ((send (enc c b (pubk B1))))
     ((recv (enc a d (pubk B1))) (send (enc a (pubk B1))))
@@ -270,6 +281,7 @@
   (uniq-orig a c d)
   (operation nonce-test (contracted (B0 B1)) c (0 1) (enc c (pubk B1))
     (enc c c (pubk B1)))
+  (strand-map 0 1 2 3 4)
   (traces ((recv (enc a (pubk B1))) (recv (enc c (pubk B1))))
     ((send (enc a d (pubk B1)))) ((send (enc c c (pubk B1))))
     ((recv (enc a d (pubk B1))) (send (enc a (pubk B1))))
diff --git a/tst/non_transforming_shapes.tst b/tst/non_transforming_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/non_transforming_shapes.tst
@@ -0,0 +1,154 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/non_transforming.scm")
+
+(defprotocol non_transforming basic
+  (defrole sender
+    (vars (a b text) (B name))
+    (trace (send (enc a b (pubk B))))
+    (non-orig (privk B))
+    (uniq-orig a b))
+  (defrole recv
+    (vars (a b text) (B name))
+    (trace (recv (enc a (pubk B))) (recv (enc b (pubk B)))))
+  (defrole breaker
+    (vars (a b text) (B name))
+    (trace (recv (enc a b (pubk B))) (send (enc a (pubk B)))
+      (send (enc b (pubk B)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton non_transforming
+  (vars (a b c d text) (B B0 B1 name))
+  (defstrand recv 2 (a a) (b b) (B B))
+  (defstrand sender 1 (a a) (b d) (B B0))
+  (defstrand sender 1 (a c) (b b) (B B1))
+  (precedes ((1 0) (0 0)) ((2 0) (0 1)))
+  (non-orig (privk B0) (privk B1))
+  (uniq-orig a b c d)
+  (traces ((recv (enc a (pubk B))) (recv (enc b (pubk B))))
+    ((send (enc a d (pubk B0)))) ((send (enc c b (pubk B1)))))
+  (label 0)
+  (unrealized (0 0) (0 1))
+  (origs (c (2 0)) (d (1 0)) (a (1 0)) (b (2 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton non_transforming
+  (vars (a d text) (B0 name))
+  (defstrand recv 2 (a a) (b d) (B B0))
+  (defstrand sender 1 (a a) (b d) (B B0))
+  (defstrand breaker 3 (a a) (b d) (B B0))
+  (precedes ((1 0) (2 0)) ((2 1) (0 0)) ((2 2) (0 1)))
+  (non-orig (privk B0))
+  (uniq-orig a d)
+  (operation nonce-test (displaced 2 3 breaker 3) d (0 1)
+    (enc a d (pubk B0)))
+  (traces ((recv (enc a (pubk B0))) (recv (enc d (pubk B0))))
+    ((send (enc a d (pubk B0))))
+    ((recv (enc a d (pubk B0))) (send (enc a (pubk B0)))
+      (send (enc d (pubk B0)))))
+  (label 8)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1 1) ((a a) (b d) (c a) (d d) (B B0) (B0 B0) (B1 B0))))
+  (origs (a (1 0)) (d (1 0))))
+
+(defskeleton non_transforming
+  (vars (a d text) (B0 name))
+  (defstrand recv 2 (a a) (b d) (B B0))
+  (defstrand sender 1 (a a) (b d) (B B0))
+  (defstrand breaker 2 (a a) (b d) (B B0))
+  (defstrand breaker 3 (a a) (b d) (B B0))
+  (precedes ((1 0) (2 0)) ((1 0) (3 0)) ((2 1) (0 0)) ((3 2) (0 1)))
+  (non-orig (privk B0))
+  (uniq-orig a d)
+  (operation nonce-test (added-strand breaker 3) d (0 1)
+    (enc a d (pubk B0)))
+  (traces ((recv (enc a (pubk B0))) (recv (enc d (pubk B0))))
+    ((send (enc a d (pubk B0))))
+    ((recv (enc a d (pubk B0))) (send (enc a (pubk B0))))
+    ((recv (enc a d (pubk B0))) (send (enc a (pubk B0)))
+      (send (enc d (pubk B0)))))
+  (label 9)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1 1) ((a a) (b d) (c a) (d d) (B B0) (B0 B0) (B1 B0))))
+  (origs (a (1 0)) (d (1 0))))
+
+(defskeleton non_transforming
+  (vars (a text) (B0 name))
+  (defstrand recv 2 (a a) (b a) (B B0))
+  (defstrand sender 1 (a a) (b a) (B B0))
+  (defstrand breaker 2 (a a) (b a) (B B0))
+  (precedes ((1 0) (2 0)) ((2 1) (0 0)))
+  (non-orig (privk B0))
+  (uniq-orig a)
+  (operation nonce-test (displaced 3 2 breaker 2) a (0 1)
+    (enc a a (pubk B0)))
+  (traces ((recv (enc a (pubk B0))) (recv (enc a (pubk B0))))
+    ((send (enc a a (pubk B0))))
+    ((recv (enc a a (pubk B0))) (send (enc a (pubk B0)))))
+  (label 10)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1 1) ((a a) (b a) (c a) (d a) (B B0) (B0 B0) (B1 B0))))
+  (origs (a (1 0))))
+
+(defskeleton non_transforming
+  (vars (a b c d text) (B1 name))
+  (defstrand recv 2 (a a) (b b) (B B1))
+  (defstrand sender 1 (a a) (b d) (B B1))
+  (defstrand sender 1 (a c) (b b) (B B1))
+  (defstrand breaker 2 (a a) (b d) (B B1))
+  (defstrand breaker 3 (a c) (b b) (B B1))
+  (precedes ((1 0) (3 0)) ((2 0) (4 0)) ((3 1) (0 0)) ((4 2) (0 1)))
+  (non-orig (privk B1))
+  (uniq-orig a b c d)
+  (operation nonce-test (contracted (B0 B1)) b (0 1) (enc b (pubk B1))
+    (enc c b (pubk B1)))
+  (traces ((recv (enc a (pubk B1))) (recv (enc b (pubk B1))))
+    ((send (enc a d (pubk B1)))) ((send (enc c b (pubk B1))))
+    ((recv (enc a d (pubk B1))) (send (enc a (pubk B1))))
+    ((recv (enc c b (pubk B1))) (send (enc c (pubk B1)))
+      (send (enc b (pubk B1)))))
+  (label 11)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1 2) ((a a) (b b) (c c) (d d) (B B1) (B0 B1) (B1 B1))))
+  (origs (c (2 0)) (d (1 0)) (a (1 0)) (b (2 0))))
+
+(defskeleton non_transforming
+  (vars (a c d text) (B1 name))
+  (defstrand recv 2 (a a) (b c) (B B1))
+  (defstrand sender 1 (a a) (b d) (B B1))
+  (defstrand sender 1 (a c) (b c) (B B1))
+  (defstrand breaker 2 (a a) (b d) (B B1))
+  (defstrand breaker 2 (a c) (b c) (B B1))
+  (precedes ((1 0) (3 0)) ((2 0) (4 0)) ((3 1) (0 0)) ((4 1) (0 1)))
+  (non-orig (privk B1))
+  (uniq-orig a c d)
+  (operation nonce-test (contracted (B0 B1)) c (0 1) (enc c (pubk B1))
+    (enc c c (pubk B1)))
+  (traces ((recv (enc a (pubk B1))) (recv (enc c (pubk B1))))
+    ((send (enc a d (pubk B1)))) ((send (enc c c (pubk B1))))
+    ((recv (enc a d (pubk B1))) (send (enc a (pubk B1))))
+    ((recv (enc c c (pubk B1))) (send (enc c (pubk B1)))))
+  (label 12)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1 2) ((a a) (b c) (c c) (d d) (B B1) (B0 B1) (B1 B1))))
+  (origs (c (2 0)) (d (1 0)) (a (1 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/nonaug-prune.tst b/tst/nonaug-prune.tst
--- a/tst/nonaug-prune.tst
+++ b/tst/nonaug-prune.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/nonaug-prune.scm")
 
 (defprotocol nonaug-prune basic
@@ -46,11 +46,16 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation collapsed 1 0)
+  (strand-map 0 0 1)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k))))
   (label 1)
   (parent 0)
   (seen 2)
+  (seen-ops
+    (2
+      (operation nonce-test (added-strand trans2 2) n (1 2) (enc n B k)
+        (enc n B B k)) (strand-map 1 2)))
   (unrealized (0 0) (1 2))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -64,6 +69,7 @@
   (uniq-orig n)
   (operation nonce-test (displaced 3 0 trans2 2) n (2 2) (enc n A k)
     (enc n B B k))
+  (strand-map 0 1 2)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k))))
@@ -84,6 +90,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand trans1 3) n (2 2) (enc n B k)
     (enc n B B k))
+  (strand-map 0 1 2)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k)))
@@ -103,6 +110,7 @@
   (uniq-orig n)
   (operation nonce-test (displaced 3 1 trans2 2) n (2 2) (enc n A k)
     (enc n B B k))
+  (strand-map 0 1 2)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n B B k)) (send (enc n A k)) (recv (enc n A A A k))))
@@ -123,6 +131,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand trans2 2) n (2 2) (enc n A k)
     (enc n B B k))
+  (strand-map 0 1 2)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n B B k)) (send (enc n A k)) (recv (enc n A A A k)))
@@ -142,6 +151,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand trans1 3) n (1 2) (enc n B k)
     (enc n B B k))
+  (strand-map 0 1)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k)))
     ((recv (enc n B B k)) (recv (enc n B k)) (send (enc n n C k))))
@@ -160,6 +170,7 @@
   (uniq-orig n)
   (operation nonce-test (displaced 2 0 trans2 2) n (1 2) (enc n B k)
     (enc n B B k))
+  (strand-map 0 1)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k))))
   (label 7)
@@ -176,6 +187,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 3 2 orig 2) n (1 0) (enc n B B k))
+  (strand-map 0 1 2)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k))))
@@ -196,6 +208,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 4 2 orig 2) n (3 1) (enc n B B k))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k)))
@@ -214,6 +227,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 3 2 orig 2) n (1 0) (enc n B B k))
+  (strand-map 0 1 2)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n B B k)) (send (enc n A k)) (recv (enc n A A A k))))
@@ -233,6 +247,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 4 2 orig 2) n (3 0) (enc n B B k))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n B B k)) (send (enc n A k)) (recv (enc n A A A k)))
@@ -251,12 +266,17 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 3 1 orig 2) n (2 1) (enc n B B k))
+  (strand-map 0 1 2)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k)))
     ((recv (enc n B B k)) (recv (enc n B k)) (send (enc n n C k))))
   (label 12)
   (parent 6)
   (seen 16)
+  (seen-ops
+    (16
+      (operation nonce-test (added-strand trans2 2) n (1 2) (enc n B k)
+        (enc n n C k) (enc n B B k)) (strand-map 0 2 3)))
   (unrealized (0 0) (1 2))
   (origs (n (1 0)))
   (comment "3 in cohort - 2 not yet seen"))
@@ -269,6 +289,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 2 1 orig 2) n (0 0) (enc n B B k))
+  (strand-map 0 1)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k))))
   (label 13)
@@ -287,6 +308,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 3 2 orig 2) n (0 0) (enc n B B k))
+  (strand-map 0 1 2)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k))))
@@ -310,6 +332,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand trans1 3) n (2 2) (enc n B k)
     (enc n n C k) (enc n B B k))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k)))
@@ -318,6 +341,10 @@
   (label 15)
   (parent 9)
   (seen 9)
+  (seen-ops
+    (9
+      (operation nonce-test (displaced 5 2 orig 2) n (4 1)
+        (enc n B B k)) (strand-map 0 1 2 3 3)))
   (unrealized (0 0) (1 0) (2 2) (4 1))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -333,6 +360,7 @@
   (uniq-orig n)
   (operation nonce-test (displaced 4 1 trans2 2) n (2 2) (enc n B k)
     (enc n n C k) (enc n B B k))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k)))
@@ -355,6 +383,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand trans2 2) n (2 2) (enc n B k)
     (enc n n C k) (enc n B B k))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k)))
@@ -374,12 +403,17 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 3 2 orig 2) n (0 0) (enc n B B k))
+  (strand-map 0 1 2)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n B B k)) (send (enc n A k)) (recv (enc n A A A k))))
   (label 18)
   (parent 10)
   (seen 14)
+  (seen-ops
+    (14
+      (operation nonce-test (contracted (B A)) n (0 0) (enc n A k)
+        (enc n A A k)) (strand-map 1 0 2)))
   (unrealized (0 0))
   (origs (n (2 0)))
   (comment "3 in cohort - 2 not yet seen"))
@@ -394,6 +428,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 4 2 orig 2) n (1 0) (enc n B B k))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n B B k)) (send (enc n A k)) (recv (enc n A A A k)))
@@ -415,6 +450,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand trans1 3) n (1 2) (enc n B k)
     (enc n n C k) (enc n B B k))
+  (strand-map 0 1 2)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k)))
     ((recv (enc n B B k)) (recv (enc n B k)) (send (enc n n C k)))
@@ -422,6 +458,10 @@
   (label 20)
   (parent 12)
   (seen 12)
+  (seen-ops
+    (12
+      (operation nonce-test (displaced 4 1 orig 2) n (3 1)
+        (enc n B B k)) (strand-map 0 1 2 2)))
   (unrealized (0 0) (1 2) (3 1))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -436,6 +476,7 @@
   (uniq-orig n)
   (operation nonce-test (displaced 3 0 trans2 2) n (1 2) (enc n B k)
     (enc n n C k) (enc n B B k))
+  (strand-map 0 1 2)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k)))
     ((recv (enc n B B k)) (recv (enc n B k)) (send (enc n n C k))))
@@ -456,6 +497,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 4 2 orig 2) n (1 0) (enc n B B k))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k)))
@@ -477,6 +519,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 5 2 orig 2) n (4 0) (enc n B B k))
+  (strand-map 0 1 2 3 4)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k)))
@@ -497,6 +540,7 @@
   (uniq-orig n)
   (operation nonce-test (displaced 3 1 trans2 2) n (0 0) (enc n A k)
     (enc n B B k))
+  (strand-map 0 1 2)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n B B k)) (send (enc n A k)) (recv (enc n A A A k))))
@@ -518,6 +562,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand trans2 2) n (0 0) (enc n A k)
     (enc n B B k))
+  (strand-map 0 1 2)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n B B k)) (send (enc n A k)) (recv (enc n A A A k)))
@@ -537,6 +582,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 4 2 orig 2) n (0 0) (enc n B B k))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n B B k)) (send (enc n A k)) (recv (enc n A A A k)))
@@ -544,6 +590,10 @@
   (label 26)
   (parent 19)
   (seen 31)
+  (seen-ops
+    (31
+      (operation nonce-test (displaced 4 1 trans2 2) n (0 0) (enc n A k)
+        (enc n B B k)) (strand-map 0 3 2 1)))
   (unrealized (0 0))
   (comment "4 in cohort - 3 not yet seen"))
 
@@ -557,12 +607,15 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 3 1 orig 2) n (0 0) (enc n B B k))
+  (strand-map 0 1 2)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k)))
     ((recv (enc n B B k)) (recv (enc n B k)) (send (enc n n C k))))
   (label 27)
   (parent 21)
   (seen 13)
+  (seen-ops
+    (13 (operation generalization deleted (2 0)) (strand-map 0 1)))
   (realized)
   (origs (n (1 0)))
   (comment "1 in cohort - 0 not yet seen"))
@@ -578,6 +631,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 4 2 orig 2) n (0 0) (enc n B B k))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k)))
@@ -585,6 +639,8 @@
   (label 28)
   (parent 22)
   (seen 14)
+  (seen-ops
+    (14 (operation generalization deleted (3 0)) (strand-map 1 0 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -600,6 +656,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 5 2 orig 2) n (1 0) (enc n B B k))
+  (strand-map 0 1 2 3 4)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k)))
@@ -620,12 +677,16 @@
   (uniq-orig n)
   (operation nonce-test (contracted (B A)) n (0 0) (enc n A k)
     (enc n A A k) (enc n A A A k))
+  (strand-map 0 1 2)
   (traces ((recv (enc n A k)) (send (enc n A A A k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n A A k)) (send (enc n A k)) (recv (enc n A A A k))))
   (label 30)
   (parent 24)
   (seen 14)
+  (seen-ops
+    (14 (operation generalization weakened ((1 1) (0 0)))
+      (strand-map 1 0 2)))
   (realized)
   (origs (n (2 0)))
   (comment "1 in cohort - 0 not yet seen"))
@@ -640,6 +701,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 4 2 orig 2) n (3 0) (enc n B B k))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n B B k)) (send (enc n A k)) (recv (enc n A A A k)))
@@ -660,6 +722,7 @@
   (uniq-orig n)
   (operation nonce-test (contracted (B A)) n (0 0) (enc n A k)
     (enc n A A k))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc n A k)) (send (enc n A A A k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n A A k)) (send (enc n A k)) (recv (enc n A A A k)))
@@ -682,6 +745,7 @@
   (uniq-orig n)
   (operation nonce-test (displaced 4 3 trans2 2) n (0 0) (enc n A k)
     (enc n B B k))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n B B k)) (send (enc n A k)) (recv (enc n A A A k)))
@@ -704,6 +768,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand trans2 2) n (0 0) (enc n A k)
     (enc n B B k))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n B B k)) (send (enc n A k)) (recv (enc n A A A k)))
@@ -726,6 +791,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 5 2 orig 2) n (0 0) (enc n B B k))
+  (strand-map 0 1 2 3 4)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n B k)) (send (enc n B B B k)))
     ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k)))
@@ -734,6 +800,8 @@
   (label 35)
   (parent 29)
   (seen 32)
+  (seen-ops
+    (32 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -748,6 +816,7 @@
   (uniq-orig n)
   (operation nonce-test (contracted (B A)) n (0 0) (enc n A k)
     (enc n A A k) (enc n A A A k))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc n A k)) (send (enc n A A A k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n A A k)) (send (enc n A k)) (recv (enc n A A A k)))
@@ -755,6 +824,8 @@
   (label 36)
   (parent 31)
   (seen 14)
+  (seen-ops
+    (14 (operation generalization deleted (3 0)) (strand-map 1 0 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -769,6 +840,7 @@
   (uniq-orig n)
   (operation nonce-test (contracted (B A)) n (0 0) (enc n A k)
     (enc n A A k) (enc n A A A k))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc n A k)) (send (enc n A A A k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n A A k)) (send (enc n A k)) (recv (enc n A A A k)))
@@ -776,6 +848,9 @@
   (label 37)
   (parent 33)
   (seen 32)
+  (seen-ops
+    (32 (operation generalization weakened ((3 1) (0 0)))
+      (strand-map 0 1 2 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -791,6 +866,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (displaced 5 2 orig 2) n (4 0) (enc n B B k))
+  (strand-map 0 1 2 3 4)
   (traces ((recv (enc n B k)) (send (enc n B B B k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n B B k)) (send (enc n A k)) (recv (enc n A A A k)))
@@ -814,6 +890,7 @@
   (uniq-orig n)
   (operation nonce-test (contracted (B A)) n (0 0) (enc n A k)
     (enc n A A k) (enc n A A A k))
+  (strand-map 0 1 2 3 4)
   (traces ((recv (enc n A k)) (send (enc n A A A k)))
     ((recv (enc n A k)) (send (enc n A A A k)))
     ((send (enc n A A k)) (send (enc n A k)) (recv (enc n A A A k)))
@@ -822,6 +899,8 @@
   (label 39)
   (parent 38)
   (seen 32)
+  (seen-ops
+    (32 (operation generalization deleted (4 0)) (strand-map 0 1 2 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/nonaug-prune_shapes.tst b/tst/nonaug-prune_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/nonaug-prune_shapes.tst
@@ -0,0 +1,103 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/nonaug-prune.scm")
+
+(defprotocol nonaug-prune basic
+  (defrole orig
+    (vars (n text) (A B name) (k akey))
+    (trace (send (enc n B B k)) (send (enc n A k))
+      (recv (enc n A A A k)))
+    (non-orig (invk k))
+    (uniq-orig n))
+  (defrole trans1
+    (vars (n text) (A C name) (k akey))
+    (trace (recv (enc n A A k)) (recv (enc n A k))
+      (send (enc n n C k))))
+  (defrole trans2
+    (vars (n text) (A name) (k akey))
+    (trace (recv (enc n A k)) (send (enc n A A A k))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton nonaug-prune
+  (vars (n text) (k akey) (A B name))
+  (defstrand trans2 2 (n n) (k k) (A B))
+  (defstrand trans2 2 (n n) (k k) (A A))
+  (defstrand orig 3 (n n) (k k) (A A) (B B))
+  (precedes ((2 0) (0 0)) ((2 0) (1 0)))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (traces ((recv (enc n B k)) (send (enc n B B B k)))
+    ((recv (enc n A k)) (send (enc n A A A k)))
+    ((send (enc n B B k)) (send (enc n A k)) (recv (enc n A A A k))))
+  (label 0)
+  (unrealized (0 0) (1 0) (2 2))
+  (origs (n (2 0)))
+  (comment "4 in cohort - 4 not yet seen"))
+
+(defskeleton nonaug-prune
+  (vars (n text) (k akey) (B name))
+  (defstrand trans2 2 (n n) (k k) (A B))
+  (defstrand orig 3 (n n) (k k) (A B) (B B))
+  (precedes ((0 1) (1 2)) ((1 1) (0 0)))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (operation nonce-test (displaced 2 1 orig 2) n (0 0) (enc n B B k))
+  (traces ((recv (enc n B k)) (send (enc n B B B k)))
+    ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k))))
+  (label 13)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 0 1) ((n n) (A B) (B B) (k k))))
+  (origs (n (1 0))))
+
+(defskeleton nonaug-prune
+  (vars (n text) (k akey) (B name))
+  (defstrand trans2 2 (n n) (k k) (A B))
+  (defstrand trans2 2 (n n) (k k) (A B))
+  (defstrand orig 3 (n n) (k k) (A B) (B B))
+  (precedes ((0 1) (2 2)) ((2 1) (0 0)) ((2 1) (1 0)))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (operation nonce-test (displaced 3 2 orig 2) n (0 0) (enc n B B k))
+  (traces ((recv (enc n B k)) (send (enc n B B B k)))
+    ((recv (enc n B k)) (send (enc n B B B k)))
+    ((send (enc n B B k)) (send (enc n B k)) (recv (enc n B B B k))))
+  (label 14)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1 2) ((n n) (A B) (B B) (k k))))
+  (origs (n (2 0))))
+
+(defskeleton nonaug-prune
+  (vars (n text) (k akey) (A name))
+  (defstrand trans2 2 (n n) (k k) (A A))
+  (defstrand trans2 2 (n n) (k k) (A A))
+  (defstrand orig 3 (n n) (k k) (A A) (B A))
+  (defstrand trans2 2 (n n) (k k) (A A))
+  (precedes ((2 1) (0 0)) ((2 1) (1 0)) ((2 1) (3 0)) ((3 1) (2 2)))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (operation nonce-test (contracted (B A)) n (0 0) (enc n A k)
+    (enc n A A k))
+  (traces ((recv (enc n A k)) (send (enc n A A A k)))
+    ((recv (enc n A k)) (send (enc n A A A k)))
+    ((send (enc n A A k)) (send (enc n A k)) (recv (enc n A A A k)))
+    ((recv (enc n A k)) (send (enc n A A A k))))
+  (label 32)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1 2) ((n n) (A A) (B A) (k k))))
+  (origs (n (2 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/ns-l.tst b/tst/ns-l.tst
--- a/tst/ns-l.tst
+++ b/tst/ns-l.tst
@@ -1,7 +1,7 @@
 (herald "Needham-Schroeder-Low Public-Key Protocol"
   (comment "With deflistener's"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/ns-l.scm")
 
 (defprotocol ns basic
@@ -63,6 +63,7 @@
   (uniq-orig n1)
   (operation nonce-test (added-strand resp 2) n1 (1 0)
     (enc n1 a (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc b n1 n2 (pubk a)))
       (send (enc n2 (pubk b)))) ((recv n1) (send n1))
@@ -82,6 +83,7 @@
   (uniq-orig n2)
   (operation nonce-test (displaced 3 0 init 3) n2-0 (1 0)
     (enc n2-0 a (pubk b)) (enc b n2-0 n2-0 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n2 a (pubk b))) (recv (enc b n2 n2 (pubk a)))
       (send (enc n2 (pubk b)))) ((recv n2) (send n2))
@@ -103,6 +105,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand resp 2) n2 (1 0) (enc n2 (pubk b))
     (enc n2 a (pubk b)) (enc b n2 n2 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n2 a (pubk b))) (recv (enc b n2 n2 (pubk a)))
       (send (enc n2 (pubk b)))) ((recv n2) (send n2))
@@ -175,6 +178,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand init 3) n2 (1 0)
     (enc b n1 n2 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((recv (enc n1 a (pubk b))) (send (enc b n1 n2 (pubk a)))
       (recv (enc n2 (pubk b)))) ((recv n2) (send n2))
@@ -195,6 +199,7 @@
   (uniq-orig n2)
   (operation nonce-test (displaced 3 2 init 3) n2 (0 2)
     (enc b n1 n2 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc n1 a (pubk b))) (send (enc b n1 n2 (pubk a)))
       (recv (enc n2 (pubk b)))) ((recv n2) (send n2))
@@ -218,6 +223,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand init 3) n2 (0 2)
     (enc b n1 n2 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc n1 a (pubk b))) (send (enc b n1 n2 (pubk a)))
       (recv (enc n2 (pubk b)))) ((recv n2) (send n2))
diff --git a/tst/ns-l_shapes.tst b/tst/ns-l_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/ns-l_shapes.tst
@@ -0,0 +1,126 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Needham-Schroeder-Low Public-Key Protocol"
+  (comment "With deflistener's"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/ns-l.scm")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc b n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc b n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder"))
+
+(defskeleton ns
+  (vars (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (deflistener n1)
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (comment "Initiator point-of-view with a listener")
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc b n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))) ((recv n1) (send n1)))
+  (label 0)
+  (unrealized (0 1) (1 0))
+  (preskeleton)
+  (origs (n1 (0 0)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc b n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc b n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder"))
+
+(defskeleton ns
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (deflistener n2)
+  (non-orig (privk a))
+  (uniq-orig n2)
+  (comment "Responder point-of-view with a listener")
+  (traces
+    ((recv (enc n1 a (pubk b))) (send (enc b n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))) ((recv n2) (send n2)))
+  (label 5)
+  (unrealized (0 2) (1 0))
+  (preskeleton)
+  (origs (n2 (0 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton ns
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (deflistener n2)
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (2 1)) ((2 2) (0 2)) ((2 2) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig n2)
+  (operation nonce-test (displaced 3 2 init 3) n2 (0 2)
+    (enc b n1 n2 (pubk a)))
+  (traces
+    ((recv (enc n1 a (pubk b))) (send (enc b n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))) ((recv n2) (send n2))
+    ((send (enc n1 a (pubk b))) (recv (enc b n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (label 8)
+  (parent 5)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (n2 n2) (b b) (n1 n1))))
+  (origs (n2 (0 1))))
+
+(defskeleton ns
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (deflistener n2)
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (2 1)) ((0 1) (3 1)) ((2 2) (1 0)) ((3 2) (0 2)))
+  (non-orig (privk a))
+  (uniq-orig n2)
+  (operation nonce-test (added-strand init 3) n2 (0 2)
+    (enc b n1 n2 (pubk a)))
+  (traces
+    ((recv (enc n1 a (pubk b))) (send (enc b n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))) ((recv n2) (send n2))
+    ((send (enc n1 a (pubk b))) (recv (enc b n1 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((send (enc n1 a (pubk b))) (recv (enc b n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (label 9)
+  (parent 5)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (n2 n2) (b b) (n1 n1))))
+  (origs (n2 (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/ns-rebinding.tst b/tst/ns-rebinding.tst
--- a/tst/ns-rebinding.tst
+++ b/tst/ns-rebinding.tst
@@ -1,6 +1,6 @@
 (herald "ALternate Needham-Schroeder Public-Key Protocol Variants")
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/ns-rebinding.scm")
 
 (defprotocol ns basic
@@ -77,6 +77,7 @@
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc n1 a (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
       (send (enc n2 (pubk b))))
@@ -97,6 +98,7 @@
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
     (enc n1 a (pubk b)) (enc n1 n2 b (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
       (send (enc n2 (pubk b))))
@@ -185,6 +187,7 @@
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc n1 a (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
       (send (enc n2 (pubk b))))
@@ -205,6 +208,7 @@
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
     (enc n1 a (pubk b)) (enc n1 n2 b (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
       (send (enc n2 (pubk b))))
@@ -292,6 +296,7 @@
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc n1 a (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
       (send (enc n2 (pubk b))))
@@ -400,6 +405,7 @@
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (added-strand resp 2) n1 (1 0)
     (enc n1 a (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
       (send (enc n2 (pubk b)))) ((recv n1) (send n1))
@@ -421,6 +427,7 @@
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (displaced 3 0 init 3) n2-0 (1 0)
     (enc n2-0 a (pubk b)) (enc n2-0 n2-0 b (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n2 a (pubk b))) (recv (enc n2 n2 b (pubk a)))
       (send (enc n2 (pubk b)))) ((recv n2) (send n2))
@@ -444,6 +451,7 @@
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (added-strand resp 2) n2 (1 0) (enc n2 (pubk b))
     (enc n2 a (pubk b)) (enc n2 n2 b (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n2 a (pubk b))) (recv (enc n2 n2 b (pubk a)))
       (send (enc n2 (pubk b)))) ((recv n2) (send n2))
@@ -524,6 +532,10 @@
   (label 18)
   (parent 17)
   (seen 20)
+  (seen-ops
+    (20
+      (operation nonce-test (added-strand resp 2) n1-0 (1 1)
+        (enc n1-0 a (pubk b))) (strand-map 0 1)))
   (unrealized (0 1) (1 1))
   (origs (n1 (0 0)) (n1-0 (1 0)))
   (comment "2 in cohort - 1 not yet seen"))
@@ -536,6 +548,7 @@
   (facts (rel2 x n2) (rel1 n1 n2) (rel2 n1 n2))
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation collapsed 1 0)
+  (strand-map 0 0)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
       (send (enc n2 (pubk b)))))
@@ -557,6 +570,7 @@
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (added-strand resp 2) n1-0 (1 1)
     (enc n1-0 a (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
       (send (enc n2 (pubk b))))
@@ -566,6 +580,11 @@
   (label 20)
   (parent 18)
   (seen 22)
+  (seen-ops
+    (22
+      (operation nonce-test (contracted (n2-1 n2-0)) n1-0 (1 1)
+        (enc n1-0 a (pubk b)) (enc n1-0 n2-0 b (pubk a)))
+      (strand-map 0 1 2)))
   (unrealized (0 1) (1 1))
   (comment "2 in cohort - 1 not yet seen"))
 
@@ -580,6 +599,7 @@
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc n1 a (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
       (send (enc n2 (pubk b))))
@@ -603,6 +623,7 @@
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (contracted (n2-1 n2-0)) n1-0 (1 1)
     (enc n1-0 a (pubk b)) (enc n1-0 n2-0 b (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
       (send (enc n2 (pubk b))))
@@ -612,6 +633,10 @@
   (label 22)
   (parent 20)
   (seen 24)
+  (seen-ops
+    (24
+      (operation nonce-test (added-strand resp 2) n1 (0 1)
+        (enc n1 a (pubk b))) (strand-map 0 1 2)))
   (unrealized (0 1))
   (comment "2 in cohort - 1 not yet seen"))
 
@@ -626,6 +651,7 @@
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
     (enc n1 a (pubk b)) (enc n1 n2 b (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
       (send (enc n2 (pubk b))))
@@ -651,6 +677,7 @@
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc n1 a (pubk b)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
       (send (enc n2 (pubk b))))
@@ -677,6 +704,7 @@
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (contracted (n2-1 n2-0)) n1 (0 1)
     (enc n1 a (pubk b)) (enc n1 n2-0 b (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2-0 b (pubk a)))
       (send (enc n2-0 (pubk b))))
@@ -785,6 +813,7 @@
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc n1 a (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
       (send (enc n2 (pubk b))))
@@ -805,6 +834,7 @@
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
     (enc n1 a (pubk b)) (enc n1 n2 b (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
       (send (enc n2 (pubk b))))
@@ -876,6 +906,7 @@
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (added-strand init 3) n2 (0 2)
     (enc n1 n2 b (pubk a)))
+  (strand-map 0)
   (traces
     ((recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))
       (recv (enc n2 (pubk b))))
diff --git a/tst/ns-rebinding_shapes.tst b/tst/ns-rebinding_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/ns-rebinding_shapes.tst
@@ -0,0 +1,516 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "ALternate Needham-Schroeder Public-Key Protocol Variants")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/ns-rebinding.scm")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b))))
+    (facts (rel1 n1 n2) (rel2 n1 n2)))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defrule rebind-x
+    (forall ((x y text))
+      (implies
+        (fact rel1 x y)
+        (exists ((x-0 name)) (fact rel2 x-0 y)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule fact-init-rel11
+    (forall ((z strd) (n2 n1 text))
+      (implies
+        (and (p "init" z 2) (p "init" "n2" z n2) (p "init" "n1" z n1))
+        (fact rel1 n1 n2))))
+  (defgenrule fact-init-rel20
+    (forall ((z strd) (n2 n1 text))
+      (implies
+        (and (p "init" z 2) (p "init" "n2" z n2) (p "init" "n1" z n1))
+        (fact rel2 n1 n2))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (comment "Initiator point-of-view")
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n1 (0 0)))
+  (comment "Not closed under rules"))
+
+(defskeleton ns
+  (vars (x name) (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (facts (rel2 x n2) (rel1 n1 n2) (rel2 n1 n2))
+  (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
+    (enc n1 a (pubk b)) (enc n1 n2 b (pubk a)))
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b))))
+    (facts (rel1 n1 n2) (rel2 n1 n2)))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defrule rebind-x
+    (forall ((x y text))
+      (implies
+        (fact rel1 x y)
+        (exists ((x-0 name)) (fact rel2 x-0 y)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule fact-init-rel11
+    (forall ((z strd) (n2 n1 text))
+      (implies
+        (and (p "init" z 2) (p "init" "n2" z n2) (p "init" "n1" z n1))
+        (fact rel1 n1 n2))))
+  (defgenrule fact-init-rel20
+    (forall ((z strd) (n2 n1 text))
+      (implies
+        (and (p "init" z 2) (p "init" "n2" z n2) (p "init" "n1" z n1))
+        (fact rel2 n1 n2))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (facts (rel n1 n1))
+  (comment "Initiator point-of-view")
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (label 4)
+  (unrealized (0 1))
+  (origs (n1 (0 0)))
+  (comment "Not closed under rules"))
+
+(defskeleton ns
+  (vars (x name) (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (facts (rel2 x n2) (rel1 n1 n2) (rel2 n1 n2) (rel n1 n1))
+  (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
+    (enc n1 a (pubk b)) (enc n1 n2 b (pubk a)))
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))))
+  (label 7)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b))))
+    (facts (rel1 n1 n2) (rel2 n1 n2)))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defrule rebind-x
+    (forall ((x y text))
+      (implies
+        (fact rel1 x y)
+        (exists ((x-0 name)) (fact rel2 x-0 y)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule fact-init-rel11
+    (forall ((z strd) (n2 n1 text))
+      (implies
+        (and (p "init" z 2) (p "init" "n2" z n2) (p "init" "n1" z n1))
+        (fact rel1 n1 n2))))
+  (defgenrule fact-init-rel20
+    (forall ((z strd) (n2 n1 text))
+      (implies
+        (and (p "init" z 2) (p "init" "n2" z n2) (p "init" "n1" z n1))
+        (fact rel2 n1 n2))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (non-orig (privk b))
+  (uniq-orig n1)
+  (comment "Initiator point-of-view")
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (label 8)
+  (unrealized (0 1))
+  (origs (n1 (0 0)))
+  (comment "Not closed under rules"))
+
+(defskeleton ns
+  (vars (x name) (n1 n2 n2-0 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2-0) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk b))
+  (uniq-orig n1)
+  (facts (rel2 x n2) (rel1 n1 n2) (rel2 n1 n2))
+  (operation nonce-test (added-strand resp 2) n1 (0 1)
+    (enc n1 a (pubk b)))
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2-0 b (pubk a)))))
+  (label 10)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b))))
+    (facts (rel1 n1 n2) (rel2 n1 n2)))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defrule rebind-x
+    (forall ((x y text))
+      (implies
+        (fact rel1 x y)
+        (exists ((x-0 name)) (fact rel2 x-0 y)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule fact-init-rel11
+    (forall ((z strd) (n2 n1 text))
+      (implies
+        (and (p "init" z 2) (p "init" "n2" z n2) (p "init" "n1" z n1))
+        (fact rel1 n1 n2))))
+  (defgenrule fact-init-rel20
+    (forall ((z strd) (n2 n1 text))
+      (implies
+        (and (p "init" z 2) (p "init" "n2" z n2) (p "init" "n1" z n1))
+        (fact rel2 n1 n2))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (deflistener n1)
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (comment "Initiator point-of-view")
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b)))) ((recv n1) (send n1)))
+  (label 11)
+  (unrealized (0 1) (1 0))
+  (preskeleton)
+  (origs (n1 (0 0)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b))))
+    (facts (rel1 n1 n2) (rel2 n1 n2)))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defrule rebind-x
+    (forall ((x y text))
+      (implies
+        (fact rel1 x y)
+        (exists ((x-0 name)) (fact rel2 x-0 y)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule fact-init-rel11
+    (forall ((z strd) (n2 n1 text))
+      (implies
+        (and (p "init" z 2) (p "init" "n2" z n2) (p "init" "n1" z n1))
+        (fact rel1 n1 n2))))
+  (defgenrule fact-init-rel20
+    (forall ((z strd) (n2 n1 text))
+      (implies
+        (and (p "init" z 2) (p "init" "n2" z n2) (p "init" "n1" z n1))
+        (fact rel2 n1 n2))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n1 n1-0 n2 n2-0 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1-0) (n2 n2-0) (a a) (b b))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1 n1-0)
+  (comment "Double initiator point-of-view")
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((send (enc n1-0 a (pubk b))) (recv (enc n1-0 n2-0 b (pubk a)))
+      (send (enc n2-0 (pubk b)))))
+  (label 17)
+  (unrealized (0 1) (1 1))
+  (origs (n1 (0 0)) (n1-0 (1 0)))
+  (comment "Not closed under rules"))
+
+(defskeleton ns
+  (vars (x x-0 name) (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (facts (rel2 x-0 n2) (rel2 x n2) (rel1 n1 n2) (rel2 n1 n2))
+  (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
+    (enc n1 a (pubk b)) (enc n1 n2 b (pubk a)))
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))))
+  (label 23)
+  (parent 17)
+  (realized)
+  (shape)
+  (maps ((0 0) ((a a) (b b) (n1 n1) (n1-0 n1) (n2 n2) (n2-0 n2))))
+  (origs (n1 (0 0))))
+
+(defskeleton ns
+  (vars (x x-0 name) (n1 n1-0 n2 n2-0 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2-0) (a a) (b b))
+  (defstrand init 3 (n1 n1-0) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2) (n1 n1-0) (b b) (a a))
+  (defstrand resp 2 (n2 n2-0) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (3 0)) ((1 0) (2 0)) ((2 1) (1 1)) ((3 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1 n1-0)
+  (facts (rel2 x-0 n2) (rel2 x n2-0) (rel1 n1-0 n2) (rel1 n1 n2-0)
+    (rel2 n1-0 n2) (rel2 n1 n2-0))
+  (operation nonce-test (contracted (n2-1 n2-0)) n1 (0 1)
+    (enc n1 a (pubk b)) (enc n1 n2-0 b (pubk a)))
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2-0 b (pubk a)))
+      (send (enc n2-0 (pubk b))))
+    ((send (enc n1-0 a (pubk b))) (recv (enc n1-0 n2 b (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n1-0 a (pubk b))) (send (enc n1-0 n2 b (pubk a))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2-0 b (pubk a)))))
+  (label 25)
+  (parent 17)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (n1 n1) (n1-0 n1-0) (n2 n2-0) (n2-0 n2))))
+  (origs (n1 (0 0)) (n1-0 (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b))))
+    (facts (rel1 n1 n2) (rel2 n1 n2)))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defrule rebind-x
+    (forall ((x y text))
+      (implies
+        (fact rel1 x y)
+        (exists ((x-0 name)) (fact rel2 x-0 y)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule fact-init-rel11
+    (forall ((z strd) (n2 n1 text))
+      (implies
+        (and (p "init" z 2) (p "init" "n2" z n2) (p "init" "n1" z n1))
+        (fact rel1 n1 n2))))
+  (defgenrule fact-init-rel20
+    (forall ((z strd) (n2 n1 text))
+      (implies
+        (and (p "init" z 2) (p "init" "n2" z n2) (p "init" "n1" z n1))
+        (fact rel2 n1 n2))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n1 n2 n2-0 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1) (n2 n2-0) (a a) (b b))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (comment "Double initiator point-of-view, same nonce")
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2-0 b (pubk a)))
+      (send (enc n2-0 (pubk b)))))
+  (label 26)
+  (realized)
+  (preskeleton)
+  (origs (n1 (1 0)) (n1 (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton ns
+  (vars (x name) (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (facts (rel2 x n2) (rel1 n1 n2) (rel2 n1 n2))
+  (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
+    (enc n1 a (pubk b)) (enc n1 n2 b (pubk a)))
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))))
+  (label 30)
+  (parent 26)
+  (realized)
+  (shape)
+  (maps ((0 0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b))))
+    (facts (rel1 n1 n2) (rel2 n1 n2)))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defrule rebind-x
+    (forall ((x y text))
+      (implies
+        (fact rel1 x y)
+        (exists ((x-0 name)) (fact rel2 x-0 y)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule fact-init-rel11
+    (forall ((z strd) (n2 n1 text))
+      (implies
+        (and (p "init" z 2) (p "init" "n2" z n2) (p "init" "n1" z n1))
+        (fact rel1 n1 n2))))
+  (defgenrule fact-init-rel20
+    (forall ((z strd) (n2 n1 text))
+      (implies
+        (and (p "init" z 2) (p "init" "n2" z n2) (p "init" "n1" z n1))
+        (fact rel2 n1 n2))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (non-orig (privk a))
+  (uniq-orig n2)
+  (comment "Responder point-of-view")
+  (traces
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (label 31)
+  (unrealized (0 2))
+  (origs (n2 (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton ns
+  (vars (x name) (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig (privk a))
+  (uniq-orig n2)
+  (facts (rel2 x n2) (rel1 n1 n2) (rel2 n1 n2))
+  (rule rebind-x fact-init-rel11 fact-init-rel20)
+  (operation nonce-test (added-strand init 3) n2 (0 2)
+    (enc n1 n2 b (pubk a)))
+  (traces
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 b (pubk a)))
+      (recv (enc n2 (pubk b))))
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (label 32)
+  (parent 31)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (n2 n2) (b b) (n1 n1))))
+  (origs (n2 (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/ns.tst b/tst/ns.tst
--- a/tst/ns.tst
+++ b/tst/ns.tst
@@ -1,6 +1,6 @@
 (herald "Needham-Schroeder Public-Key Protocol Variants")
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/ns.scm")
 
 (defprotocol ns basic
@@ -43,6 +43,7 @@
   (uniq-orig n1)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc n1 a (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -61,6 +62,7 @@
   (uniq-orig n1)
   (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
     (enc n1 n2 (pubk a)) (enc n1 a (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -114,6 +116,7 @@
   (non-orig (privk a) (privk b))
   (uniq-orig n1)
   (operation collapsed 1 0)
+  (strand-map 0 0)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b)))))
@@ -132,6 +135,7 @@
   (uniq-orig n1 n1-0)
   (operation nonce-test (added-strand resp 2) n1-0 (1 1)
     (enc n1-0 a (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -152,6 +156,7 @@
   (uniq-orig n1)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc n1 a (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -172,6 +177,7 @@
   (uniq-orig n1 n1-0)
   (operation nonce-test (contracted (n2-1 n2-0)) n1-0 (1 1)
     (enc n1-0 n2-0 (pubk a)) (enc n1-0 a (pubk b)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -192,6 +198,7 @@
   (uniq-orig n1)
   (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
     (enc n1 n2 (pubk a)) (enc n1 a (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -214,6 +221,7 @@
   (uniq-orig n1 n1-0)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc n1 a (pubk b)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -237,6 +245,7 @@
   (uniq-orig n1 n1-0)
   (operation nonce-test (contracted (n2-1 n2-0)) n1 (0 1)
     (enc n1 n2-0 (pubk a)) (enc n1 a (pubk b)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2-0 (pubk a)))
       (send (enc n2-0 (pubk b))))
@@ -311,6 +320,7 @@
   (uniq-orig n1)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc n1 a (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -329,6 +339,7 @@
   (uniq-orig n1)
   (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
     (enc n1 n2 (pubk a)) (enc n1 a (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -382,6 +393,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand init 3) n2 (0 2)
     (enc n1 n2 (pubk a)))
+  (strand-map 0)
   (traces
     ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
       (recv (enc n2 (pubk b))))
@@ -440,6 +452,7 @@
   (uniq-orig n1 n2-0)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc n1 a (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -458,6 +471,7 @@
   (uniq-orig n1 n2)
   (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
     (enc n1 n2 (pubk a)) (enc n1 a (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -515,6 +529,7 @@
   (uniq-orig n2 n1)
   (operation nonce-test (added-strand init 3) n2 (0 2)
     (enc n1 n2 (pubk a)))
+  (strand-map 0)
   (traces
     ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
       (recv (enc n2 (pubk b))))
@@ -534,6 +549,7 @@
   (uniq-orig n2 n1)
   (operation nonce-test (contracted (b-0 b)) n1 (0 0)
     (enc n1 a (pubk b)))
+  (strand-map 0 1)
   (traces
     ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
       (recv (enc n2 (pubk b))))
@@ -556,6 +572,7 @@
   (uniq-orig n2 n1 n2-0)
   (operation nonce-test (added-strand resp 2) n1 (0 0)
     (enc n1 a (pubk b-0)))
+  (strand-map 0 1)
   (traces
     ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
       (recv (enc n2 (pubk b))))
@@ -577,6 +594,7 @@
   (uniq-orig n2 n1 n2-0)
   (operation nonce-test (contracted (b-0 b)) n1 (0 0)
     (enc n1 n2-0 (pubk a)) (enc n1 a (pubk b)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
       (recv (enc n2 (pubk b))))
@@ -586,6 +604,8 @@
   (label 24)
   (parent 23)
   (seen 22)
+  (seen-ops
+    (22 (operation generalization deleted (2 0)) (strand-map 0 1)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -631,6 +651,7 @@
   (uniq-orig n3)
   (operation nonce-test (added-strand resp 2) n3 (0 1)
     (enc n3 n3 a (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc n3 n3 a (pubk b))) (recv (enc n3 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -649,6 +670,7 @@
   (uniq-orig n3)
   (operation nonce-test (contracted (n2-0 n2)) n3 (0 1)
     (enc n3 n2 (pubk a)) (enc n3 n3 a (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send (enc n3 n3 a (pubk b))) (recv (enc n3 n2 (pubk a)))
       (send (enc n2 (pubk b))))
@@ -755,6 +777,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand init 3) n2 (1 0)
     (enc n1 n2 b (pubk a)))
+  (strand-map 0 1)
   (traces ((recv (enc a n1 (pubk b))) (send (enc n1 n2 b (pubk a))))
     ((recv n2) (send n2))
     ((send (enc a n1 (pubk b))) (recv (enc n1 n2 b (pubk a)))
@@ -775,6 +798,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand resp 2) n2 (1 0)
     (enc a-0 n2 b (pubk a)))
+  (strand-map 0 1)
   (traces ((recv (enc a a-0 (pubk b))) (send (enc a-0 n2 b (pubk a))))
     ((recv n2) (send n2))
     ((recv (enc a-0 n2 b (pubk a)))
diff --git a/tst/ns_shapes.tst b/tst/ns_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/ns_shapes.tst
@@ -0,0 +1,512 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Needham-Schroeder Public-Key Protocol Variants")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/ns.scm")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (comment "Initiator point-of-view")
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n1 (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton ns
+  (vars (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
+    (enc n1 n2 (pubk a)) (enc n1 a (pubk b)))
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n1 n1-0 n2 n2-0 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1-0) (n2 n2-0) (a a) (b b))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1 n1-0)
+  (comment "Double initiator point-of-view")
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((send (enc n1-0 a (pubk b))) (recv (enc n1-0 n2-0 (pubk a)))
+      (send (enc n2-0 (pubk b)))))
+  (label 3)
+  (unrealized (0 1) (1 1))
+  (origs (n1 (0 0)) (n1-0 (1 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton ns
+  (vars (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
+    (enc n1 n2 (pubk a)) (enc n1 a (pubk b)))
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))))
+  (label 8)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0 0) ((a a) (b b) (n1 n1) (n1-0 n1) (n2 n2) (n2-0 n2))))
+  (origs (n1 (0 0))))
+
+(defskeleton ns
+  (vars (n1 n1-0 n2 n2-0 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2-0) (a a) (b b))
+  (defstrand init 3 (n1 n1-0) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2) (n1 n1-0) (b b) (a a))
+  (defstrand resp 2 (n2 n2-0) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (3 0)) ((1 0) (2 0)) ((2 1) (1 1)) ((3 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1 n1-0)
+  (operation nonce-test (contracted (n2-1 n2-0)) n1 (0 1)
+    (enc n1 n2-0 (pubk a)) (enc n1 a (pubk b)))
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2-0 (pubk a)))
+      (send (enc n2-0 (pubk b))))
+    ((send (enc n1-0 a (pubk b))) (recv (enc n1-0 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n1-0 a (pubk b))) (send (enc n1-0 n2 (pubk a))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2-0 (pubk a)))))
+  (label 10)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (n1 n1) (n1-0 n1-0) (n2 n2-0) (n2-0 n2))))
+  (origs (n1 (0 0)) (n1-0 (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n1 n2 n2-0 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand init 3 (n1 n1) (n2 n2-0) (a a) (b b))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (comment "Double initiator point-of-view, same nonce")
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2-0 (pubk a)))
+      (send (enc n2-0 (pubk b)))))
+  (label 11)
+  (realized)
+  (preskeleton)
+  (origs (n1 (1 0)) (n1 (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton ns
+  (vars (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
+    (enc n1 n2 (pubk a)) (enc n1 a (pubk b)))
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))))
+  (label 14)
+  (parent 11)
+  (realized)
+  (shape)
+  (maps ((0 0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (non-orig (privk a))
+  (uniq-orig n2)
+  (comment "Responder point-of-view")
+  (traces
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (label 15)
+  (unrealized (0 2))
+  (origs (n2 (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton ns
+  (vars (n2 n1 text) (a b b-0 name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b-0))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig (privk a))
+  (uniq-orig n2)
+  (operation nonce-test (added-strand init 3) n2 (0 2)
+    (enc n1 n2 (pubk a)))
+  (traces
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b))))
+    ((send (enc n1 a (pubk b-0))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b-0)))))
+  (label 16)
+  (parent 15)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (n2 n2) (b b) (n1 n1))))
+  (origs (n2 (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns-role-origs basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    (non-orig (privk b))
+    (uniq-orig n1))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b))))
+    (non-orig (privk a))
+    (uniq-orig n2))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Needham-Schroeder with role assumptions that are too strong"))
+
+(defskeleton ns-role-origs
+  (vars (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (non-orig (privk b))
+  (uniq-orig n1)
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (label 17)
+  (unrealized (0 1))
+  (origs (n1 (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton ns-role-origs
+  (vars (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1 n2)
+  (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
+    (enc n1 n2 (pubk a)) (enc n1 a (pubk b)))
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))))
+  (label 19)
+  (parent 17)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n2 (1 1)) (n1 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns-role-origs basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    (non-orig (privk b))
+    (uniq-orig n1))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b))))
+    (non-orig (privk a))
+    (uniq-orig n2))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "Needham-Schroeder with role assumptions that are too strong"))
+
+(defskeleton ns-role-origs
+  (vars (n2 n1 text) (b a name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (non-orig (privk a))
+  (uniq-orig n2)
+  (traces
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (label 20)
+  (unrealized (0 2))
+  (origs (n2 (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton ns-role-origs
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n2 n1)
+  (operation nonce-test (contracted (b-0 b)) n1 (0 0)
+    (enc n1 a (pubk b)))
+  (traces
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b))))
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (label 22)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (a a) (n2 n2) (n1 n1))))
+  (origs (n1 (1 0)) (n2 (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns2 basic
+  (defrole init
+    (vars (a b name) (n1 n2 n3 text))
+    (trace (send (enc n1 n3 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b))))
+    (note doubled nonce in the first message))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (note that this protocol is derived from Needham-Schroeder))
+
+(defskeleton ns2
+  (vars (n1 n2 n3 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (n3 n3) (a a) (b b))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (traces
+    ((send (enc n1 n3 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (label 25)
+  (unrealized (0 1))
+  (origs (n1 (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton ns2
+  (vars (n3 n2 text) (a b name))
+  (defstrand init 3 (n1 n3) (n2 n2) (n3 n3) (a a) (b b))
+  (defstrand resp 2 (n2 n2) (n1 n3) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n3)
+  (operation nonce-test (contracted (n2-0 n2)) n3 (0 1)
+    (enc n3 n2 (pubk a)) (enc n3 n3 a (pubk b)))
+  (traces
+    ((send (enc n3 n3 a (pubk b))) (recv (enc n3 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n3 n3 a (pubk b))) (send (enc n3 n2 (pubk a)))))
+  (label 27)
+  (parent 25)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n3) (n2 n2) (n3 n3))))
+  (origs (n3 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder with no role origination assumptions"))
+
+(defskeleton ns
+  (vars (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 (pubk a)))
+      (send (enc n2 (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))))
+  (label 28)
+  (realized)
+  (shape)
+  (maps ((0 1) ((n1 n1) (n2 n2) (a a) (b b))))
+  (origs (n1 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol nsl-typeless basic
+  (defrole init
+    (vars (a b name) (n1 text) (n2 mesg))
+    (trace (send (enc a n1 (pubk b))) (recv (enc n1 n2 b (pubk a)))
+      (send (enc n2 (pubk b)))))
+  (defrole resp
+    (vars (b a name) (n2 text) (n1 mesg))
+    (trace (recv (enc a n1 (pubk b))) (send (enc n1 n2 b (pubk a)))
+      (recv (enc n2 (pubk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder-Lowe with untyped nonces"))
+
+(defskeleton nsl-typeless
+  (vars (n1 mesg) (n2 text) (a b name))
+  (defstrand resp 2 (n1 n1) (n2 n2) (b b) (a a))
+  (deflistener n2)
+  (non-orig (privk a) (privk b))
+  (uniq-orig n2)
+  (comment "Shows typeflaw in typeless NSL")
+  (traces ((recv (enc a n1 (pubk b))) (send (enc n1 n2 b (pubk a))))
+    ((recv n2) (send n2)))
+  (label 29)
+  (unrealized (1 0))
+  (preskeleton)
+  (origs (n2 (0 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton nsl-typeless
+  (vars (n2 n2-0 text) (a b a-0 name))
+  (defstrand resp 2 (n1 a-0) (n2 n2) (b b) (a a))
+  (deflistener n2)
+  (defstrand resp 2 (n1 (cat n2 b)) (n2 n2-0) (b a) (a a-0))
+  (precedes ((0 1) (2 0)) ((2 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n2)
+  (operation nonce-test (added-strand resp 2) n2 (1 0)
+    (enc a-0 n2 b (pubk a)))
+  (traces ((recv (enc a a-0 (pubk b))) (send (enc a-0 n2 b (pubk a))))
+    ((recv n2) (send n2))
+    ((recv (enc a-0 n2 b (pubk a)))
+      (send (enc (cat n2 b) n2-0 a (pubk a-0)))))
+  (label 32)
+  (parent 29)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (n2 n2) (n1 a-0))))
+  (origs (n2 (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/nsl3.tst b/tst/nsl3.tst
--- a/tst/nsl3.tst
+++ b/tst/nsl3.tst
@@ -1,6 +1,6 @@
 (herald "Three Party Needham-Schroeder-Lowe Protocol")
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/nsl3.scm")
 
 (defprotocol nsl3 basic
@@ -72,6 +72,7 @@
   (uniq-orig na0 na1 nb0-0 nb1-0)
   (operation nonce-test (added-strand mid 2) na0 (0 1)
     (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
       (recv
@@ -105,6 +106,7 @@
     (enc na0 a c (enc na1 a b (pubk c)) (pubk b))
     (enc nb1-0 b a (enc na1 a b (pubk c)) (enc na0 nb0-0 b c (pubk a))
       (pubk c)))
+  (strand-map 0 1)
   (traces
     ((send (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
       (recv
@@ -146,6 +148,7 @@
       (enc nb1 nc0 c a (pubk b)) (pubk a))
     (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
       (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
       (recv
@@ -197,6 +200,7 @@
       (enc nb1-0 nc0-0 c a (pubk b)) (pubk a))
     (enc nb1-0 b a (enc na1 a b (pubk c)) (enc na0 nb0-0 b c (pubk a))
       (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
       (recv
@@ -247,6 +251,7 @@
       (pubk c))
     (enc nb1-0 b a (enc na1 a b (pubk c)) (enc na0 nb0-0 b c (pubk a))
       (pubk c)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
       (recv
@@ -272,6 +277,8 @@
   (label 5)
   (parent 4)
   (seen 3)
+  (seen-ops
+    (3 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -347,6 +354,7 @@
   (operation nonce-test (added-strand resp 2) nb0 (0 2)
     (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
       (pubk c)))
+  (strand-map 0)
   (traces
     ((recv (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
       (send
@@ -382,6 +390,7 @@
       (enc nb1 nc0-0 c a (pubk b)) (pubk a))
     (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
       (pubk c)))
+  (strand-map 0 1)
   (traces
     ((recv (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
       (send
@@ -425,6 +434,7 @@
     (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c)) (pubk b))
     (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
       (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
       (send
@@ -478,6 +488,7 @@
     (enc nb0 (enc nb1 nc0-0 c a (pubk b)) (enc nc1-0 (pubk c)) (pubk b))
     (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
       (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
       (send
@@ -532,6 +543,7 @@
     (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c)) (pubk b))
     (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
       (pubk c)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
       (send
@@ -562,6 +574,8 @@
   (label 11)
   (parent 10)
   (seen 9)
+  (seen-ops
+    (9 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -637,6 +651,7 @@
   (operation nonce-test (added-strand init 3) nc0 (0 2)
     (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
       (enc nb1 nc0 c a (pubk b)) (pubk a)))
+  (strand-map 0)
   (traces
     ((recv
        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
@@ -670,6 +685,7 @@
   (uniq-orig na0 na1 nc0 nc1 nb0-0 nb1-0)
   (operation nonce-test (added-strand mid 2) na1 (0 0)
     (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
+  (strand-map 0 1)
   (traces
     ((recv
        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
@@ -709,6 +725,7 @@
     (enc na0 a c (enc na1 a b (pubk c)) (pubk b))
     (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
       (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
@@ -752,6 +769,7 @@
     (enc na0 a c (enc na1 a b (pubk c)) (pubk b))
     (enc nb1-0 b a (enc na1 a b (pubk c)) (enc na0 nb0-0 b c (pubk a))
       (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
@@ -798,6 +816,7 @@
     (enc na1-0 nc1 c b (enc na0-0 nb0 b c (pubk a))
       (enc nb1 nc0 c a (pubk b)) (pubk a))
     (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c)) (pubk b)))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
@@ -845,6 +864,7 @@
       (enc nb1 nc0-0 c a (pubk b)) (pubk a))
     (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
       (pubk c)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv
        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
@@ -899,6 +919,7 @@
       (enc nb1-0 nc0-0 c a (pubk b)) (pubk a))
     (enc nb1-0 b a (enc na1 a b (pubk c)) (enc na0 nb0-0 b c (pubk a))
       (pubk c)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv
        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
@@ -948,6 +969,7 @@
   (operation nonce-test (displaced 3 1 init 3) nc0 (2 2)
     (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
       (enc nb1 nc0 c a (pubk b)) (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
@@ -999,6 +1021,7 @@
     (enc na1-0 nc1 c b (enc na0-0 nb0 b c (pubk a))
       (enc nb1 nc0 c a (pubk b)) (pubk a))
     (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c)) (pubk b)))
+  (strand-map 0 1 3 2)
   (traces
     ((recv
        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
@@ -1057,6 +1080,7 @@
       (pubk c))
     (enc nb1-0 b a (enc na1 a b (pubk c)) (enc na0 nb0-0 b c (pubk a))
       (pubk c)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv
        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
@@ -1116,6 +1140,7 @@
       (pubk c))
     (enc nb1-0 b a (enc na1 a b (pubk c)) (enc na0 nb0-0 b c (pubk a))
       (pubk c)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv
        (enc nb1-0 b a (enc na1 a b (pubk c))
@@ -1167,6 +1192,7 @@
   (operation nonce-test (displaced 4 1 init 3) nc0 (3 2)
     (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
       (enc nb1 nc0 c a (pubk b)) (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv
        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
@@ -1198,6 +1224,8 @@
   (label 24)
   (parent 21)
   (seen 20)
+  (seen-ops
+    (20 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1223,6 +1251,7 @@
     (enc na1-0 nc1 c b (enc na0-0 nb0 b c (pubk a))
       (enc nb1 nc0 c a (pubk b)) (pubk a))
     (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c)) (pubk b)))
+  (strand-map 0 1 4 2 3)
   (traces
     ((recv
        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
@@ -1283,6 +1312,7 @@
       (enc nb1-0 nc0 c a (pubk b)) (pubk a))
     (enc nb0-0 (enc nb1-0 nc0 c a (pubk b)) (enc nc1 (pubk c))
       (pubk b)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv
        (enc nb1-0 b a (enc na1 a b (pubk c))
@@ -1340,6 +1370,7 @@
   (operation nonce-test (displaced 5 1 init 3) nc0 (4 2)
     (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
       (enc nb1 nc0 c a (pubk b)) (pubk a)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv
        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
@@ -1397,6 +1428,7 @@
   (operation nonce-test (displaced 5 1 init 3) nc0 (4 2)
     (enc na1 nc1 c b (enc na0 nb0-0 b c (pubk a))
       (enc nb1-0 nc0 c a (pubk b)) (pubk a)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv
        (enc nb1-0 b a (enc na1 a b (pubk c))
@@ -1432,6 +1464,8 @@
   (label 28)
   (parent 26)
   (seen 29)
+  (seen-ops
+    (29 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1450,6 +1484,7 @@
   (non-orig (privk a) (privk b) (privk c))
   (uniq-orig nc0 nc1 nb0 nb1 nb0-0 nb1-0 na0 na1)
   (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4)
   (traces
     ((recv
        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
@@ -1479,6 +1514,8 @@
   (label 29)
   (parent 27)
   (seen 20)
+  (seen-ops
+    (20 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/nsl3_shapes.tst b/tst/nsl3_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/nsl3_shapes.tst
@@ -0,0 +1,332 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Three Party Needham-Schroeder-Lowe Protocol")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/nsl3.scm")
+
+(defprotocol nsl3 basic
+  (defrole init
+    (vars (a b c name) (na0 na1 nb0 nb1 nc0 nc1 text))
+    (trace (send (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
+      (recv
+        (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
+          (enc nb1 nc0 c a (pubk b)) (pubk a)))
+      (send
+        (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c))
+          (pubk b))))
+    (uniq-orig na0 na1))
+  (defrole mid
+    (vars (a b c name) (na0 na1 nb0 nb1 nc0 nc1 text))
+    (trace (recv (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
+      (send
+        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
+          (pubk c)))
+      (recv
+        (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c))
+          (pubk b))) (send (enc nc0 (enc nc1 (pubk c)) (pubk c))))
+    (uniq-orig nb0 nb1))
+  (defrole resp
+    (vars (a b c name) (na0 na1 nb0 nb1 nc0 nc1 text))
+    (trace
+      (recv
+        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
+          (pubk c)))
+      (send
+        (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
+          (enc nb1 nc0 c a (pubk b)) (pubk a)))
+      (recv (enc nc0 (enc nc1 (pubk c)) (pubk c))))
+    (uniq-orig nc0 nc1))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton nsl3
+  (vars (na0 na1 nb0 nb1 nc0 nc1 text) (a b c name))
+  (defstrand init 3 (na0 na0) (na1 na1) (nb0 nb0) (nb1 nb1) (nc0 nc0)
+    (nc1 nc1) (a a) (b b) (c c))
+  (non-orig (privk a) (privk b) (privk c))
+  (uniq-orig na0 na1)
+  (traces
+    ((send (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
+      (recv
+        (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
+          (enc nb1 nc0 c a (pubk b)) (pubk a)))
+      (send
+        (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c))
+          (pubk b)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (na1 (0 0)) (na0 (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton nsl3
+  (vars (na0 na1 nb0 nb1 nc0 nc1 text) (a b c name))
+  (defstrand init 3 (na0 na0) (na1 na1) (nb0 nb0) (nb1 nb1) (nc0 nc0)
+    (nc1 nc1) (a a) (b b) (c c))
+  (defstrand mid 2 (na0 na0) (na1 na1) (nb0 nb0) (nb1 nb1) (a a) (b b)
+    (c c))
+  (defstrand resp 2 (na0 na0) (na1 na1) (nb0 nb0) (nb1 nb1) (nc0 nc0)
+    (nc1 nc1) (a a) (b b) (c c))
+  (precedes ((0 0) (1 0)) ((1 1) (2 0)) ((2 1) (0 1)))
+  (non-orig (privk a) (privk b) (privk c))
+  (uniq-orig na0 na1 nb0 nb1 nc0 nc1)
+  (operation nonce-test
+    (contracted (nb0-0 nb0) (nb1-0 nb1) (nc0-0 nc0) (nc1-0 nc1)) na0
+    (0 1) (enc na0 a c (enc na1 a b (pubk c)) (pubk b))
+    (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
+      (enc nb1 nc0 c a (pubk b)) (pubk a))
+    (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
+      (pubk c)))
+  (traces
+    ((send (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
+      (recv
+        (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
+          (enc nb1 nc0 c a (pubk b)) (pubk a)))
+      (send
+        (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c))
+          (pubk b))))
+    ((recv (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
+      (send
+        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
+          (pubk c))))
+    ((recv
+       (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
+         (pubk c)))
+      (send
+        (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
+          (enc nb1 nc0 c a (pubk b)) (pubk a)))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (c c) (na0 na0) (na1 na1) (nb0 nb0) (nb1 nb1)
+        (nc0 nc0) (nc1 nc1))))
+  (origs (nc0 (2 1)) (nc1 (2 1)) (nb0 (1 1)) (nb1 (1 1)) (na1 (0 0))
+    (na0 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol nsl3 basic
+  (defrole init
+    (vars (a b c name) (na0 na1 nb0 nb1 nc0 nc1 text))
+    (trace (send (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
+      (recv
+        (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
+          (enc nb1 nc0 c a (pubk b)) (pubk a)))
+      (send
+        (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c))
+          (pubk b))))
+    (uniq-orig na0 na1))
+  (defrole mid
+    (vars (a b c name) (na0 na1 nb0 nb1 nc0 nc1 text))
+    (trace (recv (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
+      (send
+        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
+          (pubk c)))
+      (recv
+        (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c))
+          (pubk b))) (send (enc nc0 (enc nc1 (pubk c)) (pubk c))))
+    (uniq-orig nb0 nb1))
+  (defrole resp
+    (vars (a b c name) (na0 na1 nb0 nb1 nc0 nc1 text))
+    (trace
+      (recv
+        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
+          (pubk c)))
+      (send
+        (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
+          (enc nb1 nc0 c a (pubk b)) (pubk a)))
+      (recv (enc nc0 (enc nc1 (pubk c)) (pubk c))))
+    (uniq-orig nc0 nc1))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton nsl3
+  (vars (na0 na1 nb0 nb1 nc0 nc1 text) (a b c name))
+  (defstrand mid 4 (na0 na0) (na1 na1) (nb0 nb0) (nb1 nb1) (nc0 nc0)
+    (nc1 nc1) (a a) (b b) (c c))
+  (non-orig (privk a) (privk b) (privk c))
+  (uniq-orig nb0 nb1)
+  (traces
+    ((recv (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
+      (send
+        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
+          (pubk c)))
+      (recv
+        (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c))
+          (pubk b))) (send (enc nc0 (enc nc1 (pubk c)) (pubk c)))))
+  (label 6)
+  (unrealized (0 2))
+  (origs (nb1 (0 1)) (nb0 (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton nsl3
+  (vars (na0 na1 nb0 nb1 nc0 nc1 text) (a b c name))
+  (defstrand mid 4 (na0 na0) (na1 na1) (nb0 nb0) (nb1 nb1) (nc0 nc0)
+    (nc1 nc1) (a a) (b b) (c c))
+  (defstrand resp 2 (na0 na0) (na1 na1) (nb0 nb0) (nb1 nb1) (nc0 nc0)
+    (nc1 nc1) (a a) (b b) (c c))
+  (defstrand init 3 (na0 na0) (na1 na1) (nb0 nb0) (nb1 nb1) (nc0 nc0)
+    (nc1 nc1) (a a) (b b) (c c))
+  (precedes ((0 1) (1 0)) ((1 1) (2 1)) ((2 0) (0 0)) ((2 2) (0 2)))
+  (non-orig (privk a) (privk b) (privk c))
+  (uniq-orig na0 na1 nb0 nb1 nc0 nc1)
+  (operation nonce-test (contracted (nc0-0 nc0) (nc1-0 nc1)) nb0 (0 2)
+    (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
+      (enc nb1 nc0 c a (pubk b)) (pubk a))
+    (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c)) (pubk b))
+    (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
+      (pubk c)))
+  (traces
+    ((recv (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
+      (send
+        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
+          (pubk c)))
+      (recv
+        (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c))
+          (pubk b))) (send (enc nc0 (enc nc1 (pubk c)) (pubk c))))
+    ((recv
+       (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
+         (pubk c)))
+      (send
+        (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
+          (enc nb1 nc0 c a (pubk b)) (pubk a))))
+    ((send (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
+      (recv
+        (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
+          (enc nb1 nc0 c a (pubk b)) (pubk a)))
+      (send
+        (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c))
+          (pubk b)))))
+  (label 9)
+  (parent 6)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (c c) (na0 na0) (na1 na1) (nb0 nb0) (nb1 nb1)
+        (nc0 nc0) (nc1 nc1))))
+  (origs (na0 (2 0)) (na1 (2 0)) (nc0 (1 1)) (nc1 (1 1)) (nb1 (0 1))
+    (nb0 (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol nsl3 basic
+  (defrole init
+    (vars (a b c name) (na0 na1 nb0 nb1 nc0 nc1 text))
+    (trace (send (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
+      (recv
+        (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
+          (enc nb1 nc0 c a (pubk b)) (pubk a)))
+      (send
+        (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c))
+          (pubk b))))
+    (uniq-orig na0 na1))
+  (defrole mid
+    (vars (a b c name) (na0 na1 nb0 nb1 nc0 nc1 text))
+    (trace (recv (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
+      (send
+        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
+          (pubk c)))
+      (recv
+        (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c))
+          (pubk b))) (send (enc nc0 (enc nc1 (pubk c)) (pubk c))))
+    (uniq-orig nb0 nb1))
+  (defrole resp
+    (vars (a b c name) (na0 na1 nb0 nb1 nc0 nc1 text))
+    (trace
+      (recv
+        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
+          (pubk c)))
+      (send
+        (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
+          (enc nb1 nc0 c a (pubk b)) (pubk a)))
+      (recv (enc nc0 (enc nc1 (pubk c)) (pubk c))))
+    (uniq-orig nc0 nc1))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton nsl3
+  (vars (na0 na1 nb0 nb1 nc0 nc1 text) (a b c name))
+  (defstrand resp 3 (na0 na0) (na1 na1) (nb0 nb0) (nb1 nb1) (nc0 nc0)
+    (nc1 nc1) (a a) (b b) (c c))
+  (non-orig (privk a) (privk b) (privk c))
+  (uniq-orig nc0 nc1)
+  (traces
+    ((recv
+       (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
+         (pubk c)))
+      (send
+        (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
+          (enc nb1 nc0 c a (pubk b)) (pubk a)))
+      (recv (enc nc0 (enc nc1 (pubk c)) (pubk c)))))
+  (label 12)
+  (unrealized (0 2))
+  (origs (nc1 (0 1)) (nc0 (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton nsl3
+  (vars (nc0 nc1 nb0 nb1 na0 na1 text) (a b c name))
+  (defstrand resp 3 (na0 na0) (na1 na1) (nb0 nb0) (nb1 nb1) (nc0 nc0)
+    (nc1 nc1) (a a) (b b) (c c))
+  (defstrand init 3 (na0 na0) (na1 na1) (nb0 nb0) (nb1 nb1) (nc0 nc0)
+    (nc1 nc1) (a a) (b b) (c c))
+  (defstrand mid 4 (na0 na0) (na1 na1) (nb0 nb0) (nb1 nb1) (nc0 nc0)
+    (nc1 nc1) (a a) (b b) (c c))
+  (precedes ((0 1) (1 1)) ((1 0) (2 0)) ((1 2) (2 2)) ((2 1) (0 0))
+    ((2 3) (0 2)))
+  (non-orig (privk a) (privk b) (privk c))
+  (uniq-orig nc0 nc1 nb0 nb1 na0 na1)
+  (operation nonce-test (displaced 3 1 init 3) nc0 (2 2)
+    (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
+      (enc nb1 nc0 c a (pubk b)) (pubk a)))
+  (traces
+    ((recv
+       (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
+         (pubk c)))
+      (send
+        (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
+          (enc nb1 nc0 c a (pubk b)) (pubk a)))
+      (recv (enc nc0 (enc nc1 (pubk c)) (pubk c))))
+    ((send (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
+      (recv
+        (enc na1 nc1 c b (enc na0 nb0 b c (pubk a))
+          (enc nb1 nc0 c a (pubk b)) (pubk a)))
+      (send
+        (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c))
+          (pubk b))))
+    ((recv (enc na0 a c (enc na1 a b (pubk c)) (pubk b)))
+      (send
+        (enc nb1 b a (enc na1 a b (pubk c)) (enc na0 nb0 b c (pubk a))
+          (pubk c)))
+      (recv
+        (enc nb0 (enc nb1 nc0 c a (pubk b)) (enc nc1 (pubk c))
+          (pubk b))) (send (enc nc0 (enc nc1 (pubk c)) (pubk c)))))
+  (label 20)
+  (parent 12)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (c c) (na0 na0) (na1 na1) (nb0 nb0) (nb1 nb1)
+        (nc0 nc0) (nc1 nc1))))
+  (origs (na0 (1 0)) (na1 (1 0)) (nb0 (2 1)) (nb1 (2 1)) (nc1 (0 1))
+    (nc0 (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/nsl4.lisp b/tst/nsl4.lisp
deleted file mode 100644
--- a/tst/nsl4.lisp
+++ /dev/null
@@ -1,85 +0,0 @@
-(defprotocol nsl4 basic
-  (defrole init
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (send
-        (enc na0 a c d (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (pubk b)))
-      (recv
-        (enc na2 nd0 d b c (enc na0 nb2 b c d (pubk a))
-          (enc na1 nc1 c b d (pubk a)) (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (pubk a)))
-      (send
-        (enc nb2 (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (enc nc1 (pubk c)) (enc nd0 (pubk d)) (pubk b))))
-    (uniq-orig na0 na1 na2))
-  (defrole resp1
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (recv
-        (enc na0 a c d (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (pubk b)))
-      (send
-        (enc nb0 b d a (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (enc nb1 b c a (pubk d)) (enc na0 nb2 b c d (pubk a))
-          (pubk c)))
-      (recv
-        (enc nb2 (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (enc nc1 (pubk c)) (enc nd0 (pubk d)) (pubk b)))
-      (send
-        (enc nc2 (enc nc0 nd2 d a b (pubk c)) (enc nc1 (pubk c))
-          (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk c))))
-    (uniq-orig nb0 nb1 nb2))
-  (defrole resp2
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (recv
-        (enc nb0 b d a (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (enc nb1 b c a (pubk d)) (enc na0 nb2 b c d (pubk a))
-          (pubk c)))
-      (send
-        (enc nc0 c a b (enc na2 a b c (pubk d)) (enc nb1 b c a (pubk d))
-          (enc na0 nb2 b c d (pubk a)) (enc na1 nc1 c b d (pubk a))
-          (enc nb0 nc2 c d a (pubk b)) (pubk d)))
-      (recv
-        (enc nc2 (enc nc0 nd2 d a b (pubk c)) (enc nc1 (pubk c))
-          (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk c)))
-      (send (enc nd2 (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk d))))
-    (uniq-orig nc0 nc1 nc2))
-  (defrole resp3
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (recv
-        (enc nc0 c a b (enc na2 a b c (pubk d)) (enc nb1 b c a (pubk d))
-          (enc na0 nb2 b c d (pubk a)) (enc na1 nc1 c b d (pubk a))
-          (enc nb0 nc2 c d a (pubk b)) (pubk d)))
-      (send
-        (enc na2 nd0 d b c (enc na0 nb2 b c d (pubk a))
-          (enc na1 nc1 c b d (pubk a)) (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (pubk a)))
-      (recv (enc nd2 (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk d))))
-    (uniq-orig nd0 nd1 nd2)))
-
-(defskeleton nsl4 (vars (a b c d name))
-  (defstrand init 3 (a a) (b b) (c c) (d d))
-  (non-orig (privk a) (privk b) (privk c) (privk d)))
-
-(defskeleton nsl4 (vars (a b c d name))
-  (defstrand resp1 4 (a a) (b b) (c c) (d d))
-  (non-orig (privk a) (privk b) (privk c) (privk d)))
-
-(defskeleton nsl4 (vars (a b c d name))
-  (defstrand resp2 4 (a a) (b b) (c c) (d d))
-  (non-orig (privk a) (privk b) (privk c) (privk d)))
-
-(defskeleton nsl4 (vars (a b c d name))
-  (defstrand resp3 3 (a a) (b b) (c c) (d d))
-  (non-orig (privk a) (privk b) (privk c) (privk d)))
diff --git a/tst/nsl4cm1.lisp b/tst/nsl4cm1.lisp
deleted file mode 100644
--- a/tst/nsl4cm1.lisp
+++ /dev/null
@@ -1,49 +0,0 @@
-(herald "Four Party Needham-Schroeder-Lowe Protocol")
-
-(defprotocol nsl4cm basic
-   (defrole init
-      (vars (a b c d name) (na nb nc nd text))
-      (trace
-         (send (enc a c d na (pubk b)))
-	 (recv (enc b c d na nb nc nd (pubk a)))
-	 (send (enc nb nc nd (pubk b)))))
-   (defrole resp1
-      (vars (a b c d name) (na nb nc nd text))
-      (trace
-         (recv (enc a c d na (pubk b)))
-	 (send (enc a b d na nb (pubk c)))
-	 (recv (enc nb nc nd (pubk b)))
-	 (send (enc nc nd (pubk c)))))
-   (defrole resp2
-      (vars (a b c d name) (na nb nc nd text))
-      (trace
-         (recv (enc a b d na nb (pubk c)))
-	 (send (enc a b c na nb nc (pubk d)))
-	 (recv (enc nc nd (pubk c)))
-	 (send (enc nd (pubk d)))))
-   (defrole resp3
-      (vars (a b c d name) (na nb nc nd text))
-      (trace
-         (recv (enc a b c na nb nc (pubk d)))
-	 (send (enc b c d na nb nc nd (pubk a)))
-	 (recv (enc nd (pubk d))))))
-
-(defskeleton nsl4cm (vars (a b c d name) (na text))
-  (defstrand init 3 (a a) (b b) (c c) (d d) (na na))
-   (non-orig (privk a) (privk b) (privk c) (privk d))
-   (uniq-orig na))
-
-(comment (defskeleton nsl4cm (vars (a b c d name) (nb text))
-   (defstrand resp1 4 (a a) (b b) (c c) (d d) (nb nb))
-   (non-orig (privk a) (privk b) (privk c) (privk d))
-   (uniq-orig nb))
-
-(defskeleton nsl4cm (vars (a b c d name) (nc text))
-   (defstrand resp2 4 (a a) (b b) (c c) (d d) (nc nc))
-   (non-orig (privk a) (privk b) (privk c) (privk d))
-   (uniq-orig nc))
-
-(defskeleton nsl4cm (vars (a b c d name) (nd text))
-   (defstrand resp3 3 (a a) (b b) (c c) (d d) (nd nd))
-   (non-orig (privk a) (privk b) (privk c) (privk d))
-   (uniq-orig nd)))
diff --git a/tst/nsl4init.lisp b/tst/nsl4init.lisp
deleted file mode 100644
--- a/tst/nsl4init.lisp
+++ /dev/null
@@ -1,73 +0,0 @@
-(defprotocol nsl4 basic
-  (defrole init
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (send
-        (enc na0 a c d (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (pubk b)))
-      (recv
-        (enc na2 nd0 d b c (enc na0 nb2 b c d (pubk a))
-          (enc na1 nc1 c b d (pubk a)) (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (pubk a)))
-      (send
-        (enc nb2 (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (enc nc1 (pubk c)) (enc nd0 (pubk d)) (pubk b))))
-    (uniq-orig na0 na1 na2))
-  (defrole resp1
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (recv
-        (enc na0 a c d (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (pubk b)))
-      (send
-        (enc nb0 b d a (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (enc nb1 b c a (pubk d)) (enc na0 nb2 b c d (pubk a))
-          (pubk c)))
-      (recv
-        (enc nb2 (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (enc nc1 (pubk c)) (enc nd0 (pubk d)) (pubk b)))
-      (send
-        (enc nc2 (enc nc0 nd2 d a b (pubk c)) (enc nc1 (pubk c))
-          (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk c))))
-    (uniq-orig nb0 nb1 nb2))
-  (defrole resp2
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (recv
-        (enc nb0 b d a (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (enc nb1 b c a (pubk d)) (enc na0 nb2 b c d (pubk a))
-          (pubk c)))
-      (send
-        (enc nc0 c a b (enc na2 a b c (pubk d)) (enc nb1 b c a (pubk d))
-          (enc na0 nb2 b c d (pubk a)) (enc na1 nc1 c b d (pubk a))
-          (enc nb0 nc2 c d a (pubk b)) (pubk d)))
-      (recv
-        (enc nc2 (enc nc0 nd2 d a b (pubk c)) (enc nc1 (pubk c))
-          (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk c)))
-      (send (enc nd2 (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk d))))
-    (uniq-orig nc0 nc1 nc2))
-  (defrole resp3
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (recv
-        (enc nc0 c a b (enc na2 a b c (pubk d)) (enc nb1 b c a (pubk d))
-          (enc na0 nb2 b c d (pubk a)) (enc na1 nc1 c b d (pubk a))
-          (enc nb0 nc2 c d a (pubk b)) (pubk d)))
-      (send
-        (enc na2 nd0 d b c (enc na0 nb2 b c d (pubk a))
-          (enc na1 nc1 c b d (pubk a)) (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (pubk a)))
-      (recv (enc nd2 (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk d))))
-    (uniq-orig nd0 nd1 nd2)))
-
-(defskeleton nsl4 (vars (a b c d name))
-  (defstrand init 3 (a a) (b b) (c c) (d d))
-  (non-orig (privk a) (privk b) (privk c) (privk d)))
diff --git a/tst/nsl4resp1.lisp b/tst/nsl4resp1.lisp
deleted file mode 100644
--- a/tst/nsl4resp1.lisp
+++ /dev/null
@@ -1,73 +0,0 @@
-(defprotocol nsl4 basic
-  (defrole init
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (send
-        (enc na0 a c d (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (pubk b)))
-      (recv
-        (enc na2 nd0 d b c (enc na0 nb2 b c d (pubk a))
-          (enc na1 nc1 c b d (pubk a)) (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (pubk a)))
-      (send
-        (enc nb2 (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (enc nc1 (pubk c)) (enc nd0 (pubk d)) (pubk b))))
-    (uniq-orig na0 na1 na2))
-  (defrole resp1
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (recv
-        (enc na0 a c d (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (pubk b)))
-      (send
-        (enc nb0 b d a (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (enc nb1 b c a (pubk d)) (enc na0 nb2 b c d (pubk a))
-          (pubk c)))
-      (recv
-        (enc nb2 (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (enc nc1 (pubk c)) (enc nd0 (pubk d)) (pubk b)))
-      (send
-        (enc nc2 (enc nc0 nd2 d a b (pubk c)) (enc nc1 (pubk c))
-          (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk c))))
-    (uniq-orig nb0 nb1 nb2))
-  (defrole resp2
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (recv
-        (enc nb0 b d a (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (enc nb1 b c a (pubk d)) (enc na0 nb2 b c d (pubk a))
-          (pubk c)))
-      (send
-        (enc nc0 c a b (enc na2 a b c (pubk d)) (enc nb1 b c a (pubk d))
-          (enc na0 nb2 b c d (pubk a)) (enc na1 nc1 c b d (pubk a))
-          (enc nb0 nc2 c d a (pubk b)) (pubk d)))
-      (recv
-        (enc nc2 (enc nc0 nd2 d a b (pubk c)) (enc nc1 (pubk c))
-          (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk c)))
-      (send (enc nd2 (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk d))))
-    (uniq-orig nc0 nc1 nc2))
-  (defrole resp3
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (recv
-        (enc nc0 c a b (enc na2 a b c (pubk d)) (enc nb1 b c a (pubk d))
-          (enc na0 nb2 b c d (pubk a)) (enc na1 nc1 c b d (pubk a))
-          (enc nb0 nc2 c d a (pubk b)) (pubk d)))
-      (send
-        (enc na2 nd0 d b c (enc na0 nb2 b c d (pubk a))
-          (enc na1 nc1 c b d (pubk a)) (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (pubk a)))
-      (recv (enc nd2 (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk d))))
-    (uniq-orig nd0 nd1 nd2)))
-
-(defskeleton nsl4 (vars (a b c d name))
-  (defstrand resp1 4 (a a) (b b) (c c) (d d))
-  (non-orig (privk a) (privk b) (privk c) (privk d)))
diff --git a/tst/nsl4resp2.lisp b/tst/nsl4resp2.lisp
deleted file mode 100644
--- a/tst/nsl4resp2.lisp
+++ /dev/null
@@ -1,73 +0,0 @@
-(defprotocol nsl4 basic
-  (defrole init
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (send
-        (enc na0 a c d (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (pubk b)))
-      (recv
-        (enc na2 nd0 d b c (enc na0 nb2 b c d (pubk a))
-          (enc na1 nc1 c b d (pubk a)) (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (pubk a)))
-      (send
-        (enc nb2 (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (enc nc1 (pubk c)) (enc nd0 (pubk d)) (pubk b))))
-    (uniq-orig na0 na1 na2))
-  (defrole resp1
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (recv
-        (enc na0 a c d (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (pubk b)))
-      (send
-        (enc nb0 b d a (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (enc nb1 b c a (pubk d)) (enc na0 nb2 b c d (pubk a))
-          (pubk c)))
-      (recv
-        (enc nb2 (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (enc nc1 (pubk c)) (enc nd0 (pubk d)) (pubk b)))
-      (send
-        (enc nc2 (enc nc0 nd2 d a b (pubk c)) (enc nc1 (pubk c))
-          (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk c))))
-    (uniq-orig nb0 nb1 nb2))
-  (defrole resp2
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (recv
-        (enc nb0 b d a (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (enc nb1 b c a (pubk d)) (enc na0 nb2 b c d (pubk a))
-          (pubk c)))
-      (send
-        (enc nc0 c a b (enc na2 a b c (pubk d)) (enc nb1 b c a (pubk d))
-          (enc na0 nb2 b c d (pubk a)) (enc na1 nc1 c b d (pubk a))
-          (enc nb0 nc2 c d a (pubk b)) (pubk d)))
-      (recv
-        (enc nc2 (enc nc0 nd2 d a b (pubk c)) (enc nc1 (pubk c))
-          (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk c)))
-      (send (enc nd2 (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk d))))
-    (uniq-orig nc0 nc1 nc2))
-  (defrole resp3
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (recv
-        (enc nc0 c a b (enc na2 a b c (pubk d)) (enc nb1 b c a (pubk d))
-          (enc na0 nb2 b c d (pubk a)) (enc na1 nc1 c b d (pubk a))
-          (enc nb0 nc2 c d a (pubk b)) (pubk d)))
-      (send
-        (enc na2 nd0 d b c (enc na0 nb2 b c d (pubk a))
-          (enc na1 nc1 c b d (pubk a)) (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (pubk a)))
-      (recv (enc nd2 (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk d))))
-    (uniq-orig nd0 nd1 nd2)))
-
-(defskeleton nsl4 (vars (a b c d name))
-  (defstrand resp2 4 (a a) (b b) (c c) (d d))
-  (non-orig (privk a) (privk b) (privk c) (privk d)))
diff --git a/tst/nsl4resp3.lisp b/tst/nsl4resp3.lisp
deleted file mode 100644
--- a/tst/nsl4resp3.lisp
+++ /dev/null
@@ -1,73 +0,0 @@
-(defprotocol nsl4 basic
-  (defrole init
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (send
-        (enc na0 a c d (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (pubk b)))
-      (recv
-        (enc na2 nd0 d b c (enc na0 nb2 b c d (pubk a))
-          (enc na1 nc1 c b d (pubk a)) (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (pubk a)))
-      (send
-        (enc nb2 (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (enc nc1 (pubk c)) (enc nd0 (pubk d)) (pubk b))))
-    (uniq-orig na0 na1 na2))
-  (defrole resp1
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (recv
-        (enc na0 a c d (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (pubk b)))
-      (send
-        (enc nb0 b d a (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (enc nb1 b c a (pubk d)) (enc na0 nb2 b c d (pubk a))
-          (pubk c)))
-      (recv
-        (enc nb2 (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (enc nc1 (pubk c)) (enc nd0 (pubk d)) (pubk b)))
-      (send
-        (enc nc2 (enc nc0 nd2 d a b (pubk c)) (enc nc1 (pubk c))
-          (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk c))))
-    (uniq-orig nb0 nb1 nb2))
-  (defrole resp2
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (recv
-        (enc nb0 b d a (enc na1 a b d (pubk c)) (enc na2 a b c (pubk d))
-          (enc nb1 b c a (pubk d)) (enc na0 nb2 b c d (pubk a))
-          (pubk c)))
-      (send
-        (enc nc0 c a b (enc na2 a b c (pubk d)) (enc nb1 b c a (pubk d))
-          (enc na0 nb2 b c d (pubk a)) (enc na1 nc1 c b d (pubk a))
-          (enc nb0 nc2 c d a (pubk b)) (pubk d)))
-      (recv
-        (enc nc2 (enc nc0 nd2 d a b (pubk c)) (enc nc1 (pubk c))
-          (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk c)))
-      (send (enc nd2 (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk d))))
-    (uniq-orig nc0 nc1 nc2))
-  (defrole resp3
-    (vars (a b c d name)
-      (na0 na1 na2 nb0 nb1 nb2 nc0 nc1 nc2 nd0 nd1 nd2 text))
-    (trace
-      (recv
-        (enc nc0 c a b (enc na2 a b c (pubk d)) (enc nb1 b c a (pubk d))
-          (enc na0 nb2 b c d (pubk a)) (enc na1 nc1 c b d (pubk a))
-          (enc nb0 nc2 c d a (pubk b)) (pubk d)))
-      (send
-        (enc na2 nd0 d b c (enc na0 nb2 b c d (pubk a))
-          (enc na1 nc1 c b d (pubk a)) (enc nb0 nc2 c d a (pubk b))
-          (enc nb1 nd1 d a c (pubk b)) (enc nc0 nd2 d a b (pubk c))
-          (pubk a)))
-      (recv (enc nd2 (enc nd0 (pubk d)) (enc nd1 (pubk d)) (pubk d))))
-    (uniq-orig nd0 nd1 nd2)))
-
-(defskeleton nsl4 (vars (a b c d name))
-  (defstrand resp3 3 (a a) (b b) (c c) (d d))
-  (non-orig (privk a) (privk b) (privk c) (privk d)))
diff --git a/tst/nsl5.lisp b/tst/nsl5.lisp
deleted file mode 100644
--- a/tst/nsl5.lisp
+++ /dev/null
@@ -1,149 +0,0 @@
-(herald nsl5 (bound 10))
-
-(defprotocol nsl5 basic
-  (defrole init
-    (vars (a b c d e name)
-      (na0 na1 na2 na3 nb0 nb1 nb2 nb3 nc0 nc1 nc2 nc3 nd0 nd1 nd2 nd3
-        ne0 ne1 ne2 ne3 text))
-    (trace
-      (send
-        (enc na0 a c d e (enc na1 a b d e (pubk c))
-          (enc na2 a b c e (pubk d)) (enc na3 a b c d (pubk e))
-          (pubk b)))
-      (recv
-        (enc na3 ne0 e b c d (enc na0 nb3 b c d e (pubk a))
-          (enc na1 nc2 c b d e (pubk a)) (enc na2 nd1 d e b c (pubk a))
-          (enc nb0 nc3 c d e a (pubk b)) (enc nb1 nd2 d c e a (pubk b))
-          (enc nb2 ne1 e a c d (pubk b)) (enc nc0 nd3 d e a b (pubk c))
-          (enc nc1 ne2 e a b d (pubk c)) (enc nd0 ne3 e a b c (pubk d))
-          (pubk a)))
-      (send
-        (enc nb3 (enc nb0 nc3 c d e a (pubk b))
-          (enc nb1 nd2 d c e a (pubk b)) (enc nb2 ne1 e a c d (pubk b))
-          (enc nc0 nd3 d e a b (pubk c)) (enc nc1 ne2 e a b d (pubk c))
-          (enc nc2 (pubk c)) (enc nd0 ne3 e a b c (pubk d))
-          (enc nd1 (pubk d)) (enc ne0 (pubk e)) (pubk b))))
-    (uniq-orig na0 na1 na2 na3))
-  (defrole resp1
-    (vars (a b c d e name)
-      (na0 na1 na2 na3 nb0 nb1 nb2 nb3 nc0 nc1 nc2 nc3 nd0 nd1 nd2 nd3
-        ne0 ne1 ne2 ne3 text))
-    (trace
-      (recv
-        (enc na0 a c d e (enc na1 a b d e (pubk c))
-          (enc na2 a b c e (pubk d)) (enc na3 a b c d (pubk e))
-          (pubk b)))
-      (send
-        (enc nb0 b d e a (enc na1 a b d e (pubk c))
-          (enc na2 a b c e (pubk d)) (enc nb1 b c e a (pubk d))
-          (enc na3 a b c d (pubk e)) (enc nb2 b c d a (pubk e))
-          (enc na0 nb3 b c d e (pubk a)) (pubk c)))
-      (recv
-        (enc nb3 (enc nb0 nc3 c d e a (pubk b))
-          (enc nb1 nd2 d c e a (pubk b)) (enc nb2 ne1 e a c d (pubk b))
-          (enc nc0 nd3 d e a b (pubk c)) (enc nc1 ne2 e a b d (pubk c))
-          (enc nc2 (pubk c)) (enc nd0 ne3 e a b c (pubk d))
-          (enc nd1 (pubk d)) (enc ne0 (pubk e)) (pubk b)))
-      (send
-        (enc nc3 (enc nc0 nd3 d e a b (pubk c))
-          (enc nc1 ne2 e a b d (pubk c)) (enc nc2 (pubk c))
-          (enc nd0 ne3 e a b c (pubk d)) (enc nd1 (pubk d))
-          (enc nd2 (pubk d)) (enc ne0 (pubk e)) (enc ne1 (pubk e))
-          (pubk c))))
-    (uniq-orig nb0 nb1 nb2 nb3))
-  (defrole resp2
-    (vars (a b c d e name)
-      (na0 na1 na2 na3 nb0 nb1 nb2 nb3 nc0 nc1 nc2 nc3 nd0 nd1 nd2 nd3
-        ne0 ne1 ne2 ne3 text))
-    (trace
-      (recv
-        (enc nb0 b d e a (enc na1 a b d e (pubk c))
-          (enc na2 a b c e (pubk d)) (enc nb1 b c e a (pubk d))
-          (enc na3 a b c d (pubk e)) (enc nb2 b c d a (pubk e))
-          (enc na0 nb3 b c d e (pubk a)) (pubk c)))
-      (send
-        (enc nc0 c e a b (enc na2 a b c e (pubk d))
-          (enc nb1 b c e a (pubk d)) (enc na3 a b c d (pubk e))
-          (enc nb2 b c d a (pubk e)) (enc nc1 c d a b (pubk e))
-          (enc na0 nb3 b c d e (pubk a)) (enc na1 nc2 c b d e (pubk a))
-          (enc nb0 nc3 c d e a (pubk b)) (pubk d)))
-      (recv
-        (enc nc3 (enc nc0 nd3 d e a b (pubk c))
-          (enc nc1 ne2 e a b d (pubk c)) (enc nc2 (pubk c))
-          (enc nd0 ne3 e a b c (pubk d)) (enc nd1 (pubk d))
-          (enc nd2 (pubk d)) (enc ne0 (pubk e)) (enc ne1 (pubk e))
-          (pubk c)))
-      (send
-        (enc nd3 (enc nd0 ne3 e a b c (pubk d)) (enc nd1 (pubk d))
-          (enc nd2 (pubk d)) (enc ne0 (pubk e)) (enc ne1 (pubk e))
-          (enc ne2 (pubk e)) (pubk d))))
-    (uniq-orig nc0 nc1 nc2 nc3))
-  (defrole resp3
-    (vars (a b c d e name)
-      (na0 na1 na2 na3 nb0 nb1 nb2 nb3 nc0 nc1 nc2 nc3 nd0 nd1 nd2 nd3
-        ne0 ne1 ne2 ne3 text))
-    (trace
-      (recv
-        (enc nc0 c e a b (enc na2 a b c e (pubk d))
-          (enc nb1 b c e a (pubk d)) (enc na3 a b c d (pubk e))
-          (enc nb2 b c d a (pubk e)) (enc nc1 c d a b (pubk e))
-          (enc na0 nb3 b c d e (pubk a)) (enc na1 nc2 c b d e (pubk a))
-          (enc nb0 nc3 c d e a (pubk b)) (pubk d)))
-      (send
-        (enc nd0 d a b c (enc na3 a b c d (pubk e))
-          (enc nb2 b c d a (pubk e)) (enc nc1 c d a b (pubk e))
-          (enc na0 nb3 b c d e (pubk a)) (enc na1 nc2 c b d e (pubk a))
-          (enc na2 nd1 d e b c (pubk a)) (enc nb0 nc3 c d e a (pubk b))
-          (enc nb1 nd2 d c e a (pubk b)) (enc nc0 nd3 d e a b (pubk c))
-          (pubk e)))
-      (recv
-        (enc nd3 (enc nd0 ne3 e a b c (pubk d)) (enc nd1 (pubk d))
-          (enc nd2 (pubk d)) (enc ne0 (pubk e)) (enc ne1 (pubk e))
-          (enc ne2 (pubk e)) (pubk d)))
-      (send
-        (enc ne3 (enc ne0 (pubk e)) (enc ne1 (pubk e))
-          (enc ne2 (pubk e)) (pubk e))))
-    (uniq-orig nd0 nd1 nd2 nd3))
-  (defrole resp4
-    (vars (a b c d e name)
-      (na0 na1 na2 na3 nb0 nb1 nb2 nb3 nc0 nc1 nc2 nc3 nd0 nd1 nd2 nd3
-        ne0 ne1 ne2 ne3 text))
-    (trace
-      (recv
-        (enc nd0 d a b c (enc na3 a b c d (pubk e))
-          (enc nb2 b c d a (pubk e)) (enc nc1 c d a b (pubk e))
-          (enc na0 nb3 b c d e (pubk a)) (enc na1 nc2 c b d e (pubk a))
-          (enc na2 nd1 d e b c (pubk a)) (enc nb0 nc3 c d e a (pubk b))
-          (enc nb1 nd2 d c e a (pubk b)) (enc nc0 nd3 d e a b (pubk c))
-          (pubk e)))
-      (send
-        (enc na3 ne0 e b c d (enc na0 nb3 b c d e (pubk a))
-          (enc na1 nc2 c b d e (pubk a)) (enc na2 nd1 d e b c (pubk a))
-          (enc nb0 nc3 c d e a (pubk b)) (enc nb1 nd2 d c e a (pubk b))
-          (enc nb2 ne1 e a c d (pubk b)) (enc nc0 nd3 d e a b (pubk c))
-          (enc nc1 ne2 e a b d (pubk c)) (enc nd0 ne3 e a b c (pubk d))
-          (pubk a)))
-      (recv
-        (enc ne3 (enc ne0 (pubk e)) (enc ne1 (pubk e))
-          (enc ne2 (pubk e)) (pubk e))))
-    (uniq-orig ne0 ne1 ne2 ne3)))
-
-(defskeleton nsl5 (vars (a b c d e name))
-  (defstrand init 3 (a a) (b b) (c c) (d d) (e e))
-  (non-orig (privk a) (privk b) (privk c) (privk d) (privk e)))
-
-(defskeleton nsl5 (vars (a b c d e name))
-  (defstrand resp1 4 (a a) (b b) (c c) (d d) (e e))
-  (non-orig (privk a) (privk b) (privk c) (privk d) (privk e)))
-
-(defskeleton nsl5 (vars (a b c d e name))
-  (defstrand resp2 4 (a a) (b b) (c c) (d d) (e e))
-  (non-orig (privk a) (privk b) (privk c) (privk d) (privk e)))
-
-(defskeleton nsl5 (vars (a b c d e name))
-  (defstrand resp3 4 (a a) (b b) (c c) (d d) (e e))
-  (non-orig (privk a) (privk b) (privk c) (privk d) (privk e)))
-
-(defskeleton nsl5 (vars (a b c d e name))
-  (defstrand resp4 3 (a a) (b b) (c c) (d d) (e e))
-  (non-orig (privk a) (privk b) (privk c) (privk d) (privk e)))
diff --git a/tst/nsl5i.lisp b/tst/nsl5i.lisp
deleted file mode 100644
--- a/tst/nsl5i.lisp
+++ /dev/null
@@ -1,64 +0,0 @@
-(defprotocol nsl5i basic
-  (defrole init
-    (vars (a name) (b name) (c name) (d name) (e name) (na text) (nb text) (nc text) (nd text) (ne text))
-    (trace
-      (send (enc (cat a b c d e (enc (enc (enc na (pubk e)) (pubk d)) (pubk c))) (pubk b)))
-      (recv (enc (cat a b c d e na (enc nb (pubk a)) (enc (enc nc (pubk b)) (pubk a)) (enc (enc (enc nd (pubk c)) (pubk b)) (pubk a)) (enc (enc (enc ne (pubk d)) (pubk c)) (pubk b))) (pubk a)))
-      (send (enc (cat nb (enc nc (pubk b)) (enc (enc nd (pubk c)) (pubk b)) (enc (enc (enc ne (pubk d)) (pubk c)) (pubk b))) (pubk b))))
-      (uniq-orig na))
-  (defrole resp1
-    (vars (a name) (b name) (c name) (d name) (e name) (na text) (nb text) (nc text) (nd text) (ne text))
-    (trace
-      (recv (enc (cat a b c d e (enc (enc (enc na (pubk e)) (pubk d)) (pubk c))) (pubk b)))
-      (send (enc (cat a b c d e (enc (enc (enc na (pubk e)) (pubk d)) (pubk c)) (enc (enc (enc nb (pubk a)) (pubk e)) (pubk d))) (pubk c)))
-      (recv (enc (cat nb (enc nc (pubk b)) (enc (enc nd (pubk c)) (pubk b)) (enc (enc (enc ne (pubk d)) (pubk c)) (pubk b))) (pubk b)))
-      (send (enc (cat nc (enc nd (pubk c)) (enc (enc ne (pubk d)) (pubk c))) (pubk c))))
-      (uniq-orig nb))
-  (defrole resp2
-    (vars (a name) (b name) (c name) (d name) (e name) (na text) (nb text) (nc text) (nd text) (ne text))
-    (trace
-      (recv (enc (cat a b c d e (enc (enc (enc na (pubk e)) (pubk d)) (pubk c)) (enc (enc (enc nb (pubk a)) (pubk e)) (pubk d))) (pubk c)))
-      (send (enc (cat a b c d e (enc (enc na (pubk e)) (pubk d)) (enc (enc (enc nb (pubk a)) (pubk e)) (pubk d)) (enc (enc (enc nc (pubk b)) (pubk a)) (pubk e))) (pubk d)))
-      (recv (enc (cat nc (enc nd (pubk c)) (enc (enc ne (pubk d)) (pubk c))) (pubk c)))
-      (send (enc (cat nd (enc ne (pubk d))) (pubk d))))
-      (uniq-orig nc))
-  (defrole resp3
-    (vars (a name) (b name) (c name) (d name) (e name) (na text) (nb text) (nc text) (nd text) (ne text))
-    (trace
-      (recv (enc (cat a b c d e (enc (enc na (pubk e)) (pubk d)) (enc (enc (enc nb (pubk a)) (pubk e)) (pubk d)) (enc (enc (enc nc (pubk b)) (pubk a)) (pubk e))) (pubk d)))
-      (send (enc (cat a b c d e (enc na (pubk e)) (enc (enc nb (pubk a)) (pubk e)) (enc (enc (enc nc (pubk b)) (pubk a)) (pubk e)) (enc (enc (enc nd (pubk c)) (pubk b)) (pubk a))) (pubk e)))
-      (recv (enc (cat nd (enc ne (pubk d))) (pubk d)))
-      (send (enc ne (pubk e))))
-      (uniq-orig nd))
-  (defrole resp4
-    (vars (a name) (b name) (c name) (d name) (e name) (na text) (nb text) (nc text) (nd text) (ne text))
-    (trace
-      (recv (enc (cat a b c d e (enc na (pubk e)) (enc (enc nb (pubk a)) (pubk e)) (enc (enc (enc nc (pubk b)) (pubk a)) (pubk e)) (enc (enc (enc nd (pubk c)) (pubk b)) (pubk a))) (pubk e)))
-      (send (enc (cat a b c d e na (enc nb (pubk a)) (enc (enc nc (pubk b)) (pubk a)) (enc (enc (enc nd (pubk c)) (pubk b)) (pubk a)) (enc (enc (enc ne (pubk d)) (pubk c)) (pubk b))) (pubk a)))
-      (recv (enc ne (pubk e))))
-      (uniq-orig ne)))
-
-(defskeleton nsl5i
-  (vars (a name) (b name) (c name) (d name) (e name) (na text) (nb text) (nc text) (nd text) (ne text))
-  (defstrand init 3 (a a) (b b) (c c) (d d) (e e))
-  (non-orig (privk a) (privk b) (privk c) (privk d) (privk e)))
-
-(defskeleton nsl5i
-  (vars (a name) (b name) (c name) (d name) (e name) (na text) (nb text) (nc text) (nd text) (ne text))
-  (defstrand resp1 4 (a a) (b b) (c c) (d d) (e e))
-  (non-orig (privk a) (privk b) (privk c) (privk d) (privk e)))
-
-(defskeleton nsl5i
-  (vars (a name) (b name) (c name) (d name) (e name) (na text) (nb text) (nc text) (nd text) (ne text))
-  (defstrand resp2 4 (a a) (b b) (c c) (d d) (e e))
-  (non-orig (privk a) (privk b) (privk c) (privk d) (privk e)))
-
-(defskeleton nsl5i
-  (vars (a name) (b name) (c name) (d name) (e name) (na text) (nb text) (nc text) (nd text) (ne text))
-  (defstrand resp3 4 (a a) (b b) (c c) (d d) (e e))
-  (non-orig (privk a) (privk b) (privk c) (privk d) (privk e)))
-
-(defskeleton nsl5i
-  (vars (a name) (b name) (c name) (d name) (e name) (na text) (nb text) (nc text) (nd text) (ne text))
-  (defstrand resp4 3 (a a) (b b) (c c) (d d) (e e))
-  (non-orig (privk a) (privk b) (privk c) (privk d) (privk e)))
diff --git a/tst/nsl5resp3.lisp b/tst/nsl5resp3.lisp
deleted file mode 100644
--- a/tst/nsl5resp3.lisp
+++ /dev/null
@@ -1,131 +0,0 @@
-(defprotocol nsl5 basic
-  (defrole init
-    (vars (a b c d e name)
-      (na0 na1 na2 na3 nb0 nb1 nb2 nb3 nc0 nc1 nc2 nc3 nd0 nd1 nd2 nd3
-        ne0 ne1 ne2 ne3 text))
-    (trace
-      (send
-        (enc na0 a c d e (enc na1 a b d e (pubk c))
-          (enc na2 a b c e (pubk d)) (enc na3 a b c d (pubk e))
-          (pubk b)))
-      (recv
-        (enc na3 ne0 e b c d (enc na0 nb3 b c d e (pubk a))
-          (enc na1 nc2 c b d e (pubk a)) (enc na2 nd1 d e b c (pubk a))
-          (enc nb0 nc3 c d e a (pubk b)) (enc nb1 nd2 d c e a (pubk b))
-          (enc nb2 ne1 e a c d (pubk b)) (enc nc0 nd3 d e a b (pubk c))
-          (enc nc1 ne2 e a b d (pubk c)) (enc nd0 ne3 e a b c (pubk d))
-          (pubk a)))
-      (send
-        (enc nb3 (enc nb0 nc3 c d e a (pubk b))
-          (enc nb1 nd2 d c e a (pubk b)) (enc nb2 ne1 e a c d (pubk b))
-          (enc nc0 nd3 d e a b (pubk c)) (enc nc1 ne2 e a b d (pubk c))
-          (enc nc2 (pubk c)) (enc nd0 ne3 e a b c (pubk d))
-          (enc nd1 (pubk d)) (enc ne0 (pubk e)) (pubk b))))
-    (uniq-orig na0 na1 na2 na3))
-  (defrole resp1
-    (vars (a b c d e name)
-      (na0 na1 na2 na3 nb0 nb1 nb2 nb3 nc0 nc1 nc2 nc3 nd0 nd1 nd2 nd3
-        ne0 ne1 ne2 ne3 text))
-    (trace
-      (recv
-        (enc na0 a c d e (enc na1 a b d e (pubk c))
-          (enc na2 a b c e (pubk d)) (enc na3 a b c d (pubk e))
-          (pubk b)))
-      (send
-        (enc nb0 b d e a (enc na1 a b d e (pubk c))
-          (enc na2 a b c e (pubk d)) (enc nb1 b c e a (pubk d))
-          (enc na3 a b c d (pubk e)) (enc nb2 b c d a (pubk e))
-          (enc na0 nb3 b c d e (pubk a)) (pubk c)))
-      (recv
-        (enc nb3 (enc nb0 nc3 c d e a (pubk b))
-          (enc nb1 nd2 d c e a (pubk b)) (enc nb2 ne1 e a c d (pubk b))
-          (enc nc0 nd3 d e a b (pubk c)) (enc nc1 ne2 e a b d (pubk c))
-          (enc nc2 (pubk c)) (enc nd0 ne3 e a b c (pubk d))
-          (enc nd1 (pubk d)) (enc ne0 (pubk e)) (pubk b)))
-      (send
-        (enc nc3 (enc nc0 nd3 d e a b (pubk c))
-          (enc nc1 ne2 e a b d (pubk c)) (enc nc2 (pubk c))
-          (enc nd0 ne3 e a b c (pubk d)) (enc nd1 (pubk d))
-          (enc nd2 (pubk d)) (enc ne0 (pubk e)) (enc ne1 (pubk e))
-          (pubk c))))
-    (uniq-orig nb0 nb1 nb2 nb3))
-  (defrole resp2
-    (vars (a b c d e name)
-      (na0 na1 na2 na3 nb0 nb1 nb2 nb3 nc0 nc1 nc2 nc3 nd0 nd1 nd2 nd3
-        ne0 ne1 ne2 ne3 text))
-    (trace
-      (recv
-        (enc nb0 b d e a (enc na1 a b d e (pubk c))
-          (enc na2 a b c e (pubk d)) (enc nb1 b c e a (pubk d))
-          (enc na3 a b c d (pubk e)) (enc nb2 b c d a (pubk e))
-          (enc na0 nb3 b c d e (pubk a)) (pubk c)))
-      (send
-        (enc nc0 c e a b (enc na2 a b c e (pubk d))
-          (enc nb1 b c e a (pubk d)) (enc na3 a b c d (pubk e))
-          (enc nb2 b c d a (pubk e)) (enc nc1 c d a b (pubk e))
-          (enc na0 nb3 b c d e (pubk a)) (enc na1 nc2 c b d e (pubk a))
-          (enc nb0 nc3 c d e a (pubk b)) (pubk d)))
-      (recv
-        (enc nc3 (enc nc0 nd3 d e a b (pubk c))
-          (enc nc1 ne2 e a b d (pubk c)) (enc nc2 (pubk c))
-          (enc nd0 ne3 e a b c (pubk d)) (enc nd1 (pubk d))
-          (enc nd2 (pubk d)) (enc ne0 (pubk e)) (enc ne1 (pubk e))
-          (pubk c)))
-      (send
-        (enc nd3 (enc nd0 ne3 e a b c (pubk d)) (enc nd1 (pubk d))
-          (enc nd2 (pubk d)) (enc ne0 (pubk e)) (enc ne1 (pubk e))
-          (enc ne2 (pubk e)) (pubk d))))
-    (uniq-orig nc0 nc1 nc2 nc3))
-  (defrole resp3
-    (vars (a b c d e name)
-      (na0 na1 na2 na3 nb0 nb1 nb2 nb3 nc0 nc1 nc2 nc3 nd0 nd1 nd2 nd3
-        ne0 ne1 ne2 ne3 text))
-    (trace
-      (recv
-        (enc nc0 c e a b (enc na2 a b c e (pubk d))
-          (enc nb1 b c e a (pubk d)) (enc na3 a b c d (pubk e))
-          (enc nb2 b c d a (pubk e)) (enc nc1 c d a b (pubk e))
-          (enc na0 nb3 b c d e (pubk a)) (enc na1 nc2 c b d e (pubk a))
-          (enc nb0 nc3 c d e a (pubk b)) (pubk d)))
-      (send
-        (enc nd0 d a b c (enc na3 a b c d (pubk e))
-          (enc nb2 b c d a (pubk e)) (enc nc1 c d a b (pubk e))
-          (enc na0 nb3 b c d e (pubk a)) (enc na1 nc2 c b d e (pubk a))
-          (enc na2 nd1 d e b c (pubk a)) (enc nb0 nc3 c d e a (pubk b))
-          (enc nb1 nd2 d c e a (pubk b)) (enc nc0 nd3 d e a b (pubk c))
-          (pubk e)))
-      (recv
-        (enc nd3 (enc nd0 ne3 e a b c (pubk d)) (enc nd1 (pubk d))
-          (enc nd2 (pubk d)) (enc ne0 (pubk e)) (enc ne1 (pubk e))
-          (enc ne2 (pubk e)) (pubk d)))
-      (send
-        (enc ne3 (enc ne0 (pubk e)) (enc ne1 (pubk e))
-          (enc ne2 (pubk e)) (pubk e))))
-    (uniq-orig nd0 nd1 nd2 nd3))
-  (defrole resp4
-    (vars (a b c d e name)
-      (na0 na1 na2 na3 nb0 nb1 nb2 nb3 nc0 nc1 nc2 nc3 nd0 nd1 nd2 nd3
-        ne0 ne1 ne2 ne3 text))
-    (trace
-      (recv
-        (enc nd0 d a b c (enc na3 a b c d (pubk e))
-          (enc nb2 b c d a (pubk e)) (enc nc1 c d a b (pubk e))
-          (enc na0 nb3 b c d e (pubk a)) (enc na1 nc2 c b d e (pubk a))
-          (enc na2 nd1 d e b c (pubk a)) (enc nb0 nc3 c d e a (pubk b))
-          (enc nb1 nd2 d c e a (pubk b)) (enc nc0 nd3 d e a b (pubk c))
-          (pubk e)))
-      (send
-        (enc na3 ne0 e b c d (enc na0 nb3 b c d e (pubk a))
-          (enc na1 nc2 c b d e (pubk a)) (enc na2 nd1 d e b c (pubk a))
-          (enc nb0 nc3 c d e a (pubk b)) (enc nb1 nd2 d c e a (pubk b))
-          (enc nb2 ne1 e a c d (pubk b)) (enc nc0 nd3 d e a b (pubk c))
-          (enc nc1 ne2 e a b d (pubk c)) (enc nd0 ne3 e a b c (pubk d))
-          (pubk a)))
-      (recv
-        (enc ne3 (enc ne0 (pubk e)) (enc ne1 (pubk e))
-          (enc ne2 (pubk e)) (pubk e))))
-    (uniq-orig ne0 ne1 ne2 ne3)))
-
-(defskeleton nsl5 (vars (a b c d e name))
-  (defstrand resp3 4 (a a) (b b) (c c) (d d) (e e))
-  (non-orig (privk a) (privk b) (privk c) (privk d) (privk e)))
diff --git a/tst/nslsk.tst b/tst/nslsk.tst
--- a/tst/nslsk.tst
+++ b/tst/nslsk.tst
@@ -1,6 +1,6 @@
 (herald "Needham-Schroeder-Lowe Protocol with symmetric encryption")
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/nslsk.scm")
 
 (defprotocol nslsk basic
@@ -40,6 +40,7 @@
   (non-orig (privk a))
   (uniq-orig k)
   (operation encryption-test (added-strand init 3) (enc t k) (0 2))
+  (strand-map 0)
   (traces
     ((recv (enc n a (pubk b))) (send (enc n k b (pubk a)))
       (recv (enc t k)))
@@ -58,6 +59,7 @@
   (non-orig (privk a))
   (uniq-orig k)
   (operation encryption-test (added-listener k) (enc t k) (0 2))
+  (strand-map 0)
   (traces
     ((recv (enc n a (pubk b))) (send (enc n k b (pubk a)))
       (recv (enc t k))) ((recv k) (send k)))
@@ -76,6 +78,7 @@
   (uniq-orig k)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (n-0 n)) k (1 1)
     (enc n k b (pubk a)))
+  (strand-map 0 1)
   (traces
     ((recv (enc n a (pubk b))) (send (enc n k b (pubk a)))
       (recv (enc t k)))
@@ -128,6 +131,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand resp 2) n (0 1)
     (enc n a (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc n a (pubk b))) (recv (enc n k b (pubk a)))
       (send (enc t k)))
@@ -178,6 +182,7 @@
   (non-orig (privk a))
   (uniq-orig k)
   (operation encryption-test (added-strand init 3) (enc "t" k) (0 2))
+  (strand-map 0)
   (traces
     ((recv (enc n a (pubk b))) (send (enc n k b (pubk a)))
       (recv (enc "t" k)))
@@ -196,6 +201,7 @@
   (non-orig (privk a))
   (uniq-orig k)
   (operation encryption-test (added-listener k) (enc "t" k) (0 2))
+  (strand-map 0)
   (traces
     ((recv (enc n a (pubk b))) (send (enc n k b (pubk a)))
       (recv (enc "t" k))) ((recv k) (send k)))
@@ -214,6 +220,7 @@
   (uniq-orig k)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (n-0 n)) k (1 1)
     (enc n k b (pubk a)))
+  (strand-map 0 1)
   (traces
     ((recv (enc n a (pubk b))) (send (enc n k b (pubk a)))
       (recv (enc "t" k)))
@@ -266,6 +273,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand resp 2) n (0 1)
     (enc n a (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc n a (pubk b))) (recv (enc n k b (pubk a)))
       (send (enc "t" k)))
diff --git a/tst/nslsk_shapes.tst b/tst/nslsk_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/nslsk_shapes.tst
@@ -0,0 +1,214 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Needham-Schroeder-Lowe Protocol with symmetric encryption")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/nslsk.scm")
+
+(defprotocol nslsk basic
+  (defrole init
+    (vars (a b name) (n text) (k skey) (t text))
+    (trace (send (enc n a (pubk b))) (recv (enc n k b (pubk a)))
+      (send (enc t k))))
+  (defrole resp
+    (vars (b a name) (n text) (k skey) (t text))
+    (trace (recv (enc n a (pubk b))) (send (enc n k b (pubk a)))
+      (recv (enc t k))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton nslsk
+  (vars (k skey) (n t text) (a b name))
+  (defstrand resp 3 (k k) (n n) (t t) (b b) (a a))
+  (non-orig (privk a))
+  (uniq-orig k)
+  (traces
+    ((recv (enc n a (pubk b))) (send (enc n k b (pubk a)))
+      (recv (enc t k))))
+  (label 0)
+  (unrealized (0 2))
+  (origs (k (0 1)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton nslsk
+  (vars (k skey) (n t text) (a b name))
+  (defstrand resp 3 (k k) (n n) (t t) (b b) (a a))
+  (defstrand init 3 (k k) (n n) (t t) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig (privk a))
+  (uniq-orig k)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (n-0 n)) k (1 1)
+    (enc n k b (pubk a)))
+  (traces
+    ((recv (enc n a (pubk b))) (send (enc n k b (pubk a)))
+      (recv (enc t k)))
+    ((send (enc n a (pubk b))) (recv (enc n k b (pubk a)))
+      (send (enc t k))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (k k) (b b) (n n) (t t))))
+  (origs (k (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol nslsk basic
+  (defrole init
+    (vars (a b name) (n text) (k skey) (t text))
+    (trace (send (enc n a (pubk b))) (recv (enc n k b (pubk a)))
+      (send (enc t k))))
+  (defrole resp
+    (vars (b a name) (n text) (k skey) (t text))
+    (trace (recv (enc n a (pubk b))) (send (enc n k b (pubk a)))
+      (recv (enc t k))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton nslsk
+  (vars (k skey) (n t text) (b a name))
+  (defstrand init 3 (k k) (n n) (t t) (a a) (b b))
+  (non-orig (privk b))
+  (uniq-orig n)
+  (traces
+    ((send (enc n a (pubk b))) (recv (enc n k b (pubk a)))
+      (send (enc t k))))
+  (label 4)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton nslsk
+  (vars (k k-0 skey) (n t text) (b a name))
+  (defstrand init 3 (k k) (n n) (t t) (a a) (b b))
+  (defstrand resp 2 (k k-0) (n n) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk b))
+  (uniq-orig n)
+  (operation nonce-test (added-strand resp 2) n (0 1)
+    (enc n a (pubk b)))
+  (traces
+    ((send (enc n a (pubk b))) (recv (enc n k b (pubk a)))
+      (send (enc t k)))
+    ((recv (enc n a (pubk b))) (send (enc n k-0 b (pubk a)))))
+  (label 5)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (n n) (a a) (k k) (t t))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol nslsk-tag-term basic
+  (defrole init
+    (vars (a b name) (n text) (k skey))
+    (trace (send (enc n a (pubk b))) (recv (enc n k b (pubk a)))
+      (send (enc "t" k))))
+  (defrole resp
+    (vars (b a name) (n text) (k skey))
+    (trace (recv (enc n a (pubk b))) (send (enc n k b (pubk a)))
+      (recv (enc "t" k))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton nslsk-tag-term
+  (vars (k skey) (n text) (a b name))
+  (defstrand resp 3 (k k) (n n) (b b) (a a))
+  (non-orig (privk a))
+  (uniq-orig k)
+  (traces
+    ((recv (enc n a (pubk b))) (send (enc n k b (pubk a)))
+      (recv (enc "t" k))))
+  (label 6)
+  (unrealized (0 2))
+  (origs (k (0 1)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton nslsk-tag-term
+  (vars (k skey) (n text) (a b name))
+  (defstrand resp 3 (k k) (n n) (b b) (a a))
+  (defstrand init 3 (k k) (n n) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig (privk a))
+  (uniq-orig k)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (n-0 n)) k (1 1)
+    (enc n k b (pubk a)))
+  (traces
+    ((recv (enc n a (pubk b))) (send (enc n k b (pubk a)))
+      (recv (enc "t" k)))
+    ((send (enc n a (pubk b))) (recv (enc n k b (pubk a)))
+      (send (enc "t" k))))
+  (label 9)
+  (parent 6)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (k k) (b b) (n n))))
+  (origs (k (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol nslsk-tag-term basic
+  (defrole init
+    (vars (a b name) (n text) (k skey))
+    (trace (send (enc n a (pubk b))) (recv (enc n k b (pubk a)))
+      (send (enc "t" k))))
+  (defrole resp
+    (vars (b a name) (n text) (k skey))
+    (trace (recv (enc n a (pubk b))) (send (enc n k b (pubk a)))
+      (recv (enc "t" k))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton nslsk-tag-term
+  (vars (k skey) (n text) (b a name))
+  (defstrand init 3 (k k) (n n) (a a) (b b))
+  (non-orig (privk b))
+  (uniq-orig n)
+  (traces
+    ((send (enc n a (pubk b))) (recv (enc n k b (pubk a)))
+      (send (enc "t" k))))
+  (label 10)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton nslsk-tag-term
+  (vars (k k-0 skey) (n text) (b a name))
+  (defstrand init 3 (k k) (n n) (a a) (b b))
+  (defstrand resp 2 (k k-0) (n n) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk b))
+  (uniq-orig n)
+  (operation nonce-test (added-strand resp 2) n (0 1)
+    (enc n a (pubk b)))
+  (traces
+    ((send (enc n a (pubk b))) (recv (enc n k b (pubk a)))
+      (send (enc "t" k)))
+    ((recv (enc n a (pubk b))) (send (enc n k-0 b (pubk a)))))
+  (label 11)
+  (parent 10)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (n n) (a a) (k k))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/open-closed-multiloc.tst b/tst/open-closed-multiloc.tst
--- a/tst/open-closed-multiloc.tst
+++ b/tst/open-closed-multiloc.tst
@@ -1,6 +1,6 @@
 (herald open-closed (bound 44))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/open-closed-multiloc.scm")
 (comment "Strand count bounded at 44")
 
@@ -171,6 +171,7 @@
     trRl_dev-up-at-4)
   (operation nonce-test (added-strand dev-up 5) k (1 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv k) (send k))
     ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt old))
@@ -178,9 +179,9 @@
       (stor lk (cat pt-2 "st-k" d o k))))
   (label 2)
   (parent 1)
-  (seen 2)
   (unrealized (0 1) (1 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (comment "Nothing left to do")
 
@@ -347,6 +348,7 @@
   (rule trRl_dev-open-at-2 trRl_dev-open-at-3)
   (operation channel-test (added-strand dev-open 4)
     (ch-msg ls (cat pt-0 "st" d o o)) (0 2))
+  (strand-map 0)
   (traces
     ((load lk (cat pt "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt-0 "st" d o o)) (send (enc "you may pass" n k)))
@@ -557,6 +559,7 @@
     trRl_dev-up-at-4)
   (operation nonce-test (added-strand dev-up 5) k (1 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt "st-k" d-0 o-0 k)) (recv (enc "may I pass" k))
       (load ls (cat pt-0 "st" d-0 o-0 o-0))
@@ -566,9 +569,8 @@
       (stor lk-0 (cat pt-4 "st-k" d o k))))
   (label 9)
   (parent 8)
-  (seen 9)
   (unrealized (0 1) (1 0) (1 1) (1 2))
-  (comment "2 in cohort - 1 not yet seen"))
+  (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton open-closed
   (vars (old old1 mesg) (k skey) (n text) (d o name)
@@ -589,6 +591,7 @@
     (contracted (d-0 d) (o-0 o) (lk-0 lk) (pt-4 pt-3)) k (1 0)
     (ch-msg start-ch (cat "power-up" d o k))
     (ch-msg lk (cat pt-3 "st-k" d o k)))
+  (strand-map 0 1 2)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-3 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -618,6 +621,7 @@
     trRl_dev-up-at-4)
   (operation encryption-test (added-strand user-pass 1)
     (enc "may I pass" k) (1 1))
+  (strand-map 0 1 2)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-3 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -647,6 +651,7 @@
     trRl_dev-up-at-4)
   (operation encryption-test (added-listener k) (enc "may I pass" k)
     (1 1))
+  (strand-map 0 1 2)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-3 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -656,6 +661,10 @@
   (label 12)
   (parent 10)
   (seen 14)
+  (seen-ops
+    (14
+      (operation nonce-test (added-strand dev-up 5) k (3 0)
+        (ch-msg start-ch (cat "power-up" d o k))) (strand-map 0 1 3 2)))
   (unrealized (0 1) (1 2) (3 0))
   (comment "2 in cohort - 1 not yet seen"))
 
@@ -680,6 +689,7 @@
     trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (added-strand dev-open 4)
     (ch-msg ls (cat pt "st" d o o)) (1 2))
+  (strand-map 0 1 2 3)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-3 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -692,6 +702,10 @@
   (label 13)
   (parent 11)
   (seen 15)
+  (seen-ops
+    (15
+      (operation encryption-test (added-strand dev-up 6) (enc "up" k)
+        (0 1)) (strand-map 0 1 2 3 4)))
   (unrealized (0 1))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -713,6 +727,7 @@
     trRl_dev-up-at-4)
   (operation nonce-test (displaced 4 2 dev-up 5) k (3 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-3 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -721,9 +736,9 @@
       (stor lk (cat pt-3 "st-k" d o k))) ((recv k) (send k)))
   (label 14)
   (parent 12)
-  (seen 14)
   (unrealized (0 1) (1 2) (3 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (defskeleton open-closed
   (vars (any old old1 mesg) (k k-0 skey) (n n-0 text) (d o name)
@@ -747,6 +762,7 @@
     trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (displaced 2 5 dev-up 6) (enc "up" k)
     (0 1))
+  (strand-map 0 1 4 2 3)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk-0 (cat pt-5 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -788,6 +804,7 @@
   (rule trRl_dev-open-at-2 trRl_dev-open-at-3 trRl_dev-up-at-1
     trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (added-listener k) (enc "up" k) (0 1))
+  (strand-map 0 1 2 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-3 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -800,6 +817,11 @@
   (label 16)
   (parent 13)
   (seen 17)
+  (seen-ops
+    (17
+      (operation nonce-test (added-strand dev-up 5) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 3 4 5 2)))
   (unrealized (5 0))
   (comment "2 in cohort - 1 not yet seen"))
 
@@ -826,6 +848,7 @@
     trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation nonce-test (displaced 6 2 dev-up 5) k (5 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4 5)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-3 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -837,8 +860,8 @@
       (stor ls (cat pt "st" d o o))) ((recv k) (send k)))
   (label 17)
   (parent 16)
-  (seen 17)
   (unrealized (5 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (comment "Nothing left to do")
diff --git a/tst/open-closed-multiloc_shapes.tst b/tst/open-closed-multiloc_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/open-closed-multiloc_shapes.tst
@@ -0,0 +1,417 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald open-closed (bound 44))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/open-closed-multiloc.scm")
+
+(comment "Strand count bounded at 44")
+
+(defprotocol open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (load ls old1) (stor ls (cat "st" d o))
+      (stor lk (cat "st-k" d o k)) (send (enc "up" k)))
+    (auth start-ch))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "open" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o o)) (send n)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "close" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat "st" d o o)) (send (enc "you may pass" n k)))
+    (uniq-orig n))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule gen-state-close
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "d" z d)
+          (p "dev-close" "o" z o) (p "dev-close" "k" z k)
+          (p "dev-close" "any" z (cat o o)))
+        (gen-st (cat "st" d o o)))))
+  (defrule gen-state-pass
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "d" z d)
+          (p "dev-pass" "o" z o) (p "dev-pass" "k" z k))
+        (gen-st (cat "st" d o o)))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-2
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 2))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2))))
+  (defgenrule eff-dev-up-3
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 4) (prec z 3 z1 i))
+        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
+  (defgenrule cau-dev-up-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1))))))
+
+(defskeleton open-closed
+  (vars (k skey) (d o name) (start-ch chan))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (deflistener k)
+  (uniq-orig k)
+  (conf start-ch)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv k) (send k)))
+  (label 0)
+  (unrealized (0 1) (1 0))
+  (preskeleton)
+  (origs (k (0 0)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (load ls old1) (stor ls (cat "st" d o))
+      (stor lk (cat "st-k" d o k)) (send (enc "up" k)))
+    (auth start-ch))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "open" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o o)) (send n)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "close" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat "st" d o o)) (send (enc "you may pass" n k)))
+    (uniq-orig n))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule gen-state-close
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "d" z d)
+          (p "dev-close" "o" z o) (p "dev-close" "k" z k)
+          (p "dev-close" "any" z (cat o o)))
+        (gen-st (cat "st" d o o)))))
+  (defrule gen-state-pass
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "d" z d)
+          (p "dev-pass" "o" z o) (p "dev-pass" "k" z k))
+        (gen-st (cat "st" d o o)))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-2
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 2))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2))))
+  (defgenrule eff-dev-up-3
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 4) (prec z 3 z1 i))
+        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
+  (defgenrule cau-dev-up-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1))))))
+
+(defskeleton open-closed
+  (vars (k skey) (n text) (d o name) (pt pt-0 pval) (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (uniq-orig n)
+  (traces
+    ((load lk (cat pt "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat pt-0 "st" d o o)) (send (enc "you may pass" n k))))
+  (label 3)
+  (realized)
+  (origs (n (0 3)))
+  (comment "Not closed under rules"))
+
+(defskeleton open-closed
+  (vars (any mesg) (k k-0 skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pval) (lk ls lk-0 locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k-0) (n n-0) (d d) (o o) (lk lk-0)
+    (ls ls))
+  (precedes ((1 3) (0 2)))
+  (uniq-orig n)
+  (gen-st (cat "st" d o o))
+  (facts (trans 1 3) (trans 1 2))
+  (rule trRl_dev-open-at-3 trRl_dev-open-at-2)
+  (operation channel-test (added-strand dev-open 4)
+    (ch-msg ls (cat pt-0 "st" d o o)) (0 2))
+  (traces
+    ((load lk (cat pt "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat pt-0 "st" d o o)) (send (enc "you may pass" n k)))
+    ((load lk-0 (cat pt-1 "st-k" d o k-0))
+      (recv (enc "open" d o n-0 k-0)) (load ls (cat pt-2 "st" d any))
+      (stor ls (cat pt-0 "st" d o o))))
+  (label 5)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps
+    ((0) ((k k) (n n) (d d) (o o) (lk lk) (ls ls) (pt pt) (pt-0 pt-0))))
+  (origs (pt-0 (1 3)) (n (0 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (load ls old1) (stor ls (cat "st" d o))
+      (stor lk (cat "st-k" d o k)) (send (enc "up" k)))
+    (auth start-ch))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "open" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o o)) (send n)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "close" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat "st" d o o)) (send (enc "you may pass" n k)))
+    (uniq-orig n))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule gen-state-close
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "d" z d)
+          (p "dev-close" "o" z o) (p "dev-close" "k" z k)
+          (p "dev-close" "any" z (cat o o)))
+        (gen-st (cat "st" d o o)))))
+  (defrule gen-state-pass
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "d" z d)
+          (p "dev-pass" "o" z o) (p "dev-pass" "k" z k))
+        (gen-st (cat "st" d o o)))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-2
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 2))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2))))
+  (defgenrule eff-dev-up-3
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 4) (prec z 3 z1 i))
+        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
+  (defgenrule cau-dev-up-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1))))))
+
+(defskeleton open-closed
+  (vars (k skey) (n text) (d o d-0 o-0 name) (pt pt-0 pval)
+    (start-ch chan) (lk ls locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d-0) (o o-0) (lk lk) (ls ls))
+  (uniq-orig k n)
+  (conf start-ch)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt "st-k" d-0 o-0 k)) (recv (enc "may I pass" k))
+      (load ls (cat pt-0 "st" d-0 o-0 o-0))
+      (send (enc "you may pass" n k))))
+  (label 6)
+  (unrealized (0 1) (1 0) (1 1))
+  (preskeleton)
+  (origs (n (1 3)) (k (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton open-closed
+  (vars (any old old1 mesg) (k k-0 skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval) (start-ch chan)
+    (ls lk lk-0 ls-0 locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk-0) (ls ls))
+  (defstrand user-pass 1 (k k))
+  (defstrand dev-open 4 (any any) (k k-0) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk-0) (ls ls-0))
+  (precedes ((0 0) (4 0)) ((2 0) (1 1)) ((3 3) (1 2)) ((4 4) (1 0))
+    ((4 5) (0 1)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (trans 3 3) (trans 3 2) (trans 4 4) (trans 4 3) (trans 4 2)
+    (trans 4 1))
+  (operation encryption-test (displaced 2 5 dev-up 6) (enc "up" k)
+    (0 1))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk-0 (cat pt-5 "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
+    ((send (enc "may I pass" k)))
+    ((load lk (cat pt-0 "st-k" d o k-0)) (recv (enc "open" d o n-0 k-0))
+      (load ls (cat pt-1 "st" d any)) (stor ls (cat pt "st" d o o)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk-0 (cat pt-2 old))
+      (load ls-0 (cat pt-3 old1)) (stor ls-0 (cat pt-4 "st" d o))
+      (stor lk-0 (cat pt-5 "st-k" d o k)) (send (enc "up" k))))
+  (label 15)
+  (parent 6)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((k k) (d d) (o o) (start-ch start-ch) (n n) (d-0 d) (o-0 o)
+        (lk lk-0) (ls ls) (pt pt-5) (pt-0 pt))))
+  (origs (pt-4 (4 3)) (pt-5 (4 4)) (pt (3 3)) (n (1 3)) (k (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/open-closed-tag.tst b/tst/open-closed-tag.tst
--- a/tst/open-closed-tag.tst
+++ b/tst/open-closed-tag.tst
@@ -1,6 +1,6 @@
 (herald open-closed (bound 44))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/open-closed-tag.scm")
 (comment "Strand count bounded at 44")
 
@@ -163,15 +163,16 @@
   (rule trRl_dev-up-at-1 trRl_dev-up-at-2)
   (operation nonce-test (added-strand dev-up 3) k (1 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv k) (send k))
     ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt old))
       (stor lk (cat pt-0 "st-k" d o k))))
   (label 2)
   (parent 1)
-  (seen 2)
   (unrealized (0 1) (1 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (comment "Nothing left to do")
 
@@ -333,6 +334,7 @@
   (rule trRl_dev-open-at-2 trRl_dev-open-at-3)
   (operation channel-test (added-strand dev-open 4)
     (ch-msg ls (cat pt-0 "st" d "opened")) (0 2))
+  (strand-map 0)
   (traces
     ((load lk (cat pt "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt-0 "st" d "opened"))
@@ -535,6 +537,7 @@
   (rule trRl_dev-up-at-1 trRl_dev-up-at-2)
   (operation nonce-test (added-strand dev-up 3) k (1 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt "st-k" d-0 o-0 k)) (recv (enc "may I pass" k))
       (load ls (cat pt-0 "st" d-0 "opened"))
@@ -543,9 +546,8 @@
       (stor lk-0 (cat pt-2 "st-k" d o k))))
   (label 9)
   (parent 8)
-  (seen 9)
   (unrealized (0 1) (1 0) (1 1) (1 2))
-  (comment "2 in cohort - 1 not yet seen"))
+  (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton open-closed
   (vars (old mesg) (k skey) (n text) (d o name) (pt pt-0 pt-1 pval)
@@ -565,6 +567,7 @@
     (contracted (d-0 d) (o-0 o) (lk-0 lk) (pt-2 pt-1)) k (1 0)
     (ch-msg start-ch (cat "power-up" d o k))
     (ch-msg lk (cat pt-1 "st-k" d o k)))
+  (strand-map 0 1 2)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-1 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d "opened"))
@@ -593,6 +596,7 @@
   (rule trRl_dev-up-at-1 trRl_dev-up-at-2)
   (operation encryption-test (added-strand user-pass 1)
     (enc "may I pass" k) (1 1))
+  (strand-map 0 1 2)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-1 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d "opened"))
@@ -621,6 +625,7 @@
   (rule trRl_dev-up-at-1 trRl_dev-up-at-2)
   (operation encryption-test (added-listener k) (enc "may I pass" k)
     (1 1))
+  (strand-map 0 1 2)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-1 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d "opened"))
@@ -630,6 +635,10 @@
   (label 12)
   (parent 10)
   (seen 14)
+  (seen-ops
+    (14
+      (operation nonce-test (added-strand dev-up 3) k (3 0)
+        (ch-msg start-ch (cat "power-up" d o k))) (strand-map 0 1 3 2)))
   (unrealized (0 1) (1 2) (3 0))
   (comment "2 in cohort - 1 not yet seen"))
 
@@ -653,6 +662,7 @@
     trRl_dev-up-at-2)
   (operation channel-test (added-strand dev-open 4)
     (ch-msg ls (cat pt "st" d "opened")) (1 2))
+  (strand-map 0 1 2 3)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-1 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d "opened"))
@@ -665,6 +675,10 @@
   (label 13)
   (parent 11)
   (seen 15)
+  (seen-ops
+    (15
+      (operation encryption-test (added-strand dev-up 6) (enc "up" k)
+        (0 1)) (strand-map 0 1 2 3 4)))
   (unrealized (0 1))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -685,6 +699,7 @@
   (rule trRl_dev-up-at-1 trRl_dev-up-at-2)
   (operation nonce-test (displaced 4 2 dev-up 3) k (3 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-1 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d "opened"))
@@ -693,9 +708,9 @@
       (stor lk (cat pt-1 "st-k" d o k))) ((recv k) (send k)))
   (label 14)
   (parent 12)
-  (seen 14)
   (unrealized (0 1) (1 2) (3 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (defskeleton open-closed
   (vars (any old old1 mesg) (k k-0 skey) (n n-0 text) (o d o-0 name)
@@ -719,6 +734,7 @@
     trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (displaced 2 5 dev-up 6) (enc "up" k)
     (0 1))
+  (strand-map 0 1 4 2 3)
   (traces ((send start-ch (cat "power-up" d o-0 k)) (recv (enc "up" k)))
     ((load lk-0 (cat pt-3 "st-k" d o-0 k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d "opened"))
@@ -760,6 +776,7 @@
   (rule trRl_dev-open-at-2 trRl_dev-open-at-3 trRl_dev-up-at-1
     trRl_dev-up-at-2)
   (operation encryption-test (added-listener k) (enc "up" k) (0 1))
+  (strand-map 0 1 2 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-1 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d "opened"))
@@ -772,6 +789,11 @@
   (label 16)
   (parent 13)
   (seen 17)
+  (seen-ops
+    (17
+      (operation nonce-test (added-strand dev-up 3) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 3 4 5 2)))
   (unrealized (5 0))
   (comment "2 in cohort - 1 not yet seen"))
 
@@ -797,6 +819,7 @@
     trRl_dev-up-at-2)
   (operation nonce-test (displaced 6 2 dev-up 3) k (5 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4 5)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-1 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d "opened"))
@@ -808,9 +831,9 @@
       (stor ls (cat pt "st" d "opened"))) ((recv k) (send k)))
   (label 17)
   (parent 16)
-  (seen 17)
   (unrealized (5 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (comment "Nothing left to do")
 
@@ -994,10 +1017,9 @@
       (stor ls (cat pt-7 "st" d "opened"))))
   (label 19)
   (parent 18)
-  (seen 19)
   (unrealized (1 0) (1 2))
   (origs (pt-7 (4 3)) (pt-4 (2 4)) (pt-2 (2 2)) (n (1 3)) (k (0 0)))
-  (comment "2 in cohort - 1 not yet seen"))
+  (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton open-closed
   (vars (old old1 any mesg) (k k-0 skey) (n n-0 text) (d o name)
@@ -1022,6 +1044,7 @@
   (operation nonce-test (contracted (pt-7 pt-1)) k (1 0)
     (ch-msg start-ch (cat "power-up" d o k))
     (ch-msg lk (cat pt-1 "st-k" d o k)))
+  (strand-map 0 1 2 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-1 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d "opened"))
@@ -1036,6 +1059,11 @@
   (label 20)
   (parent 19)
   (seen 21)
+  (seen-ops
+    (21
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d "opened")) (1 2))
+      (strand-map 0 1 2 3 4)))
   (unrealized (1 2))
   (origs (pt-6 (4 3)) (pt-3 (2 4)) (pt-1 (2 2)) (n (1 3)) (k (0 0)))
   (comment "3 in cohort - 2 not yet seen"))
@@ -1062,6 +1090,7 @@
     trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (displaced 5 4 dev-open 4)
     (ch-msg ls (cat pt-6 "st" d "opened")) (1 2))
+  (strand-map 0 1 2 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-0 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt-5 "st" d "opened"))
@@ -1109,6 +1138,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (added-strand dev-open 4)
     (ch-msg ls (cat pt "st" d "opened")) (1 2))
+  (strand-map 0 1 2 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-1 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d "opened"))
@@ -1127,6 +1157,9 @@
   (label 22)
   (parent 20)
   (seen 21)
+  (seen-ops
+    (21 (operation generalization weakened ((4 3) (5 2)))
+      (strand-map 0 1 2 3 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/open-closed-tag_shapes.tst b/tst/open-closed-tag_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/open-closed-tag_shapes.tst
@@ -0,0 +1,625 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald open-closed (bound 44))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/open-closed-tag.scm")
+
+(comment "Strand count bounded at 44")
+
+(defprotocol open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (stor lk (cat "st-k" d o k)) (load ls old1)
+      (stor ls (cat "st" d "closed")) (send (enc "up" k)))
+    (auth start-ch))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "open" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d "opened"))
+      (send n)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "close" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d "closed"))
+      (send n)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat "st" d "opened")) (send (enc "you may pass" n k)))
+    (uniq-orig n))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule gen-state-close
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "d" z d)
+          (p "dev-close" "o" z o) (p "dev-close" "k" z k)
+          (p "dev-close" "any" z "opened"))
+        (gen-st (cat "st" d "opened")))))
+  (defrule gen-state-pass
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "d" z d)
+          (p "dev-pass" "o" z o) (p "dev-pass" "k" z k))
+        (gen-st (cat "st" d "opened")))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-2
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 2))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2)))))
+
+(defskeleton open-closed
+  (vars (k skey) (d o name) (start-ch chan))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (deflistener k)
+  (uniq-orig k)
+  (conf start-ch)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv k) (send k)))
+  (label 0)
+  (unrealized (0 1) (1 0))
+  (preskeleton)
+  (origs (k (0 0)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (stor lk (cat "st-k" d o k)) (load ls old1)
+      (stor ls (cat "st" d "closed")) (send (enc "up" k)))
+    (auth start-ch))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "open" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d "opened"))
+      (send n)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "close" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d "closed"))
+      (send n)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat "st" d "opened")) (send (enc "you may pass" n k)))
+    (uniq-orig n))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule gen-state-close
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "d" z d)
+          (p "dev-close" "o" z o) (p "dev-close" "k" z k)
+          (p "dev-close" "any" z "opened"))
+        (gen-st (cat "st" d "opened")))))
+  (defrule gen-state-pass
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "d" z d)
+          (p "dev-pass" "o" z o) (p "dev-pass" "k" z k))
+        (gen-st (cat "st" d "opened")))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-2
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 2))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2)))))
+
+(defskeleton open-closed
+  (vars (k skey) (n text) (d o name) (pt pt-0 pval) (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (uniq-orig n)
+  (traces
+    ((load lk (cat pt "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat pt-0 "st" d "opened"))
+      (send (enc "you may pass" n k))))
+  (label 3)
+  (realized)
+  (origs (n (0 3)))
+  (comment "Not closed under rules"))
+
+(defskeleton open-closed
+  (vars (any mesg) (k k-0 skey) (n n-0 text) (d o o-0 name)
+    (pt pt-0 pt-1 pt-2 pval) (lk ls lk-0 locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k-0) (n n-0) (d d) (o o-0)
+    (lk lk-0) (ls ls))
+  (precedes ((1 3) (0 2)))
+  (uniq-orig n)
+  (gen-st (cat "st" d "opened"))
+  (facts (trans 1 3) (trans 1 2))
+  (rule trRl_dev-open-at-3 trRl_dev-open-at-2)
+  (operation channel-test (added-strand dev-open 4)
+    (ch-msg ls (cat pt-0 "st" d "opened")) (0 2))
+  (traces
+    ((load lk (cat pt "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat pt-0 "st" d "opened"))
+      (send (enc "you may pass" n k)))
+    ((load lk-0 (cat pt-1 "st-k" d o-0 k-0))
+      (recv (enc "open" d o-0 n-0 k-0)) (load ls (cat pt-2 "st" d any))
+      (stor ls (cat pt-0 "st" d "opened"))))
+  (label 5)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps
+    ((0) ((k k) (n n) (d d) (o o) (lk lk) (ls ls) (pt pt) (pt-0 pt-0))))
+  (origs (pt-0 (1 3)) (n (0 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (stor lk (cat "st-k" d o k)) (load ls old1)
+      (stor ls (cat "st" d "closed")) (send (enc "up" k)))
+    (auth start-ch))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "open" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d "opened"))
+      (send n)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "close" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d "closed"))
+      (send n)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat "st" d "opened")) (send (enc "you may pass" n k)))
+    (uniq-orig n))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule gen-state-close
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "d" z d)
+          (p "dev-close" "o" z o) (p "dev-close" "k" z k)
+          (p "dev-close" "any" z "opened"))
+        (gen-st (cat "st" d "opened")))))
+  (defrule gen-state-pass
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "d" z d)
+          (p "dev-pass" "o" z o) (p "dev-pass" "k" z k))
+        (gen-st (cat "st" d "opened")))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-2
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 2))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2)))))
+
+(defskeleton open-closed
+  (vars (k skey) (n text) (d o d-0 o-0 name) (pt pt-0 pval)
+    (start-ch chan) (lk ls locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d-0) (o o-0) (lk lk) (ls ls))
+  (uniq-orig k n)
+  (conf start-ch)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt "st-k" d-0 o-0 k)) (recv (enc "may I pass" k))
+      (load ls (cat pt-0 "st" d-0 "opened"))
+      (send (enc "you may pass" n k))))
+  (label 6)
+  (unrealized (0 1) (1 0) (1 1))
+  (preskeleton)
+  (origs (n (1 3)) (k (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton open-closed
+  (vars (any old old1 mesg) (k k-0 skey) (n n-0 text) (o d o-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval) (start-ch chan)
+    (ls lk lk-0 ls-0 locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o-0) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o-0) (lk lk-0) (ls ls))
+  (defstrand user-pass 1 (k k))
+  (defstrand dev-open 4 (any any) (k k-0) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o-0)
+    (start-ch start-ch) (lk lk-0) (ls ls-0))
+  (precedes ((0 0) (4 0)) ((2 0) (1 1)) ((3 3) (1 2)) ((4 2) (1 0))
+    ((4 5) (0 1)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d "opened"))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (trans 4 4) (trans 4 3) (trans 3 3) (trans 3 2) (trans 4 2)
+    (trans 4 1))
+  (rule trRl_dev-up-at-4 trRl_dev-up-at-3)
+  (operation encryption-test (displaced 2 5 dev-up 6) (enc "up" k)
+    (0 1))
+  (traces ((send start-ch (cat "power-up" d o-0 k)) (recv (enc "up" k)))
+    ((load lk-0 (cat pt-3 "st-k" d o-0 k)) (recv (enc "may I pass" k))
+      (load ls (cat pt "st" d "opened"))
+      (send (enc "you may pass" n k))) ((send (enc "may I pass" k)))
+    ((load lk (cat pt-0 "st-k" d o k-0)) (recv (enc "open" d o n-0 k-0))
+      (load ls (cat pt-1 "st" d any))
+      (stor ls (cat pt "st" d "opened")))
+    ((recv start-ch (cat "power-up" d o-0 k)) (load lk-0 (cat pt-2 old))
+      (stor lk-0 (cat pt-3 "st-k" d o-0 k)) (load ls-0 (cat pt-4 old1))
+      (stor ls-0 (cat pt-5 "st" d "closed")) (send (enc "up" k))))
+  (label 15)
+  (parent 6)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((k k) (d d) (o o-0) (start-ch start-ch) (n n) (d-0 d) (o-0 o-0)
+        (lk lk-0) (ls ls) (pt pt-3) (pt-0 pt))))
+  (origs (pt-3 (4 2)) (pt-5 (4 4)) (pt (3 3)) (n (1 3)) (k (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (stor lk (cat "st-k" d o k)) (load ls old1)
+      (stor ls (cat "st" d "closed")) (send (enc "up" k)))
+    (auth start-ch))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "open" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d "opened"))
+      (send n)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "close" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d "closed"))
+      (send n)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat "st" d "opened")) (send (enc "you may pass" n k)))
+    (uniq-orig n))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule gen-state-close
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "d" z d)
+          (p "dev-close" "o" z o) (p "dev-close" "k" z k)
+          (p "dev-close" "any" z "opened"))
+        (gen-st (cat "st" d "opened")))))
+  (defrule gen-state-pass
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "d" z d)
+          (p "dev-pass" "o" z o) (p "dev-pass" "k" z k))
+        (gen-st (cat "st" d "opened")))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-2
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 2))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2)))))
+
+(defskeleton open-closed
+  (vars (old old1 any mesg) (k k-0 skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pval) (start-ch chan)
+    (ls lk ls-0 lk-0 locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls-0))
+  (defstrand user-pass 1 (k k))
+  (defstrand dev-open 4 (any any) (k k-0) (n n-0) (d d) (o o) (lk lk-0)
+    (ls ls))
+  (precedes ((0 0) (2 0)) ((2 2) (1 0)) ((2 5) (0 1)) ((3 0) (1 1))
+    ((4 3) (1 2)))
+  (uniq-orig k n)
+  (conf start-ch)
+  (auth start-ch)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat pt-0 "st" d "opened"))
+      (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (stor lk (cat pt-2 "st-k" d o k)) (load ls-0 (cat pt-3 old1))
+      (stor ls-0 (cat pt-4 "st" d "closed")) (send (enc "up" k)))
+    ((send (enc "may I pass" k)))
+    ((load lk-0 (cat pt-5 "st-k" d o k-0))
+      (recv (enc "open" d o n-0 k-0)) (load ls (cat pt-6 "st" d any))
+      (stor ls (cat pt-7 "st" d "opened"))))
+  (label 18)
+  (unrealized (1 0))
+  (origs (pt-7 (4 3)) (pt-4 (2 4)) (pt-2 (2 2)) (n (1 3)) (k (0 0)))
+  (comment "Not closed under rules"))
+
+(defskeleton open-closed
+  (vars (old old1 any mesg) (k k-0 skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval) (start-ch chan)
+    (ls lk ls-0 lk-0 locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls-0))
+  (defstrand user-pass 1 (k k))
+  (defstrand dev-open 4 (any any) (k k-0) (n n-0) (d d) (o o) (lk lk-0)
+    (ls ls))
+  (precedes ((0 0) (2 0)) ((2 2) (1 0)) ((2 5) (0 1)) ((3 0) (1 1))
+    ((4 3) (1 2)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d "opened"))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (trans 2 4) (trans 2 3) (trans 2 2) (trans 2 1) (trans 4 3)
+    (trans 4 2))
+  (operation channel-test (displaced 5 4 dev-open 4)
+    (ch-msg ls (cat pt-6 "st" d "opened")) (1 2))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt-0 "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat pt-5 "st" d "opened"))
+      (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt old))
+      (stor lk (cat pt-0 "st-k" d o k)) (load ls-0 (cat pt-1 old1))
+      (stor ls-0 (cat pt-2 "st" d "closed")) (send (enc "up" k)))
+    ((send (enc "may I pass" k)))
+    ((load lk-0 (cat pt-3 "st-k" d o k-0))
+      (recv (enc "open" d o n-0 k-0)) (load ls (cat pt-4 "st" d any))
+      (stor ls (cat pt-5 "st" d "opened"))))
+  (label 21)
+  (parent 18)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 2 3 4)
+      ((old old) (old1 old1) (any any) (n n) (n-0 n-0) (d d) (o o) (k k)
+        (k-0 k-0) (start-ch start-ch) (ls ls) (lk lk) (ls-0 ls-0)
+        (lk-0 lk-0) (pt pt-0) (pt-0 pt-5) (pt-1 pt) (pt-2 pt-0)
+        (pt-3 pt-1) (pt-4 pt-2) (pt-5 pt-3) (pt-6 pt-4) (pt-7 pt-5))))
+  (origs (pt-5 (4 3)) (pt-2 (2 4)) (pt-0 (2 2)) (n (1 3)) (k (0 0))))
+
+(defskeleton open-closed
+  (vars (old old1 any any-0 mesg) (k k-0 k-1 skey) (n n-0 n-1 text)
+    (d o o-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval)
+    (start-ch chan) (ls lk ls-0 lk-0 lk-1 locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls-0))
+  (defstrand user-pass 1 (k k))
+  (defstrand dev-open 4 (any any) (k k-0) (n n-0) (d d) (o o) (lk lk-0)
+    (ls ls))
+  (defstrand dev-open 4 (any any-0) (k k-1) (n n-1) (d d) (o o-0)
+    (lk lk-1) (ls ls))
+  (precedes ((0 0) (2 0)) ((2 2) (1 0)) ((2 5) (0 1)) ((3 0) (1 1))
+    ((4 3) (5 2)) ((5 3) (1 2)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d "opened"))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (trans 5 3) (trans 5 2) (trans 2 4) (trans 2 3) (trans 2 2)
+    (trans 2 1) (trans 4 3) (trans 4 2))
+  (rule invShearsRule trRl_dev-open-at-3 trRl_dev-open-at-2)
+  (operation channel-test (added-strand dev-open 4)
+    (ch-msg ls (cat pt "st" d "opened")) (1 2))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt-1 "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat pt "st" d "opened"))
+      (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (stor lk (cat pt-1 "st-k" d o k)) (load ls-0 (cat pt-2 old1))
+      (stor ls-0 (cat pt-3 "st" d "closed")) (send (enc "up" k)))
+    ((send (enc "may I pass" k)))
+    ((load lk-0 (cat pt-4 "st-k" d o k-0))
+      (recv (enc "open" d o n-0 k-0)) (load ls (cat pt-5 "st" d any))
+      (stor ls (cat pt-6 "st" d "opened")))
+    ((load lk-1 (cat pt-7 "st-k" d o-0 k-1))
+      (recv (enc "open" d o-0 n-1 k-1))
+      (load ls (cat pt-8 "st" d any-0))
+      (stor ls (cat pt "st" d "opened"))))
+  (label 22)
+  (parent 18)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 2 3 4)
+      ((old old) (old1 old1) (any any) (n n) (n-0 n-0) (d d) (o o) (k k)
+        (k-0 k-0) (start-ch start-ch) (ls ls) (lk lk) (ls-0 ls-0)
+        (lk-0 lk-0) (pt pt-1) (pt-0 pt) (pt-1 pt-0) (pt-2 pt-1)
+        (pt-3 pt-2) (pt-4 pt-3) (pt-5 pt-4) (pt-6 pt-5) (pt-7 pt-6))))
+  (origs (pt (5 3)) (pt-6 (4 3)) (pt-3 (2 4)) (pt-1 (2 2)) (n (1 3))
+    (k (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/open-closed.tst b/tst/open-closed.tst
--- a/tst/open-closed.tst
+++ b/tst/open-closed.tst
@@ -1,6 +1,6 @@
 (herald open-closed (bound 44))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/open-closed.scm")
 (comment "Strand count bounded at 44")
 
@@ -171,15 +171,16 @@
   (rule same-locn trRl_dev-up-at-1 trRl_dev-up-at-2)
   (operation nonce-test (added-strand dev-up 3) k (1 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv k) (send k))
     ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt old))
       (stor lk (cat pt-0 "st-k" d o k))))
   (label 2)
   (parent 1)
-  (seen 2)
   (unrealized (0 1) (1 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (comment "Nothing left to do")
 
@@ -352,6 +353,7 @@
   (rule leadsto-la same-locn trRl_dev-open-at-2 trRl_dev-open-at-3)
   (operation channel-test (added-strand dev-open 4)
     (ch-msg ls (cat pt-0 "st" d o o)) (0 2))
+  (strand-map 0)
   (traces
     ((load lk (cat pt "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt-0 "st" d o o)) (send (enc "you may pass" n k)))
@@ -563,6 +565,7 @@
   (rule same-locn trRl_dev-up-at-1 trRl_dev-up-at-2)
   (operation nonce-test (added-strand dev-up 3) k (1 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt "st-k" d-0 o-0 k)) (recv (enc "may I pass" k))
       (load ls (cat pt-0 "st" d-0 o-0 o-0))
@@ -571,9 +574,8 @@
       (stor lk-0 (cat pt-2 "st-k" d o k))))
   (label 9)
   (parent 8)
-  (seen 9)
   (unrealized (0 1) (1 0) (1 1) (1 2))
-  (comment "2 in cohort - 1 not yet seen"))
+  (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton open-closed
   (vars (old mesg) (k skey) (n text) (d o name) (pt pt-0 pt-1 pval)
@@ -599,6 +601,7 @@
     (contracted (d-0 d) (o-0 o) (lk-0 lk) (pt-2 pt-1)) k (1 0)
     (ch-msg start-ch (cat "power-up" d o k))
     (ch-msg lk (cat pt-1 "st-k" d o k)))
+  (strand-map 0 1 2)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-1 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -632,6 +635,7 @@
   (rule leadsto-la same-locn trRl_dev-up-at-1 trRl_dev-up-at-2)
   (operation encryption-test (added-strand user-pass 1)
     (enc "may I pass" k) (1 1))
+  (strand-map 0 1 2)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-1 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -665,6 +669,7 @@
   (rule leadsto-la same-locn trRl_dev-up-at-1 trRl_dev-up-at-2)
   (operation encryption-test (added-listener k) (enc "may I pass" k)
     (1 1))
+  (strand-map 0 1 2)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-1 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -673,6 +678,10 @@
   (label 12)
   (parent 10)
   (seen 14)
+  (seen-ops
+    (14
+      (operation nonce-test (added-strand dev-up 3) k (3 0)
+        (ch-msg start-ch (cat "power-up" d o k))) (strand-map 0 1 2 3)))
   (unrealized (0 1) (1 2) (3 0))
   (comment "2 in cohort - 1 not yet seen"))
 
@@ -707,6 +716,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2)
   (operation channel-test (added-strand dev-open 4)
     (ch-msg ls (cat pt "st" d o o)) (1 2))
+  (strand-map 0 1 2 3)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-1 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -718,6 +728,10 @@
   (label 13)
   (parent 11)
   (seen 15)
+  (seen-ops
+    (15
+      (operation encryption-test (added-strand dev-up 6) (enc "up" k)
+        (0 1)) (strand-map 0 1 2 3 4)))
   (unrealized (0 1))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -744,6 +758,7 @@
   (rule leadsto-la same-locn trRl_dev-up-at-1 trRl_dev-up-at-2)
   (operation nonce-test (displaced 4 2 dev-up 3) k (3 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-1 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -751,9 +766,9 @@
       (stor lk (cat pt-1 "st-k" d o k))) ((recv k) (send k)))
   (label 14)
   (parent 12)
-  (seen 14)
   (unrealized (0 1) (1 2) (3 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (defskeleton open-closed
   (vars (any old old1 mesg) (k k-0 skey) (n n-0 text) (d o name)
@@ -790,6 +805,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (displaced 2 5 dev-up 6) (enc "up" k)
     (0 1))
+  (strand-map 0 1 4 2 3)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk-0 (cat pt-3 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -841,6 +857,7 @@
   (rule leadsto-la same-locn trRl_dev-open-at-2 trRl_dev-open-at-3
     trRl_dev-up-at-1 trRl_dev-up-at-2)
   (operation encryption-test (added-listener k) (enc "up" k) (0 1))
+  (strand-map 0 1 2 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-1 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -852,6 +869,11 @@
   (label 16)
   (parent 13)
   (seen 17)
+  (seen-ops
+    (17
+      (operation nonce-test (added-strand dev-up 3) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5)))
   (unrealized (5 0))
   (comment "2 in cohort - 1 not yet seen"))
 
@@ -888,6 +910,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2)
   (operation nonce-test (displaced 6 2 dev-up 3) k (5 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4 5)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-1 "st-k" d o k)) (recv (enc "may I pass" k))
       (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
@@ -898,8 +921,8 @@
       (stor ls (cat pt "st" d o o))) ((recv k) (send k)))
   (label 17)
   (parent 16)
-  (seen 17)
   (unrealized (5 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (comment "Nothing left to do")
diff --git a/tst/open-closed_shapes.tst b/tst/open-closed_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/open-closed_shapes.tst
@@ -0,0 +1,425 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald open-closed (bound 44))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/open-closed.scm")
+
+(comment "Strand count bounded at 44")
+
+(defprotocol open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (stor lk (cat "st-k" d o k)) (load ls old1)
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "open" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o o)) (send n)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "close" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat "st" d o o)) (send (enc "you may pass" n k)))
+    (uniq-orig n))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule gen-state-close
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "d" z d)
+          (p "dev-close" "o" z o) (p "dev-close" "k" z k)
+          (p "dev-close" "any" z (cat o o)))
+        (gen-st (cat "st" d o o)))))
+  (defrule gen-state-pass
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "d" z d)
+          (p "dev-pass" "o" z o) (p "dev-pass" "k" z k))
+        (gen-st (cat "st" d o o)))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z2 z1))))
+  (defrule same-locn
+    (forall ((z1 z2 strd) (i1 i2 indx))
+      (implies (same-locn z1 i1 z2 i2) (fact ha z1 i1 z2 i2)))
+    (comment this is a rule comment))
+  (defrule leadsto-la
+    (forall ((z1 z2 strd) (i1 i2 indx))
+      (implies (leads-to z1 i1 z2 i2) (fact la z1 i1 z2 i2)))
+    (comment this is a rule comment))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-2
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 2))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2)))))
+
+(defskeleton open-closed
+  (vars (k skey) (d o name) (start-ch chan))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (deflistener k)
+  (uniq-orig k)
+  (conf start-ch)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv k) (send k)))
+  (label 0)
+  (unrealized (0 1) (1 0))
+  (preskeleton)
+  (origs (k (0 0)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (stor lk (cat "st-k" d o k)) (load ls old1)
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "open" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o o)) (send n)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "close" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat "st" d o o)) (send (enc "you may pass" n k)))
+    (uniq-orig n))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule gen-state-close
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "d" z d)
+          (p "dev-close" "o" z o) (p "dev-close" "k" z k)
+          (p "dev-close" "any" z (cat o o)))
+        (gen-st (cat "st" d o o)))))
+  (defrule gen-state-pass
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "d" z d)
+          (p "dev-pass" "o" z o) (p "dev-pass" "k" z k))
+        (gen-st (cat "st" d o o)))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z2 z1))))
+  (defrule same-locn
+    (forall ((z1 z2 strd) (i1 i2 indx))
+      (implies (same-locn z1 i1 z2 i2) (fact ha z1 i1 z2 i2)))
+    (comment this is a rule comment))
+  (defrule leadsto-la
+    (forall ((z1 z2 strd) (i1 i2 indx))
+      (implies (leads-to z1 i1 z2 i2) (fact la z1 i1 z2 i2)))
+    (comment this is a rule comment))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-2
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 2))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2)))))
+
+(defskeleton open-closed
+  (vars (k skey) (n text) (d o name) (pt pt-0 pval) (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (uniq-orig n)
+  (traces
+    ((load lk (cat pt "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat pt-0 "st" d o o)) (send (enc "you may pass" n k))))
+  (label 3)
+  (realized)
+  (origs (n (0 3)))
+  (comment "Not closed under rules"))
+
+(defskeleton open-closed
+  (vars (any mesg) (k k-0 skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pval) (lk ls lk-0 locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k-0) (n n-0) (d d) (o o) (lk lk-0)
+    (ls ls))
+  (precedes ((1 3) (0 2)))
+  (uniq-orig n)
+  (gen-st (cat "st" d o o))
+  (facts (ha 0 2 1 2) (ha 0 2 1 3) (ha 1 0 1 0) (ha 1 2 0 2)
+    (ha 1 2 1 2) (ha 1 2 1 3) (ha 1 3 0 2) (ha 1 3 1 2) (ha 1 3 1 3)
+    (la 1 3 0 2) (trans 1 3) (trans 1 2) (ha 0 0 0 0) (ha 0 2 0 2))
+  (rule same-locn leadsto-la trRl_dev-open-at-3 trRl_dev-open-at-2)
+  (operation channel-test (added-strand dev-open 4)
+    (ch-msg ls (cat pt-0 "st" d o o)) (0 2))
+  (traces
+    ((load lk (cat pt "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat pt-0 "st" d o o)) (send (enc "you may pass" n k)))
+    ((load lk-0 (cat pt-1 "st-k" d o k-0))
+      (recv (enc "open" d o n-0 k-0)) (load ls (cat pt-2 "st" d any))
+      (stor ls (cat pt-0 "st" d o o))))
+  (label 5)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps
+    ((0) ((k k) (n n) (d d) (o o) (lk lk) (ls ls) (pt pt) (pt-0 pt-0))))
+  (origs (pt-0 (1 3)) (n (0 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (stor lk (cat "st-k" d o k)) (load ls old1)
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "open" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o o)) (send n)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "close" d o n k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat "st" d o o)) (send (enc "you may pass" n k)))
+    (uniq-orig n))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule gen-state-close
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "d" z d)
+          (p "dev-close" "o" z o) (p "dev-close" "k" z k)
+          (p "dev-close" "any" z (cat o o)))
+        (gen-st (cat "st" d o o)))))
+  (defrule gen-state-pass
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "d" z d)
+          (p "dev-pass" "o" z o) (p "dev-pass" "k" z k))
+        (gen-st (cat "st" d o o)))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z2 z1))))
+  (defrule same-locn
+    (forall ((z1 z2 strd) (i1 i2 indx))
+      (implies (same-locn z1 i1 z2 i2) (fact ha z1 i1 z2 i2)))
+    (comment this is a rule comment))
+  (defrule leadsto-la
+    (forall ((z1 z2 strd) (i1 i2 indx))
+      (implies (leads-to z1 i1 z2 i2) (fact la z1 i1 z2 i2)))
+    (comment this is a rule comment))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-2
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 2))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2)))))
+
+(defskeleton open-closed
+  (vars (k skey) (n text) (d o d-0 o-0 name) (pt pt-0 pval)
+    (start-ch chan) (lk ls locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d-0) (o o-0) (lk lk) (ls ls))
+  (uniq-orig k n)
+  (conf start-ch)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt "st-k" d-0 o-0 k)) (recv (enc "may I pass" k))
+      (load ls (cat pt-0 "st" d-0 o-0 o-0))
+      (send (enc "you may pass" n k))))
+  (label 6)
+  (unrealized (0 1) (1 0) (1 1))
+  (preskeleton)
+  (origs (n (1 3)) (k (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton open-closed
+  (vars (any old old1 mesg) (k k-0 skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval) (start-ch chan)
+    (ls lk lk-0 ls-0 locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk-0) (ls ls))
+  (defstrand user-pass 1 (k k))
+  (defstrand dev-open 4 (any any) (k k-0) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk-0) (ls ls-0))
+  (precedes ((0 0) (4 0)) ((2 0) (1 1)) ((3 3) (1 2)) ((4 2) (1 0))
+    ((4 5) (0 1)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (ha 4 3 4 3) (ha 4 3 4 4) (ha 4 4 4 3) (ha 4 4 4 4) (trans 4 4)
+    (trans 4 3) (ha 1 2 3 2) (ha 1 2 3 3) (ha 3 0 3 0) (ha 3 2 1 2)
+    (ha 3 2 3 2) (ha 3 2 3 3) (ha 3 3 1 2) (ha 3 3 3 2) (ha 3 3 3 3)
+    (la 3 3 1 2) (trans 3 3) (trans 3 2) (ha 1 0 4 1) (ha 1 0 4 2)
+    (ha 4 1 1 0) (ha 4 2 1 0) (la 4 2 1 0) (ha 4 1 4 1) (ha 4 1 4 2)
+    (ha 4 2 4 1) (ha 4 2 4 2) (trans 4 2) (trans 4 1) (ha 1 0 1 0)
+    (ha 1 2 1 2))
+  (rule same-locn trRl_dev-up-at-4 trRl_dev-up-at-3)
+  (operation encryption-test (displaced 2 5 dev-up 6) (enc "up" k)
+    (0 1))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk-0 (cat pt-3 "st-k" d o k)) (recv (enc "may I pass" k))
+      (load ls (cat pt "st" d o o)) (send (enc "you may pass" n k)))
+    ((send (enc "may I pass" k)))
+    ((load lk (cat pt-0 "st-k" d o k-0)) (recv (enc "open" d o n-0 k-0))
+      (load ls (cat pt-1 "st" d any)) (stor ls (cat pt "st" d o o)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk-0 (cat pt-2 old))
+      (stor lk-0 (cat pt-3 "st-k" d o k)) (load ls-0 (cat pt-4 old1))
+      (stor ls-0 (cat pt-5 "st" d o)) (send (enc "up" k))))
+  (label 15)
+  (parent 6)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((k k) (d d) (o o) (start-ch start-ch) (n n) (d-0 d) (o-0 o)
+        (lk lk-0) (ls ls) (pt pt-3) (pt-0 pt))))
+  (origs (pt-3 (4 2)) (pt-5 (4 4)) (pt (3 3)) (n (1 3)) (k (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/or.tst b/tst/or.tst
--- a/tst/or.tst
+++ b/tst/or.tst
@@ -1,7 +1,7 @@
 (herald "Otway-Rees Protocol"
   (comment "Standard version using variables of sort mesg"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/or.scm")
 
 (defprotocol or basic
@@ -50,6 +50,7 @@
   (uniq-orig k nb)
   (operation encryption-test (added-strand serv 2) (enc nb k (ltk b s))
     (0 2))
+  (strand-map 0)
   (traces
     ((recv (cat m a b x)) (send (cat m a b x (enc nb m a b (ltk b s))))
       (recv (cat m y (enc nb k (ltk b s)))) (send y))
@@ -71,6 +72,7 @@
   (uniq-orig k nb)
   (operation encryption-test (added-strand serv 2) (enc nb k (ltk b s))
     (0 2))
+  (strand-map 0)
   (traces
     ((recv (cat m a b x)) (send (cat m a b x (enc nb m a b (ltk b s))))
       (recv (cat m y (enc nb k (ltk b s)))) (send y))
@@ -92,6 +94,7 @@
   (uniq-orig k nb)
   (operation encryption-test (displaced 2 0 resp 2)
     (enc nb m-0 a-0 b (ltk b s)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat m a b x)) (send (cat m a b x (enc nb m a b (ltk b s))))
       (recv (cat m y (enc nb k (ltk b s)))) (send y))
@@ -112,6 +115,7 @@
   (uniq-orig k nb)
   (operation encryption-test (displaced 2 0 resp 2)
     (enc nb m-0 b b (ltk b s)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat m a a x)) (send (cat m a a x (enc nb m a a (ltk a s))))
       (recv (cat m y (enc nb k (ltk a s)))) (send y))
@@ -121,6 +125,10 @@
   (label 4)
   (parent 2)
   (seen 6)
+  (seen-ops
+    (6
+      (operation encryption-test (displaced 2 0 resp 2)
+        (enc nb-0 m a a (ltk a s)) (1 0)) (strand-map 0 1)))
   (unrealized (1 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -134,6 +142,7 @@
   (uniq-orig k nb)
   (operation encryption-test (added-strand init 1)
     (enc na m a b (ltk a s)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat m a b x)) (send (cat m a b x (enc nb m a b (ltk b s))))
       (recv (cat m y (enc nb k (ltk b s)))) (send y))
@@ -157,6 +166,7 @@
   (uniq-orig k nb)
   (operation encryption-test (displaced 2 0 resp 2)
     (enc na m a a (ltk a s)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat m a a x)) (send (cat m a a x (enc nb m a a (ltk a s))))
       (recv (cat m y (enc nb k (ltk a s)))) (send y))
@@ -180,6 +190,7 @@
   (uniq-orig k nb)
   (operation encryption-test (added-strand resp 2)
     (enc na m a a (ltk a s)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat m a a x)) (send (cat m a a x (enc nb m a a (ltk a s))))
       (recv (cat m y (enc nb k (ltk a s)))) (send y))
@@ -205,6 +216,7 @@
   (uniq-orig k nb)
   (operation encryption-test (added-strand init 1)
     (enc nb-0 m a a (ltk a s)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat m a a x)) (send (cat m a a x (enc nb m a a (ltk a s))))
       (recv (cat m y (enc nb k (ltk a s)))) (send y))
@@ -229,6 +241,7 @@
   (uniq-orig k nb)
   (operation encryption-test (added-strand resp 2)
     (enc nb-0 m a a (ltk a s)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat m a a x)) (send (cat m a a x (enc nb m a a (ltk a s))))
       (recv (cat m y (enc nb k (ltk a s)))) (send y))
diff --git a/tst/or_shapes.tst b/tst/or_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/or_shapes.tst
@@ -0,0 +1,168 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Otway-Rees Protocol"
+  (comment "Standard version using variables of sort mesg"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/or.scm")
+
+(defprotocol or basic
+  (defrole init
+    (vars (a b s name) (na text) (k skey) (m text))
+    (trace (send (cat m a b (enc na m a b (ltk a s))))
+      (recv (cat m (enc na k (ltk a s))))))
+  (defrole resp
+    (vars (a b s name) (nb text) (k skey) (m text) (x y mesg))
+    (trace (recv (cat m a b x))
+      (send (cat m a b x (enc nb m a b (ltk b s))))
+      (recv (cat m y (enc nb k (ltk b s)))) (send y)))
+  (defrole serv
+    (vars (a b s name) (na nb text) (k skey) (m text))
+    (trace
+      (recv
+        (cat m a b (enc na m a b (ltk a s)) (enc nb m a b (ltk b s))))
+      (send (cat m (enc na k (ltk a s)) (enc nb k (ltk b s)))))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton or
+  (vars (x y mesg) (k skey) (nb m text) (s a b name))
+  (defstrand resp 4 (x x) (y y) (k k) (nb nb) (m m) (a a) (b b) (s s))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig nb)
+  (traces
+    ((recv (cat m a b x)) (send (cat m a b x (enc nb m a b (ltk b s))))
+      (recv (cat m y (enc nb k (ltk b s)))) (send y)))
+  (label 0)
+  (unrealized (0 2))
+  (origs (nb (0 1)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton or
+  (vars (x y mesg) (k skey) (nb m na text) (s a b name))
+  (defstrand resp 4 (x x) (y y) (k k) (nb nb) (m m) (a a) (b b) (s s))
+  (defstrand serv 2 (k k) (na na) (nb nb) (m m) (a a) (b b) (s s))
+  (defstrand init 1 (na na) (m m) (a a) (b b) (s s))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((2 0) (1 0)))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig k nb)
+  (operation encryption-test (added-strand init 1)
+    (enc na m a b (ltk a s)) (1 0))
+  (traces
+    ((recv (cat m a b x)) (send (cat m a b x (enc nb m a b (ltk b s))))
+      (recv (cat m y (enc nb k (ltk b s)))) (send y))
+    ((recv
+       (cat m a b (enc na m a b (ltk a s)) (enc nb m a b (ltk b s))))
+      (send (cat m (enc na k (ltk a s)) (enc nb k (ltk b s)))))
+    ((send (cat m a b (enc na m a b (ltk a s))))))
+  (label 5)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((nb nb) (s s) (a a) (b b) (k k) (m m) (x x) (y y))))
+  (origs (k (1 1)) (nb (0 1))))
+
+(defskeleton or
+  (vars (x y mesg) (k skey) (nb m text) (s a name))
+  (defstrand resp 4 (x x) (y y) (k k) (nb nb) (m m) (a a) (b a) (s s))
+  (defstrand serv 2 (k k) (na nb) (nb nb) (m m) (a a) (b a) (s s))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
+  (non-orig (ltk a s))
+  (uniq-orig k nb)
+  (operation encryption-test (displaced 2 0 resp 2)
+    (enc na m a a (ltk a s)) (1 0))
+  (traces
+    ((recv (cat m a a x)) (send (cat m a a x (enc nb m a a (ltk a s))))
+      (recv (cat m y (enc nb k (ltk a s)))) (send y))
+    ((recv
+       (cat m a a (enc nb m a a (ltk a s)) (enc nb m a a (ltk a s))))
+      (send (cat m (enc nb k (ltk a s)) (enc nb k (ltk a s))))))
+  (label 6)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((nb nb) (s s) (a a) (b a) (k k) (m m) (x x) (y y))))
+  (origs (k (1 1)) (nb (0 1))))
+
+(defskeleton or
+  (vars (x y x-0 mesg) (k skey) (nb m na text) (s a name))
+  (defstrand resp 4 (x x) (y y) (k k) (nb nb) (m m) (a a) (b a) (s s))
+  (defstrand serv 2 (k k) (na na) (nb nb) (m m) (a a) (b a) (s s))
+  (defstrand resp 2 (x x-0) (nb na) (m m) (a a) (b a) (s s))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((2 1) (1 0)))
+  (non-orig (ltk a s))
+  (uniq-orig k nb)
+  (operation encryption-test (added-strand resp 2)
+    (enc na m a a (ltk a s)) (1 0))
+  (traces
+    ((recv (cat m a a x)) (send (cat m a a x (enc nb m a a (ltk a s))))
+      (recv (cat m y (enc nb k (ltk a s)))) (send y))
+    ((recv
+       (cat m a a (enc na m a a (ltk a s)) (enc nb m a a (ltk a s))))
+      (send (cat m (enc na k (ltk a s)) (enc nb k (ltk a s)))))
+    ((recv (cat m a a x-0))
+      (send (cat m a a x-0 (enc na m a a (ltk a s))))))
+  (label 7)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((nb nb) (s s) (a a) (b a) (k k) (m m) (x x) (y y))))
+  (origs (k (1 1)) (nb (0 1))))
+
+(defskeleton or
+  (vars (x y mesg) (k skey) (nb m nb-0 text) (s a name))
+  (defstrand resp 4 (x x) (y y) (k k) (nb nb) (m m) (a a) (b a) (s s))
+  (defstrand serv 2 (k k) (na nb) (nb nb-0) (m m) (a a) (b a) (s s))
+  (defstrand init 1 (na nb-0) (m m) (a a) (b a) (s s))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((2 0) (1 0)))
+  (non-orig (ltk a s))
+  (uniq-orig k nb)
+  (operation encryption-test (added-strand init 1)
+    (enc nb-0 m a a (ltk a s)) (1 0))
+  (traces
+    ((recv (cat m a a x)) (send (cat m a a x (enc nb m a a (ltk a s))))
+      (recv (cat m y (enc nb k (ltk a s)))) (send y))
+    ((recv
+       (cat m a a (enc nb m a a (ltk a s)) (enc nb-0 m a a (ltk a s))))
+      (send (cat m (enc nb k (ltk a s)) (enc nb-0 k (ltk a s)))))
+    ((send (cat m a a (enc nb-0 m a a (ltk a s))))))
+  (label 8)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((nb nb) (s s) (a a) (b a) (k k) (m m) (x x) (y y))))
+  (origs (k (1 1)) (nb (0 1))))
+
+(defskeleton or
+  (vars (x y x-0 mesg) (k skey) (nb m nb-0 text) (s a name))
+  (defstrand resp 4 (x x) (y y) (k k) (nb nb) (m m) (a a) (b a) (s s))
+  (defstrand serv 2 (k k) (na nb) (nb nb-0) (m m) (a a) (b a) (s s))
+  (defstrand resp 2 (x x-0) (nb nb-0) (m m) (a a) (b a) (s s))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((2 1) (1 0)))
+  (non-orig (ltk a s))
+  (uniq-orig k nb)
+  (operation encryption-test (added-strand resp 2)
+    (enc nb-0 m a a (ltk a s)) (1 0))
+  (traces
+    ((recv (cat m a a x)) (send (cat m a a x (enc nb m a a (ltk a s))))
+      (recv (cat m y (enc nb k (ltk a s)))) (send y))
+    ((recv
+       (cat m a a (enc nb m a a (ltk a s)) (enc nb-0 m a a (ltk a s))))
+      (send (cat m (enc nb k (ltk a s)) (enc nb-0 k (ltk a s)))))
+    ((recv (cat m a a x-0))
+      (send (cat m a a x-0 (enc nb-0 m a a (ltk a s))))))
+  (label 9)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((nb nb) (s s) (a a) (b a) (k k) (m m) (x x) (y y))))
+  (origs (k (1 1)) (nb (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/ordered.tst b/tst/ordered.tst
--- a/tst/ordered.tst
+++ b/tst/ordered.tst
@@ -1,6 +1,6 @@
 (herald ordered)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/ordered.scm")
 
 (defprotocol ordered basic
@@ -44,6 +44,9 @@
   (label 1)
   (parent 0)
   (seen 2)
+  (seen-ops
+    (2 (operation generalization weakened ((1 1) (0 0)))
+      (strand-map 0 1)))
   (realized)
   (origs)
   (comment "1 in cohort - 0 not yet seen"))
@@ -59,6 +62,9 @@
   (label 2)
   (parent 0)
   (seen 1)
+  (seen-ops
+    (1 (operation generalization weakened ((0 1) (1 0)))
+      (strand-map 0 1)))
   (realized)
   (origs)
   (comment "1 in cohort - 0 not yet seen"))
diff --git a/tst/ordered_shapes.tst b/tst/ordered_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/ordered_shapes.tst
@@ -0,0 +1,95 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald ordered)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/ordered.scm")
+
+(defprotocol ordered basic
+  (defrole dec
+    (vars (t text) (k akey))
+    (trace (recv (enc t k)) (send t)))
+  (defrule order
+    (forall ((y z strd))
+      (implies
+        (and (p "dec" y 2) (p "dec" z 2))
+        (or (prec y 1 z 0) (prec z 1 y 0) (= y z)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton ordered
+  (vars (a b text) (k k-0 akey))
+  (defstrand dec 2 (t a) (k k))
+  (defstrand dec 2 (t b) (k k-0))
+  (facts (neq a b))
+  (traces ((recv (enc a k)) (send a)) ((recv (enc b k-0)) (send b)))
+  (label 0)
+  (realized)
+  (origs)
+  (comment "Not closed under rules"))
+
+(defskeleton ordered
+  (vars (a b text) (k k-0 akey))
+  (defstrand dec 2 (t a) (k k))
+  (defstrand dec 2 (t b) (k k-0))
+  (precedes ((1 1) (0 0)))
+  (facts (neq a b))
+  (rule order)
+  (traces ((recv (enc a k)) (send a)) ((recv (enc b k-0)) (send b)))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (k k) (k-0 k-0))))
+  (origs))
+
+(defskeleton ordered
+  (vars (a b text) (k k-0 akey))
+  (defstrand dec 2 (t a) (k k))
+  (defstrand dec 2 (t b) (k k-0))
+  (precedes ((0 1) (1 0)))
+  (facts (neq a b))
+  (rule order)
+  (traces ((recv (enc a k)) (send a)) ((recv (enc b k-0)) (send b)))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (k k) (k-0 k-0))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol ordered basic
+  (defrole dec
+    (vars (t text) (k akey))
+    (trace (recv (enc t k)) (send t)))
+  (defrule order
+    (forall ((y z strd))
+      (implies
+        (and (p "dec" y 2) (p "dec" z 2))
+        (or (prec y 1 z 0) (prec z 1 y 0) (= y z)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton ordered
+  (vars (b text) (k akey))
+  (defstrand dec 2 (t b) (k k))
+  (facts (neq b b))
+  (traces ((recv (enc b k)) (send b)))
+  (label 3)
+  (realized)
+  (origs)
+  (comment "Not closed under rules"))
+
+(comment "Nothing left to do")
diff --git a/tst/par b/tst/par
deleted file mode 100644
--- a/tst/par
+++ /dev/null
@@ -1,10 +0,0 @@
-#! /bin/sh
-PROG="time ../dist/build/cpsa/cpsa"
-ARGS="-b 12 -l 200000 -o /dev/null nsl5resp3.lisp"
-CPUS="1 2 3 4 5 6 14"
-for i in $CPUS
-do
-  echo $PROG +RTS -N$i -RTS $ARGS
-  $PROG +RTS -N$i -RTS $ARGS
-  echo
-done
diff --git a/tst/pca.tst b/tst/pca.tst
--- a/tst/pca.tst
+++ b/tst/pca.tst
@@ -1,7 +1,7 @@
 (herald "Privacy Certificate Authority" (bound 15)
   (comment "Generation of an Attestation Identity Certificate"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/pca.scm")
 (comment "Strand count bounded at 15")
 
@@ -47,6 +47,7 @@
   (non-orig (invk ki) (invk kp) (invk ke) (invk km))
   (operation encryption-test (added-strand pca 2) (enc ki a t (invk kp))
     (0 0))
+  (strand-map 0)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke))))
@@ -66,6 +67,7 @@
   (uniq-orig ki)
   (operation encryption-test (added-strand tpm 1) (enc ki a (invk ki))
     (1 0))
+  (strand-map 0 1)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -85,6 +87,7 @@
   (uniq-orig ki)
   (operation encryption-test (displaced 3 2 tpm 1)
     (enc t-0 ke-0 (invk km-0)) (1 0))
+  (strand-map 0 1 2)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -106,6 +109,7 @@
   (uniq-orig ki ki-0)
   (operation encryption-test (added-strand tpm 1) (enc t ke (invk km))
     (1 0))
+  (strand-map 0 1 2)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -126,6 +130,7 @@
   (uniq-orig ki)
   (operation encryption-test (displaced 2 3 tpm 3)
     (enc ki a t (invk kp)) (0 0) (enc (enc ki a t (invk kp)) ke))
+  (strand-map 0 1 2)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -149,6 +154,7 @@
   (uniq-orig ki)
   (operation encryption-test (added-strand pca 2) (enc ki a t (invk kp))
     (0 0) (enc (enc ki a t (invk kp)) ke))
+  (strand-map 0 1 2)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -158,6 +164,10 @@
   (label 6)
   (parent 3)
   (seen 3)
+  (seen-ops
+    (3
+      (operation encryption-test (displaced 4 2 tpm 1)
+        (enc t ke-0 (invk km-0)) (3 0)) (strand-map 0 1 2 1)))
   (unrealized (0 0) (3 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -173,6 +183,7 @@
   (uniq-orig ki ki-0)
   (operation encryption-test (displaced 2 4 tpm 3)
     (enc ki a t (invk kp)) (0 0) (enc (enc ki a t (invk kp)) ke))
+  (strand-map 0 1 3 2)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -199,6 +210,7 @@
   (uniq-orig ki ki-0)
   (operation encryption-test (added-strand pca 2) (enc ki a t (invk kp))
     (0 0) (enc (enc ki a t (invk kp)) ke))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -209,6 +221,10 @@
   (label 8)
   (parent 4)
   (seen 4)
+  (seen-ops
+    (4
+      (operation encryption-test (displaced 5 3 tpm 1)
+        (enc t ke-1 (invk km-1)) (4 0)) (strand-map 0 1 2 3 1)))
   (unrealized (0 0) (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -222,6 +238,7 @@
   (uniq-orig ki)
   (operation encryption-test (displaced 3 1 pca 2)
     (enc ki a t (invk kp)) (2 1))
+  (strand-map 0 1 2)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -248,6 +265,7 @@
   (uniq-orig ki)
   (operation encryption-test (added-strand pca 2) (enc ki a t (invk kp))
     (2 1))
+  (strand-map 0 1 2)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -273,6 +291,7 @@
   (uniq-orig ki ki-0)
   (operation encryption-test (displaced 4 1 pca 2)
     (enc ki a t (invk kp)) (3 1))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -301,6 +320,7 @@
   (uniq-orig ki ki-0)
   (operation encryption-test (added-strand pca 2) (enc ki a t (invk kp))
     (3 1))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -327,6 +347,7 @@
   (uniq-orig ki)
   (operation encryption-test (displaced 4 2 tpm 1)
     (enc t ke-0 (invk km-0)) (3 0))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -338,6 +359,8 @@
   (label 13)
   (parent 10)
   (seen 9)
+  (seen-ops
+    (9 (operation generalization deleted (1 0)) (strand-map 0 3 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -355,6 +378,7 @@
   (uniq-orig ki ki-0)
   (operation encryption-test (added-strand tpm 1)
     (enc t ke-0 (invk km-0)) (3 0))
+  (strand-map 0 1 2 3)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -383,6 +407,7 @@
   (uniq-orig ki ki-0)
   (operation encryption-test (displaced 5 2 tpm 1)
     (enc t ke-0 (invk km-1)) (4 0))
+  (strand-map 0 1 2 3 4)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -395,6 +420,8 @@
   (label 15)
   (parent 12)
   (seen 11)
+  (seen-ops
+    (11 (operation generalization deleted (1 0)) (strand-map 0 4 2 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -412,6 +439,7 @@
   (uniq-orig ki ki-0)
   (operation encryption-test (displaced 5 3 tpm 1)
     (enc t ke-0 (invk km-1)) (4 0))
+  (strand-map 0 1 2 3 4)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -441,6 +469,7 @@
   (uniq-orig ki ki-0 ki-1)
   (operation encryption-test (added-strand tpm 1)
     (enc t ke-0 (invk km-1)) (4 0))
+  (strand-map 0 1 2 3 4)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -470,6 +499,7 @@
   (uniq-orig ki ki-0)
   (operation encryption-test (contracted (ke-0 ke))
     (enc ki a t (invk kp)) (2 1) (enc (enc ki a t (invk kp)) ke))
+  (strand-map 0 1 2 3 4)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -482,6 +512,8 @@
   (label 18)
   (parent 14)
   (seen 11)
+  (seen-ops
+    (11 (operation generalization deleted (1 0)) (strand-map 0 3 4 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -499,6 +531,7 @@
   (uniq-orig ki ki-0)
   (operation encryption-test (displaced 5 1 pca 2)
     (enc ki a t (invk kp)) (2 1) (enc (enc ki a t (invk kp)) ke-0))
+  (strand-map 0 1 2 3 4)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -528,6 +561,7 @@
   (uniq-orig ki ki-0)
   (operation encryption-test (added-strand pca 2) (enc ki a t (invk kp))
     (2 1) (enc (enc ki a t (invk kp)) ke-0))
+  (strand-map 0 1 2 3 4)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -542,6 +576,10 @@
   (label 20)
   (parent 14)
   (seen 14)
+  (seen-ops
+    (14
+      (operation encryption-test (displaced 6 4 tpm 1)
+        (enc t ke-1 (invk km-1)) (5 0)) (strand-map 0 1 2 3 4 3)))
   (unrealized (2 1) (5 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -556,6 +594,7 @@
     (invk km-0))
   (uniq-orig ki ki-0)
   (operation generalization deleted (1 0))
+  (strand-map 0 2 3 4)
   (traces ((recv (enc ki a t (invk kp))))
     ((send (cat (enc ki-0 a-0 (invk ki-0)) (enc t ke (invk km)))))
     ((send (cat (enc ki a (invk ki)) (enc t ke (invk km-0))))
@@ -566,6 +605,8 @@
   (label 21)
   (parent 16)
   (seen 9)
+  (seen-ops
+    (9 (operation generalization deleted (1 0)) (strand-map 0 3 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -584,6 +625,7 @@
   (uniq-orig ki ki-0 ki-1)
   (operation encryption-test (contracted (ke-0 ke))
     (enc ki a t (invk kp)) (3 1) (enc (enc ki a t (invk kp)) ke))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -614,6 +656,7 @@
   (uniq-orig ki ki-0 ki-1)
   (operation encryption-test (displaced 6 1 pca 2)
     (enc ki a t (invk kp)) (3 1) (enc (enc ki a t (invk kp)) ke-0))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -648,6 +691,7 @@
   (uniq-orig ki ki-0 ki-1)
   (operation encryption-test (added-strand pca 2) (enc ki a t (invk kp))
     (3 1) (enc (enc ki a t (invk kp)) ke-0))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -663,6 +707,10 @@
   (label 24)
   (parent 17)
   (seen 17)
+  (seen-ops
+    (17
+      (operation encryption-test (displaced 7 5 tpm 1)
+        (enc t ke-1 (invk km-2)) (6 0)) (strand-map 0 1 2 3 4 5 4)))
   (unrealized (3 1) (6 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -677,6 +725,7 @@
     (invk km-0) (invk ki-0))
   (uniq-orig ki ki-0)
   (operation generalization deleted (3 0))
+  (strand-map 0 1 2 4)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -687,6 +736,8 @@
   (label 25)
   (parent 19)
   (seen 9)
+  (seen-ops
+    (9 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -703,6 +754,7 @@
     (invk ke) (invk km-1) (invk ki-1))
   (uniq-orig ki ki-0 ki-1)
   (operation generalization deleted (1 0))
+  (strand-map 0 2 3 4 5)
   (traces ((recv (enc ki a t (invk kp))))
     ((send (cat (enc ki-0 a-0 (invk ki-0)) (enc t ke (invk km)))))
     ((send (cat (enc ki a (invk ki)) (enc t ke (invk km-0))))
@@ -714,6 +766,8 @@
   (label 26)
   (parent 22)
   (seen 11)
+  (seen-ops
+    (11 (operation generalization deleted (1 0)) (strand-map 0 3 4 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -730,6 +784,7 @@
     (invk km-0) (invk ke-0) (invk km-1) (invk ki-1))
   (uniq-orig ki ki-0 ki-1)
   (operation generalization deleted (4 0))
+  (strand-map 0 1 2 3 5)
   (traces ((recv (enc ki a t (invk kp))))
     ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
       (send (enc (enc ki a t (invk kp)) ke)))
@@ -741,6 +796,8 @@
   (label 27)
   (parent 23)
   (seen 11)
+  (seen-ops
+    (11 (operation generalization deleted (4 0)) (strand-map 0 1 2 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/pca_shapes.tst b/tst/pca_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/pca_shapes.tst
@@ -0,0 +1,96 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Privacy Certificate Authority" (bound 15)
+  (comment "Generation of an Attestation Identity Certificate"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/pca.scm")
+
+(comment "Strand count bounded at 15")
+
+(defprotocol pca basic
+  (defrole tpm
+    (vars (ke ki km kp akey) (t a text))
+    (trace (send (cat (enc ki a (invk ki)) (enc t ke (invk km))))
+      (recv (enc (enc ki a t (invk kp)) ke))
+      (send (enc ki a t (invk kp))))
+    (non-orig (invk ke) (invk ki) (invk km) (invk kp))
+    (uniq-orig ki))
+  (defrole pca
+    (vars (ke ki km kp akey) (t a text))
+    (trace (recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
+      (send (enc (enc ki a t (invk kp)) ke)))
+    (non-orig (invk ke) (invk ki) (invk km) (invk kp)))
+  (defrole appr
+    (vars (ki kp akey) (t a text))
+    (trace (recv (enc ki a t (invk kp))))
+    (non-orig (invk ki) (invk kp)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton pca
+  (vars (t a text) (ki kp akey))
+  (defstrand appr 1 (t t) (a a) (ki ki) (kp kp))
+  (non-orig (invk ki) (invk kp))
+  (traces ((recv (enc ki a t (invk kp)))))
+  (label 0)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton pca
+  (vars (a t text) (ki kp ke km akey))
+  (defstrand appr 1 (t t) (a a) (ki ki) (kp kp))
+  (defstrand pca 2 (t t) (a a) (ke ke) (ki ki) (km km) (kp kp))
+  (defstrand tpm 3 (t t) (a a) (ke ke) (ki ki) (km km) (kp kp))
+  (precedes ((1 1) (2 1)) ((2 0) (1 0)) ((2 2) (0 0)))
+  (non-orig (invk ki) (invk kp) (invk ke) (invk km))
+  (uniq-orig ki)
+  (operation encryption-test (displaced 3 1 pca 2)
+    (enc ki a t (invk kp)) (2 1))
+  (traces ((recv (enc ki a t (invk kp))))
+    ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
+      (send (enc (enc ki a t (invk kp)) ke)))
+    ((send (cat (enc ki a (invk ki)) (enc t ke (invk km))))
+      (recv (enc (enc ki a t (invk kp)) ke))
+      (send (enc ki a t (invk kp)))))
+  (label 9)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((ki ki) (kp kp) (t t) (a a))))
+  (origs (ki (2 0))))
+
+(defskeleton pca
+  (vars (t a a-0 text) (ki kp ke km ki-0 km-0 akey))
+  (defstrand appr 1 (t t) (a a) (ki ki) (kp kp))
+  (defstrand pca 2 (t t) (a a) (ke ke) (ki ki) (km km) (kp kp))
+  (defstrand tpm 1 (t t) (a a-0) (ke ke) (ki ki-0) (km km))
+  (defstrand tpm 3 (t t) (a a) (ke ke) (ki ki) (km km-0) (kp kp))
+  (precedes ((1 1) (3 1)) ((2 0) (1 0)) ((3 0) (1 0)) ((3 2) (0 0)))
+  (non-orig (invk ki) (invk kp) (invk ke) (invk km) (invk ki-0)
+    (invk km-0))
+  (uniq-orig ki ki-0)
+  (operation encryption-test (displaced 4 1 pca 2)
+    (enc ki a t (invk kp)) (3 1))
+  (traces ((recv (enc ki a t (invk kp))))
+    ((recv (cat (enc ki a (invk ki)) (enc t ke (invk km))))
+      (send (enc (enc ki a t (invk kp)) ke)))
+    ((send (cat (enc ki-0 a-0 (invk ki-0)) (enc t ke (invk km)))))
+    ((send (cat (enc ki a (invk ki)) (enc t ke (invk km-0))))
+      (recv (enc (enc ki a t (invk kp)) ke))
+      (send (enc ki a t (invk kp)))))
+  (label 11)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((ki ki) (kp kp) (t t) (a a))))
+  (origs (ki (3 0)) (ki-0 (2 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/pen-non-orig-test.tst b/tst/pen-non-orig-test.tst
--- a/tst/pen-non-orig-test.tst
+++ b/tst/pen-non-orig-test.tst
@@ -1,6 +1,6 @@
 (herald "pen-non-orig test")
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/pen-non-orig-test.scm")
 
 (defprotocol pennonorigtest basic
@@ -35,6 +35,7 @@
   (precedes ((1 0) (0 0)))
   (pen-non-orig pwd)
   (operation nonce-test (added-strand client 1) pwd (0 0))
+  (strand-map 0)
   (traces ((recv (cat userid pwd))) ((send (cat userid-0 pwd))))
   (label 1)
   (parent 0)
@@ -79,6 +80,7 @@
   (precedes ((2 0) (1 0)))
   (pen-non-orig pwd)
   (operation nonce-test (added-strand client 1) pwd (1 0))
+  (strand-map 0 1)
   (traces ((recv (cat userid pwd))) ((recv pwd) (send pwd))
     ((send (cat userid-0 pwd))))
   (label 3)
@@ -94,6 +96,7 @@
   (precedes ((2 0) (0 0)) ((2 0) (1 0)))
   (pen-non-orig pwd)
   (operation nonce-test (displaced 3 2 client 1) pwd (0 0))
+  (strand-map 0 1 2)
   (traces ((recv (cat userid pwd))) ((recv pwd) (send pwd))
     ((send (cat userid-0 pwd))))
   (label 4)
@@ -112,6 +115,7 @@
   (precedes ((2 0) (1 0)) ((3 0) (0 0)))
   (pen-non-orig pwd)
   (operation nonce-test (added-strand client 1) pwd (0 0))
+  (strand-map 0 1 2)
   (traces ((recv (cat userid pwd))) ((recv pwd) (send pwd))
     ((send (cat userid-0 pwd))) ((send (cat userid-1 pwd))))
   (label 5)
diff --git a/tst/pen-non-orig-test_shapes.tst b/tst/pen-non-orig-test_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/pen-non-orig-test_shapes.tst
@@ -0,0 +1,113 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "pen-non-orig test")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/pen-non-orig-test.scm")
+
+(defprotocol pennonorigtest basic
+  (defrole client
+    (vars (userid name) (pwd text))
+    (trace (send (cat userid pwd))))
+  (defrole server
+    (vars (userid name) (pwd text))
+    (trace (recv (cat userid pwd)))
+    (pen-non-orig pwd))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton pennonorigtest
+  (vars (pwd text) (userid name))
+  (defstrand server 1 (pwd pwd) (userid userid))
+  (pen-non-orig pwd)
+  (traces ((recv (cat userid pwd))))
+  (label 0)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton pennonorigtest
+  (vars (pwd text) (userid userid-0 name))
+  (defstrand server 1 (pwd pwd) (userid userid))
+  (defstrand client 1 (pwd pwd) (userid userid-0))
+  (precedes ((1 0) (0 0)))
+  (pen-non-orig pwd)
+  (operation nonce-test (added-strand client 1) pwd (0 0))
+  (traces ((recv (cat userid pwd))) ((send (cat userid-0 pwd))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((pwd pwd) (userid userid))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol pennonorigtest basic
+  (defrole client
+    (vars (userid name) (pwd text))
+    (trace (send (cat userid pwd))))
+  (defrole server
+    (vars (userid name) (pwd text))
+    (trace (recv (cat userid pwd)))
+    (pen-non-orig pwd))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton pennonorigtest
+  (vars (pwd text) (userid name))
+  (defstrand server 1 (pwd pwd) (userid userid))
+  (deflistener pwd)
+  (pen-non-orig pwd)
+  (traces ((recv (cat userid pwd))) ((recv pwd) (send pwd)))
+  (label 2)
+  (unrealized (0 0) (1 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton pennonorigtest
+  (vars (pwd text) (userid userid-0 name))
+  (defstrand server 1 (pwd pwd) (userid userid))
+  (deflistener pwd)
+  (defstrand client 1 (pwd pwd) (userid userid-0))
+  (precedes ((2 0) (0 0)) ((2 0) (1 0)))
+  (pen-non-orig pwd)
+  (operation nonce-test (displaced 3 2 client 1) pwd (0 0))
+  (traces ((recv (cat userid pwd))) ((recv pwd) (send pwd))
+    ((send (cat userid-0 pwd))))
+  (label 4)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0 1) ((pwd pwd) (userid userid))))
+  (origs))
+
+(defskeleton pennonorigtest
+  (vars (pwd text) (userid userid-0 userid-1 name))
+  (defstrand server 1 (pwd pwd) (userid userid))
+  (deflistener pwd)
+  (defstrand client 1 (pwd pwd) (userid userid-0))
+  (defstrand client 1 (pwd pwd) (userid userid-1))
+  (precedes ((2 0) (1 0)) ((3 0) (0 0)))
+  (pen-non-orig pwd)
+  (operation nonce-test (added-strand client 1) pwd (0 0))
+  (traces ((recv (cat userid pwd))) ((recv pwd) (send pwd))
+    ((send (cat userid-0 pwd))) ((send (cat userid-1 pwd))))
+  (label 5)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0 1) ((pwd pwd) (userid userid))))
+  (origs))
+
+(comment "Nothing left to do")
diff --git a/tst/pfs-via-pubkey.tst b/tst/pfs-via-pubkey.tst
--- a/tst/pfs-via-pubkey.tst
+++ b/tst/pfs-via-pubkey.tst
@@ -1,6 +1,6 @@
 (herald pfs-via-pubkey)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/pfs-via-pubkey.scm")
 
 (defprotocol pfs-easy basic
@@ -43,6 +43,7 @@
   (uniq-orig n new-akey (privk "sgn" a))
   (operation encryption-test (added-strand resp 2)
     (enc a n s (privk "sgn" b)) (0 1))
+  (strand-map 0)
   (traces
     ((send (enc a b new-akey n (privk "sgn" a)))
       (recv (enc (enc a n s (privk "sgn" b)) new-akey))
@@ -63,6 +64,7 @@
   (uniq-orig n new-akey (privk "sgn" a))
   (operation encryption-test (displaced 2 0 init 1)
     (enc a b new-akey-0 n (privk "sgn" a)) (1 0))
+  (strand-map 0 1)
   (traces
     ((send (enc a b new-akey n (privk "sgn" a)))
       (recv (enc (enc a n s (privk "sgn" b)) new-akey))
@@ -115,6 +117,7 @@
   (non-orig (privk "sgn" a))
   (operation encryption-test (added-strand init 1)
     (enc a b new-akey n (privk "sgn" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (enc a b new-akey n (privk "sgn" a)))
       (send (enc (enc a n s (privk "sgn" b)) new-akey)))
diff --git a/tst/pfs-via-pubkey_shapes.tst b/tst/pfs-via-pubkey_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/pfs-via-pubkey_shapes.tst
@@ -0,0 +1,152 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald pfs-via-pubkey)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/pfs-via-pubkey.scm")
+
+(defprotocol pfs-easy basic
+  (defrole init
+    (vars (new-akey akey) (a b name) (n data) (s text))
+    (trace (send (enc a b new-akey n (privk "sgn" a)))
+      (recv (enc (enc a n s (privk "sgn" b)) new-akey))
+      (send (privk "sgn" a))))
+  (defrole resp
+    (vars (new-akey akey) (a b name) (n data) (s text))
+    (trace (recv (enc a b new-akey n (privk "sgn" a)))
+      (send (enc (enc a n s (privk "sgn" b)) new-akey))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton pfs-easy
+  (vars (n data) (s text) (new-akey akey) (a b name))
+  (defstrand init 3 (n n) (s s) (new-akey new-akey) (a a) (b b))
+  (non-orig (invk new-akey) (privk "sgn" b))
+  (uniq-orig n new-akey (privk "sgn" a))
+  (traces
+    ((send (enc a b new-akey n (privk "sgn" a)))
+      (recv (enc (enc a n s (privk "sgn" b)) new-akey))
+      (send (privk "sgn" a))))
+  (label 0)
+  (unrealized (0 1))
+  (origs ((privk "sgn" a) (0 2)) (new-akey (0 0)) (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton pfs-easy
+  (vars (n data) (s text) (new-akey akey) (a b name))
+  (defstrand init 3 (n n) (s s) (new-akey new-akey) (a a) (b b))
+  (defstrand resp 2 (n n) (s s) (new-akey new-akey) (a a) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk new-akey) (privk "sgn" b))
+  (uniq-orig n new-akey (privk "sgn" a))
+  (operation encryption-test (displaced 2 0 init 1)
+    (enc a b new-akey-0 n (privk "sgn" a)) (1 0))
+  (traces
+    ((send (enc a b new-akey n (privk "sgn" a)))
+      (recv (enc (enc a n s (privk "sgn" b)) new-akey))
+      (send (privk "sgn" a)))
+    ((recv (enc a b new-akey n (privk "sgn" a)))
+      (send (enc (enc a n s (privk "sgn" b)) new-akey))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((new-akey new-akey) (a a) (b b) (n n) (s s))))
+  (origs ((privk "sgn" a) (0 2)) (new-akey (0 0)) (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol pfs-easy basic
+  (defrole init
+    (vars (new-akey akey) (a b name) (n data) (s text))
+    (trace (send (enc a b new-akey n (privk "sgn" a)))
+      (recv (enc (enc a n s (privk "sgn" b)) new-akey))
+      (send (privk "sgn" a))))
+  (defrole resp
+    (vars (new-akey akey) (a b name) (n data) (s text))
+    (trace (recv (enc a b new-akey n (privk "sgn" a)))
+      (send (enc (enc a n s (privk "sgn" b)) new-akey))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton pfs-easy
+  (vars (n data) (s text) (new-akey akey) (a b name))
+  (defstrand resp 2 (n n) (s s) (new-akey new-akey) (a a) (b b))
+  (non-orig (privk "sgn" a))
+  (traces
+    ((recv (enc a b new-akey n (privk "sgn" a)))
+      (send (enc (enc a n s (privk "sgn" b)) new-akey))))
+  (label 3)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton pfs-easy
+  (vars (n data) (s text) (new-akey akey) (a b name))
+  (defstrand resp 2 (n n) (s s) (new-akey new-akey) (a a) (b b))
+  (defstrand init 1 (n n) (new-akey new-akey) (a a) (b b))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk "sgn" a))
+  (operation encryption-test (added-strand init 1)
+    (enc a b new-akey n (privk "sgn" a)) (0 0))
+  (traces
+    ((recv (enc a b new-akey n (privk "sgn" a)))
+      (send (enc (enc a n s (privk "sgn" b)) new-akey)))
+    ((send (enc a b new-akey n (privk "sgn" a)))))
+  (label 4)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((new-akey new-akey) (a a) (b b) (n n) (s s))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol pfs-easy basic
+  (defrole init
+    (vars (new-akey akey) (a b name) (n data) (s text))
+    (trace (send (enc a b new-akey n (privk "sgn" a)))
+      (recv (enc (enc a n s (privk "sgn" b)) new-akey))
+      (send (privk "sgn" a))))
+  (defrole resp
+    (vars (new-akey akey) (a b name) (n data) (s text))
+    (trace (recv (enc a b new-akey n (privk "sgn" a)))
+      (send (enc (enc a n s (privk "sgn" b)) new-akey))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton pfs-easy
+  (vars (n data) (s s-0 text) (new-akey akey) (a b name))
+  (defstrand resp 2 (n n) (s s) (new-akey new-akey) (a a) (b b))
+  (defstrand init 3 (n n) (s s-0) (new-akey new-akey) (a a) (b b))
+  (deflistener s)
+  (precedes ((1 0) (0 0)))
+  (non-orig (invk new-akey))
+  (uniq-orig s (privk "sgn" a))
+  (traces
+    ((recv (enc a b new-akey n (privk "sgn" a)))
+      (send (enc (enc a n s (privk "sgn" b)) new-akey)))
+    ((send (enc a b new-akey n (privk "sgn" a)))
+      (recv (enc (enc a n s-0 (privk "sgn" b)) new-akey))
+      (send (privk "sgn" a))) ((recv s) (send s)))
+  (label 5)
+  (unrealized (2 0))
+  (preskeleton)
+  (origs ((privk "sgn" a) (1 2)) (s (0 1)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
diff --git a/tst/pkinit.tst b/tst/pkinit.tst
--- a/tst/pkinit.tst
+++ b/tst/pkinit.tst
@@ -1,6 +1,6 @@
 (herald "Kerberos PK init")
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/pkinit.scm")
 
 (defprotocol pkinit basic
@@ -53,6 +53,7 @@
   (uniq-orig k ak-0 n2 n1)
   (operation encryption-test (added-strand auth 2) (enc k n2 (privk as))
     (0 1))
+  (strand-map 0)
   (traces
     ((send (cat (enc tc n2 (privk c)) c t n1))
       (recv
diff --git a/tst/pkinit_shapes.tst b/tst/pkinit_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/pkinit_shapes.tst
@@ -0,0 +1,79 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Kerberos PK init")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/pkinit.scm")
+
+(defprotocol pkinit basic
+  (defrole client
+    (vars (c t as name) (n2 n1 text) (tc tk tgt data) (k ak skey))
+    (trace (send (cat (enc tc n2 (privk c)) c t n1))
+      (recv
+        (cat (enc (enc k n2 (privk as)) (pubk c)) c tgt
+          (enc ak n1 tk t k))))
+    (uniq-orig n2 n1))
+  (defrole auth
+    (vars (c t as name) (n2 n1 text) (tc tk tgt data) (k ak skey))
+    (trace (recv (cat (enc tc n2 (privk c)) c t n1))
+      (send
+        (cat (enc (enc k n2 (privk as)) (pubk c)) c tgt
+          (enc ak n1 tk t k))))
+    (uniq-orig k ak))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton pkinit
+  (vars (tc tk tgt data) (k ak skey) (n2 n1 text) (c as t name))
+  (defstrand client 2 (tc tc) (tk tk) (tgt tgt) (k k) (ak ak) (n2 n2)
+    (n1 n1) (c c) (t t) (as as))
+  (non-orig (privk c) (privk as))
+  (uniq-orig n2 n1)
+  (traces
+    ((send (cat (enc tc n2 (privk c)) c t n1))
+      (recv
+        (cat (enc (enc k n2 (privk as)) (pubk c)) c tgt
+          (enc ak n1 tk t k)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n2 (0 0)) (n1 (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton pkinit
+  (vars (tc tk tgt tc-0 tk-0 tgt-0 data) (k ak ak-0 skey)
+    (n2 n1 n1-0 text) (c as t c-0 t-0 name))
+  (defstrand client 2 (tc tc) (tk tk) (tgt tgt) (k k) (ak ak) (n2 n2)
+    (n1 n1) (c c) (t t) (as as))
+  (defstrand auth 2 (tc tc-0) (tk tk-0) (tgt tgt-0) (k k) (ak ak-0)
+    (n2 n2) (n1 n1-0) (c c-0) (t t-0) (as as))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk c) (privk as))
+  (uniq-orig k ak-0 n2 n1)
+  (operation encryption-test (added-strand auth 2) (enc k n2 (privk as))
+    (0 1))
+  (traces
+    ((send (cat (enc tc n2 (privk c)) c t n1))
+      (recv
+        (cat (enc (enc k n2 (privk as)) (pubk c)) c tgt
+          (enc ak n1 tk t k))))
+    ((recv (cat (enc tc-0 n2 (privk c-0)) c-0 t-0 n1-0))
+      (send
+        (cat (enc (enc k n2 (privk as)) (pubk c-0)) c-0 tgt-0
+          (enc ak-0 n1-0 tk-0 t-0 k)))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((c c) (as as) (t t) (n2 n2) (n1 n1) (tc tc) (tk tk) (tgt tgt)
+        (k k) (ak ak))))
+  (origs (k (1 1)) (ak-0 (1 1)) (n2 (0 0)) (n1 (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/preprocess.tst b/tst/preprocess.tst
--- a/tst/preprocess.tst
+++ b/tst/preprocess.tst
@@ -1,6 +1,6 @@
 (herald "Pre-processing test example: modified NS with two responders")
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/preprocess.scm")
 
 (defprotocol ns basic
@@ -73,6 +73,7 @@
   (non-orig (privk a) (privk b))
   (uniq-orig n1 n2 n3p)
   (operation collapsed 2 1)
+  (strand-map 0 1 1)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 n3p (pubk a)))
       (send (enc n2 n3p (pubk b))))
@@ -92,6 +93,7 @@
   (uniq-orig n1 n2 n3p)
   (operation nonce-test (displaced 2 0 init 3) n2 (1 2)
     (enc n1 n2 n3p (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b))) (recv (enc n1 n2 n3p (pubk a)))
       (send (enc n2 n3p (pubk b))))
diff --git a/tst/preprocess_shapes.tst b/tst/preprocess_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/preprocess_shapes.tst
@@ -0,0 +1,72 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Pre-processing test example: modified NS with two responders")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/preprocess.scm")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b name) (n1 n2 n3 text))
+    (trace (send (enc n1 a (pubk b))) (recv (enc n1 n2 n3 (pubk a)))
+      (send (enc n2 n3 (pubk b))))
+    (uniq-orig n1))
+  (defrole resp
+    (vars (a b name) (n1 n2 n3 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 n3 (pubk a)))
+      (recv (enc n2 n3 (pubk b))))
+    (uniq-orig n2 n3))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment
+    "modified Needham-Schroeder with role origination assumptions"))
+
+(defskeleton ns
+  (vars (n1 n2 n3 n2p n3p text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (n3 n3) (a a) (b b))
+  (defstrand resp 3 (n1 n1) (n2 n2) (n3 n3p) (a a) (b b))
+  (defstrand resp 3 (n1 n1) (n2 n2p) (n3 n3) (a a) (b b))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1 n2 n3 n2p n3p)
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 n3 (pubk a)))
+      (send (enc n2 n3 (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 n3p (pubk a)))
+      (recv (enc n2 n3p (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2p n3 (pubk a)))
+      (recv (enc n2p n3 (pubk b)))))
+  (label 0)
+  (unrealized (0 1) (1 0) (1 2) (2 0) (2 2))
+  (preskeleton)
+  (origs (n3 (2 1)) (n2p (2 1)) (n3p (1 1)) (n2 (1 1)) (n1 (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton ns
+  (vars (n1 n2 n3p text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (n3 n3p) (a a) (b b))
+  (defstrand resp 3 (n1 n1) (n2 n2) (n3 n3p) (a a) (b b))
+  (precedes ((0 0) (1 0)) ((0 2) (1 2)) ((1 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1 n2 n3p)
+  (operation nonce-test (displaced 2 0 init 3) n2 (1 2)
+    (enc n1 n2 n3p (pubk a)))
+  (traces
+    ((send (enc n1 a (pubk b))) (recv (enc n1 n2 n3p (pubk a)))
+      (send (enc n2 n3p (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n2 n3p (pubk a)))
+      (recv (enc n2 n3p (pubk b)))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1 1) ((a a) (b b) (n1 n1) (n2 n2) (n3 n3p) (n2p n2) (n3p n3p))))
+  (origs (n1 (0 0)) (n3p (1 1)) (n2 (1 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/print.tst b/tst/print.tst
--- a/tst/print.tst
+++ b/tst/print.tst
@@ -1,7 +1,7 @@
 (herald "Print Test"
   (comment "See if read forms look like printed ones"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/print.scm")
 
 (defprotocol print-test basic
diff --git a/tst/print_shapes.tst b/tst/print_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/print_shapes.tst
@@ -0,0 +1,34 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Print Test"
+  (comment "See if read forms look like printed ones"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/print.scm")
+
+(defprotocol print-test basic
+  (defrole role
+    (vars (a b akey) (f g skey) (x y data))
+    (trace (recv (cat a b f g x y)))
+    (comment "Check the order in which variables are printed"))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton print-test
+  (vars (x y data) (f g skey) (a b akey))
+  (defstrand role 1 (x x) (y y) (f f) (g g) (a a) (b b))
+  (comment "Check the order in which variables are printed")
+  (traces ((recv (cat a b f g x y))))
+  (label 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (f f) (g g) (x x) (y y))))
+  (origs))
+
+(comment "Nothing left to do")
diff --git a/tst/prottrans.tst b/tst/prottrans.tst
--- a/tst/prottrans.tst
+++ b/tst/prottrans.tst
@@ -1,6 +1,6 @@
 (herald "Protocol Transformations With Rules")
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/prottrans.scm")
 
 (defprotocol ns basic
@@ -38,6 +38,7 @@
   (non-orig (invk a) (invk b))
   (uniq-orig na)
   (operation nonce-test (added-strand resp 2) na (0 1) (enc na a b))
+  (strand-map 0)
   (traces ((send (enc na a b)) (recv (enc na nb a)) (send (enc nb b)))
     ((recv (enc na a b)) (send (enc na nb-0 a))))
   (label 1)
@@ -54,6 +55,7 @@
   (uniq-orig na)
   (operation nonce-test (contracted (nb-0 nb)) na (0 1) (enc na nb a)
     (enc na a b))
+  (strand-map 0 1)
   (traces ((send (enc na a b)) (recv (enc na nb a)) (send (enc nb b)))
     ((recv (enc na a b)) (send (enc na nb a))))
   (label 2)
@@ -100,6 +102,7 @@
   (non-orig (invk a))
   (uniq-orig nb)
   (operation nonce-test (added-strand init 3) nb (0 2) (enc na nb a))
+  (strand-map 0)
   (traces ((recv (enc na a b)) (send (enc na nb a)) (recv (enc nb b)))
     ((send (enc na a b-0)) (recv (enc na nb a)) (send (enc nb b-0))))
   (label 4)
@@ -154,6 +157,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (added-strand resp 2) n (0 1) (enc n k))
+  (strand-map 0)
   (traces ((send (enc n k)) (recv n)) ((recv (enc n k)) (send n)))
   (label 6)
   (parent 5)
@@ -231,6 +235,7 @@
   (non-orig (invk a))
   (uniq-orig nb)
   (operation nonce-test (contracted (na-0 na)) nb (1 1) (enc na nb a))
+  (strand-map 0 1)
   (traces ((recv (enc na a b)) (send (enc na nb a)) (recv (enc nb b)))
     ((send (enc na a b-0)) (recv (enc na nb a)) (send (enc nb b-0))))
   (label 9)
@@ -249,12 +254,15 @@
   (non-orig (invk a))
   (uniq-orig nb)
   (operation nonce-test (added-strand init 3) nb (1 1) (enc na nb a))
+  (strand-map 0 1)
   (traces ((recv (enc na a b)) (send (enc na nb a)) (recv (enc nb b)))
     ((send (enc na-0 a b-0)) (recv (enc na-0 nb a)) (send (enc nb b-0)))
     ((send (enc na a b-1)) (recv (enc na nb a)) (send (enc nb b-1))))
   (label 10)
   (parent 8)
   (seen 9)
+  (seen-ops
+    (9 (operation generalization deleted (1 0)) (strand-map 0 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/prottrans_shapes.tst b/tst/prottrans_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/prottrans_shapes.tst
@@ -0,0 +1,215 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Protocol Transformations With Rules")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/prottrans.scm")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b akey) (na nb text))
+    (trace (send (enc na a b)) (recv (enc na nb a)) (send (enc nb b))))
+  (defrole resp
+    (vars (b a akey) (nb na text))
+    (trace (recv (enc na a b)) (send (enc na nb a)) (recv (enc nb b))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder without rules"))
+
+(defskeleton ns
+  (vars (na nb text) (a b akey))
+  (defstrand init 3 (na na) (nb nb) (a a) (b b))
+  (non-orig (invk a) (invk b))
+  (uniq-orig na)
+  (comment "Initiator point-of-view")
+  (traces ((send (enc na a b)) (recv (enc na nb a)) (send (enc nb b))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (na (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton ns
+  (vars (na nb text) (a b akey))
+  (defstrand init 3 (na na) (nb nb) (a a) (b b))
+  (defstrand resp 2 (nb nb) (na na) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk a) (invk b))
+  (uniq-orig na)
+  (operation nonce-test (contracted (nb-0 nb)) na (0 1) (enc na nb a)
+    (enc na a b))
+  (traces ((send (enc na a b)) (recv (enc na nb a)) (send (enc nb b)))
+    ((recv (enc na a b)) (send (enc na nb a))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (na na) (nb nb))))
+  (origs (na (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns basic
+  (defrole init
+    (vars (a b akey) (na nb text))
+    (trace (send (enc na a b)) (recv (enc na nb a)) (send (enc nb b))))
+  (defrole resp
+    (vars (b a akey) (nb na text))
+    (trace (recv (enc na a b)) (send (enc na nb a)) (recv (enc nb b))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder without rules"))
+
+(defskeleton ns
+  (vars (nb na text) (a b akey))
+  (defstrand resp 3 (nb nb) (na na) (b b) (a a))
+  (non-orig (invk a))
+  (uniq-orig nb)
+  (comment "Responder point-of-view")
+  (traces ((recv (enc na a b)) (send (enc na nb a)) (recv (enc nb b))))
+  (label 3)
+  (unrealized (0 2))
+  (origs (nb (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton ns
+  (vars (nb na text) (a b b-0 akey))
+  (defstrand resp 3 (nb nb) (na na) (b b) (a a))
+  (defstrand init 3 (na na) (nb nb) (a a) (b b-0))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig (invk a))
+  (uniq-orig nb)
+  (operation nonce-test (added-strand init 3) nb (0 2) (enc na nb a))
+  (traces ((recv (enc na a b)) (send (enc na nb a)) (recv (enc nb b)))
+    ((send (enc na a b-0)) (recv (enc na nb a)) (send (enc nb b-0))))
+  (label 4)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (nb nb) (b b) (na na))))
+  (origs (nb (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (n text) (k akey))
+    (trace (send (enc n k)) (recv n)))
+  (defrole resp
+    (vars (n text) (k akey))
+    (trace (recv (enc n k)) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton unilateral
+  (vars (n text) (k akey))
+  (defstrand init 2 (n n) (k k))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (comment "The shape analysis sentence for this problem:"
+    (defgoal unilateral
+      (forall ((n text) (k akey) (z strd))
+        (implies
+          (and (p "init" z 2) (p "init" "n" z n) (p "init" "k" z k)
+            (non (invk k)) (uniq-at n z 0))
+          (exists ((z-0 strd))
+            (and (p "resp" z-0 2) (p "resp" "n" z-0 n)
+              (p "resp" "k" z-0 k) (prec z 0 z-0 0)
+              (prec z-0 1 z 1)))))))
+  (traces ((send (enc n k)) (recv n)))
+  (label 5)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton unilateral
+  (vars (n text) (k akey))
+  (defstrand init 2 (n n) (k k))
+  (defstrand resp 2 (n n) (k k))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (operation nonce-test (added-strand resp 2) n (0 1) (enc n k))
+  (traces ((send (enc n k)) (recv n)) ((recv (enc n k)) (send n)))
+  (label 6)
+  (parent 5)
+  (realized)
+  (shape)
+  (maps ((0) ((k k) (n n))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol ns-with-rule basic
+  (defrole init
+    (vars (a b akey) (na nb text))
+    (trace (send (enc na a b)) (recv (enc na nb a)) (send (enc nb b))))
+  (defrole resp
+    (vars (b a akey) (nb na text))
+    (trace (recv (enc na a b)) (send (enc na nb a)) (recv (enc nb b))))
+  (defrule unilateral
+    (forall ((r strd) (a akey) (nb text))
+      (implies
+        (and (p "resp" r 3) (p "resp" "a" r a) (p "resp" "nb" r nb)
+          (non (invk a)) (uniq nb))
+        (exists ((i strd))
+          (and (p "init" i 3) (p "init" "a" i a) (p "init" "nb" i nb)
+            (prec r 1 i 1) (prec i 2 r 2)))))
+    (comment "Unilateral sas under the predicate mapping:")
+    (comment (p "init" 2) "->" (p "resp" 3) "and")
+    (comment (p "init" "n") "->" (p "resp" "nb") "and")
+    (comment (p "init" "k") "->" (p "resp" "a") "and")
+    (comment (p "resp" 2) "->" (p "init" 3) "and")
+    (comment (p "resp" "n") "->" (p "init" "nb"))
+    (comment (p "resp" "k") "->" (p "init" "a")))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Needham-Schroeder with rule"))
+
+(defskeleton ns-with-rule
+  (vars (nb na text) (a b akey))
+  (defstrand resp 3 (nb nb) (na na) (b b) (a a))
+  (non-orig (invk a))
+  (uniq-orig nb)
+  (comment "Responder point-of-view")
+  (traces ((recv (enc na a b)) (send (enc na nb a)) (recv (enc nb b))))
+  (label 7)
+  (unrealized (0 2))
+  (origs (nb (0 1)))
+  (comment "Not closed under rules"))
+
+(defskeleton ns-with-rule
+  (vars (na nb text) (b a b-0 akey))
+  (defstrand resp 3 (nb nb) (na na) (b b) (a a))
+  (defstrand init 3 (na na) (nb nb) (a a) (b b-0))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig (invk a))
+  (uniq-orig nb)
+  (operation nonce-test (contracted (na-0 na)) nb (1 1) (enc na nb a))
+  (traces ((recv (enc na a b)) (send (enc na nb a)) (recv (enc nb b)))
+    ((send (enc na a b-0)) (recv (enc na nb a)) (send (enc nb b-0))))
+  (label 9)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (nb nb) (b b) (na na))))
+  (origs (nb (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/pruning1.tst b/tst/pruning1.tst
--- a/tst/pruning1.tst
+++ b/tst/pruning1.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/pruning1.scm")
 
 (defprotocol prune basic
@@ -41,6 +41,7 @@
   (non-orig (privk a))
   (uniq-orig n)
   (operation nonce-test (added-strand trans 3) n (0 1) (enc n (pubk a)))
+  (strand-map 0)
   (traces
     ((send (enc n (pubk a))) (recv (enc n (pubk b) (pubk a)))
       (recv (enc n (privk b) (pubk a))))
@@ -59,6 +60,7 @@
   (uniq-orig n)
   (operation nonce-test (contracted (k (pubk b))) n (0 1)
     (enc n (pubk a)) (enc n (pubk b) (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc n (pubk a))) (recv (enc n (pubk b) (pubk a)))
       (recv (enc n (privk b) (pubk a))))
@@ -79,6 +81,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand trans 3) n (0 2) (enc n (pubk a))
     (enc n (pubk b) (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc n (pubk a))) (recv (enc n (pubk b) (pubk a)))
       (recv (enc n (privk b) (pubk a))))
@@ -101,6 +104,7 @@
   (operation nonce-test (contracted (k (privk b))) n (0 2)
     (enc n (pubk a)) (enc n (privk b) (pubk a))
     (enc n (pubk b) (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n (pubk a))) (recv (enc n (pubk b) (pubk a)))
       (recv (enc n (privk b) (pubk a))))
diff --git a/tst/pruning1_shapes.tst b/tst/pruning1_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/pruning1_shapes.tst
@@ -0,0 +1,107 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/pruning1.scm")
+
+(defprotocol prune basic
+  (defrole init
+    (vars (a b name) (n text))
+    (trace (send (enc n (pubk a))) (recv (enc n (pubk b) (pubk a)))
+      (recv (enc n (privk b) (pubk a))))
+    (non-orig (privk a))
+    (uniq-orig n))
+  (defrole trans
+    (vars (a name) (n text) (k akey))
+    (trace (recv (enc n (pubk a))) (recv k) (send (enc n k (pubk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Shows a failure with generalization"
+    "Run this with a step count of 4"))
+
+(defskeleton prune
+  (vars (n text) (a b name))
+  (defstrand init 3 (n n) (a a) (b b))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (traces
+    ((send (enc n (pubk a))) (recv (enc n (pubk b) (pubk a)))
+      (recv (enc n (privk b) (pubk a)))))
+  (label 0)
+  (unrealized (0 1) (0 2))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton prune
+  (vars (n text) (a b name))
+  (defstrand init 3 (n n) (a a) (b b))
+  (defstrand trans 3 (n n) (k (pubk b)) (a a))
+  (defstrand trans 3 (n n) (k (privk b)) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 2) (0 1)) ((2 2) (0 2)))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (operation nonce-test (contracted (k (privk b))) n (0 2)
+    (enc n (pubk a)) (enc n (privk b) (pubk a))
+    (enc n (pubk b) (pubk a)))
+  (traces
+    ((send (enc n (pubk a))) (recv (enc n (pubk b) (pubk a)))
+      (recv (enc n (privk b) (pubk a))))
+    ((recv (enc n (pubk a))) (recv (pubk b))
+      (send (enc n (pubk b) (pubk a))))
+    ((recv (enc n (pubk a))) (recv (privk b))
+      (send (enc n (privk b) (pubk a)))))
+  (label 4)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n n))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol prune basic
+  (defrole init
+    (vars (a b name) (n text))
+    (trace (send (enc n (pubk a))) (recv (enc n (pubk b) (pubk a)))
+      (recv (enc n (privk b) (pubk a))))
+    (non-orig (privk a))
+    (uniq-orig n))
+  (defrole trans
+    (vars (a name) (n text) (k akey))
+    (trace (recv (enc n (pubk a))) (recv k) (send (enc n k (pubk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Shows a failure with generalization"
+    "Run this with a step count of 4"))
+
+(defskeleton prune
+  (vars (n text) (a b name))
+  (defstrand init 3 (n n) (a a) (b b))
+  (defstrand trans 3 (n n) (k (pubk b)) (a a))
+  (defstrand trans 3 (n n) (k (privk b)) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 2) (0 1)) ((2 2) (0 2)))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (traces
+    ((send (enc n (pubk a))) (recv (enc n (pubk b) (pubk a)))
+      (recv (enc n (privk b) (pubk a))))
+    ((recv (enc n (pubk a))) (recv (pubk b))
+      (send (enc n (pubk b) (pubk a))))
+    ((recv (enc n (pubk a))) (recv (privk b))
+      (send (enc n (privk b) (pubk a)))))
+  (label 5)
+  (realized)
+  (shape)
+  (maps ((0 1 2) ((n n) (a a) (b b))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/puzzle_example.tst b/tst/puzzle_example.tst
--- a/tst/puzzle_example.tst
+++ b/tst/puzzle_example.tst
@@ -1,6 +1,6 @@
 (herald puzzle_example)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/puzzle_example.scm")
 
 (defprotocol puzzle basic
@@ -40,6 +40,7 @@
   (uniq-orig na payload)
   (operation encryption-test (added-strand resp 2) (enc na s (ltk a b))
     (0 1))
+  (strand-map 0)
   (traces ((send na) (recv (enc na s (ltk a b))) (send (enc payload s)))
     ((recv na) (send (enc na s (ltk a b)))))
   (label 1)
@@ -106,6 +107,7 @@
   (uniq-orig na payload)
   (operation encryption-test (added-strand resp 2) (enc na s (ltk a b))
     (0 1))
+  (strand-map 0 1)
   (traces ((send na) (recv (enc na s (ltk a b))) (send (enc payload s)))
     ((recv payload) (send payload))
     ((recv na) (send (enc na s (ltk a b)))))
@@ -231,6 +233,7 @@
   (uniq-orig s na payload)
   (operation nonce-test (added-listener s) payload (2 0)
     (enc payload s))
+  (strand-map 0 1 2)
   (traces ((send na) (recv (enc na s (ltk a b))) (send (enc payload s)))
     ((recv na) (send (enc na s (ltk a b))))
     ((recv payload) (send payload)) ((recv s) (send s)))
@@ -279,6 +282,7 @@
   (uniq-orig s)
   (operation encryption-test (added-strand init 3) (enc payload s)
     (0 2))
+  (strand-map 0)
   (traces ((recv na) (send (enc na s (ltk a b))) (recv (enc payload s)))
     ((send na-0) (recv (enc na-0 s (ltk a-0 b-0)))
       (send (enc payload s))))
@@ -295,6 +299,7 @@
   (non-orig (ltk a b))
   (uniq-orig s)
   (operation encryption-test (added-listener s) (enc payload s) (0 2))
+  (strand-map 0)
   (traces ((recv na) (send (enc na s (ltk a b))) (recv (enc payload s)))
     ((recv s) (send s)))
   (label 12)
@@ -312,6 +317,7 @@
   (uniq-orig s)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (na-0 na)) s (1 1)
     (enc na s (ltk a b)))
+  (strand-map 0 1)
   (traces ((recv na) (send (enc na s (ltk a b))) (recv (enc payload s)))
     ((send na) (recv (enc na s (ltk a b))) (send (enc payload s))))
   (label 13)
@@ -433,6 +439,7 @@
   (uniq-orig s payload)
   (operation nonce-test (added-listener s) payload (2 0)
     (enc payload s))
+  (strand-map 0 1 2)
   (traces ((recv na) (send (enc na s (ltk a b))) (recv (enc payload s)))
     ((send na) (recv (enc na s (ltk a b))) (send (enc payload s)))
     ((recv payload) (send payload)) ((recv s) (send s)))
diff --git a/tst/puzzle_example_shapes.tst b/tst/puzzle_example_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/puzzle_example_shapes.tst
@@ -0,0 +1,292 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald puzzle_example)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/puzzle_example.scm")
+
+(defprotocol puzzle basic
+  (defrole init
+    (vars (a b name) (na payload text) (s skey))
+    (trace (send na) (recv (enc na s (ltk a b)))
+      (send (enc payload s))))
+  (defrole resp
+    (vars (a b name) (na payload text) (s skey))
+    (trace (recv na) (send (enc na s (ltk a b)))
+      (recv (enc payload s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton puzzle
+  (vars (s skey) (na payload text) (a b name))
+  (defstrand init 3 (s s) (na na) (payload payload) (a a) (b b))
+  (non-orig (ltk a b))
+  (uniq-orig na payload)
+  (traces
+    ((send na) (recv (enc na s (ltk a b))) (send (enc payload s))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (na (0 0)) (payload (0 2)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton puzzle
+  (vars (s skey) (na payload text) (a b name))
+  (defstrand init 3 (s s) (na na) (payload payload) (a a) (b b))
+  (defstrand resp 2 (s s) (na na) (a a) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (ltk a b))
+  (uniq-orig na payload)
+  (operation encryption-test (added-strand resp 2) (enc na s (ltk a b))
+    (0 1))
+  (traces ((send na) (recv (enc na s (ltk a b))) (send (enc payload s)))
+    ((recv na) (send (enc na s (ltk a b)))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (na na) (payload payload) (s s))))
+  (origs (na (0 0)) (payload (0 2))))
+
+(comment "Nothing left to do")
+
+(defprotocol puzzle basic
+  (defrole init
+    (vars (a b name) (na payload text) (s skey))
+    (trace (send na) (recv (enc na s (ltk a b)))
+      (send (enc payload s))))
+  (defrole resp
+    (vars (a b name) (na payload text) (s skey))
+    (trace (recv na) (send (enc na s (ltk a b)))
+      (recv (enc payload s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton puzzle
+  (vars (s skey) (na payload text) (a b name))
+  (defstrand init 3 (s s) (na na) (payload payload) (a a) (b b))
+  (deflistener payload)
+  (non-orig (ltk a b))
+  (uniq-orig na payload)
+  (traces ((send na) (recv (enc na s (ltk a b))) (send (enc payload s)))
+    ((recv payload) (send payload)))
+  (label 2)
+  (unrealized (0 1) (1 0))
+  (preskeleton)
+  (origs (na (0 0)) (payload (0 2)))
+  (comment "Not a skeleton"))
+
+(defskeleton puzzle
+  (vars (s skey) (na payload text) (a b name))
+  (defstrand init 3 (s s) (na na) (payload payload) (a a) (b b))
+  (deflistener payload)
+  (defstrand resp 2 (s s) (na na) (a a) (b b))
+  (precedes ((0 0) (2 0)) ((0 2) (1 0)) ((2 1) (0 1)))
+  (non-orig (ltk a b))
+  (uniq-orig na payload)
+  (operation encryption-test (added-strand resp 2) (enc na s (ltk a b))
+    (0 1))
+  (traces ((send na) (recv (enc na s (ltk a b))) (send (enc payload s)))
+    ((recv payload) (send payload))
+    ((recv na) (send (enc na s (ltk a b)))))
+  (label 4)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (na na) (payload payload) (s s))))
+  (origs (na (0 0)) (payload (0 2))))
+
+(comment "Nothing left to do")
+
+(defprotocol puzzle basic
+  (defrole init
+    (vars (a b name) (na payload text) (s skey))
+    (trace (send na) (recv (enc na s (ltk a b)))
+      (send (enc payload s))))
+  (defrole resp
+    (vars (a b name) (na payload text) (s skey))
+    (trace (recv na) (send (enc na s (ltk a b)))
+      (recv (enc payload s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton puzzle
+  (vars (s skey) (na payload text) (a b name))
+  (defstrand init 3 (s s) (na na) (payload payload) (a a) (b b))
+  (defstrand resp 2 (s s) (na na) (a a) (b b))
+  (deflistener s)
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (ltk a b))
+  (uniq-orig s na payload)
+  (traces ((send na) (recv (enc na s (ltk a b))) (send (enc payload s)))
+    ((recv na) (send (enc na s (ltk a b)))) ((recv s) (send s)))
+  (label 5)
+  (unrealized (2 0))
+  (preskeleton)
+  (origs (s (1 1)) (na (0 0)) (payload (0 2)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol puzzle basic
+  (defrole init
+    (vars (a b name) (na payload text) (s skey))
+    (trace (send na) (recv (enc na s (ltk a b)))
+      (send (enc payload s))))
+  (defrole resp
+    (vars (a b name) (na payload text) (s skey))
+    (trace (recv na) (send (enc na s (ltk a b)))
+      (recv (enc payload s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton puzzle
+  (vars (s skey) (na payload text) (a b name))
+  (defstrand init 3 (s s) (na na) (payload payload) (a a) (b b))
+  (defstrand resp 2 (s s) (na na) (a a) (b b))
+  (deflistener payload)
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (ltk a b))
+  (uniq-orig s na payload)
+  (traces ((send na) (recv (enc na s (ltk a b))) (send (enc payload s)))
+    ((recv na) (send (enc na s (ltk a b))))
+    ((recv payload) (send payload)))
+  (label 7)
+  (unrealized (2 0))
+  (preskeleton)
+  (origs (s (1 1)) (na (0 0)) (payload (0 2)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol puzzle basic
+  (defrole init
+    (vars (a b name) (na payload text) (s skey))
+    (trace (send na) (recv (enc na s (ltk a b)))
+      (send (enc payload s))))
+  (defrole resp
+    (vars (a b name) (na payload text) (s skey))
+    (trace (recv na) (send (enc na s (ltk a b)))
+      (recv (enc payload s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton puzzle
+  (vars (s skey) (payload na text) (a b name))
+  (defstrand resp 3 (s s) (na na) (payload payload) (a a) (b b))
+  (non-orig (ltk a b))
+  (uniq-orig s)
+  (traces
+    ((recv na) (send (enc na s (ltk a b))) (recv (enc payload s))))
+  (label 10)
+  (unrealized (0 2))
+  (origs (s (0 1)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton puzzle
+  (vars (s skey) (payload na text) (a b name))
+  (defstrand resp 3 (s s) (na na) (payload payload) (a a) (b b))
+  (defstrand init 3 (s s) (na na) (payload payload) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig (ltk a b))
+  (uniq-orig s)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (na-0 na)) s (1 1)
+    (enc na s (ltk a b)))
+  (traces ((recv na) (send (enc na s (ltk a b))) (recv (enc payload s)))
+    ((send na) (recv (enc na s (ltk a b))) (send (enc payload s))))
+  (label 13)
+  (parent 10)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (payload payload) (s s) (na na))))
+  (origs (s (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol puzzle basic
+  (defrole init
+    (vars (a b name) (na payload text) (s skey))
+    (trace (send na) (recv (enc na s (ltk a b)))
+      (send (enc payload s))))
+  (defrole resp
+    (vars (a b name) (na payload text) (s skey))
+    (trace (recv na) (send (enc na s (ltk a b)))
+      (recv (enc payload s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton puzzle
+  (vars (s skey) (payload na text) (a b name))
+  (defstrand resp 3 (s s) (na na) (payload payload) (a a) (b b))
+  (deflistener s)
+  (non-orig (ltk a b))
+  (uniq-orig s)
+  (traces ((recv na) (send (enc na s (ltk a b))) (recv (enc payload s)))
+    ((recv s) (send s)))
+  (label 14)
+  (unrealized (0 2) (1 0))
+  (preskeleton)
+  (origs (s (0 1)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol puzzle basic
+  (defrole init
+    (vars (a b name) (na payload text) (s skey))
+    (trace (send na) (recv (enc na s (ltk a b)))
+      (send (enc payload s))))
+  (defrole resp
+    (vars (a b name) (na payload text) (s skey))
+    (trace (recv na) (send (enc na s (ltk a b)))
+      (recv (enc payload s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton puzzle
+  (vars (s skey) (payload na text) (a b name))
+  (defstrand resp 3 (s s) (na na) (payload payload) (a a) (b b))
+  (defstrand init 3 (s s) (na na) (payload payload) (a a) (b b))
+  (deflistener payload)
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig (ltk a b))
+  (uniq-orig s payload)
+  (traces ((recv na) (send (enc na s (ltk a b))) (recv (enc payload s)))
+    ((send na) (recv (enc na s (ltk a b))) (send (enc payload s)))
+    ((recv payload) (send payload)))
+  (label 16)
+  (unrealized (2 0))
+  (preskeleton)
+  (origs (s (0 1)) (payload (1 2)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
diff --git a/tst/reflect.tst b/tst/reflect.tst
--- a/tst/reflect.tst
+++ b/tst/reflect.tst
@@ -1,6 +1,6 @@
 (herald reflect)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/reflect.scm")
 
 (defprotocol reflect basic
@@ -35,6 +35,7 @@
   (non-orig (invk a) (invk b))
   (operation encryption-test (added-strand init 1) (enc b (invk a))
     (0 0))
+  (strand-map 0)
   (traces ((recv (enc b (invk a)))) ((send (enc b (invk a)))))
   (label 1)
   (parent 0)
@@ -51,6 +52,7 @@
   (non-orig (invk a) (invk b))
   (operation encryption-test (added-strand resp 2) (enc b (invk a))
     (0 0))
+  (strand-map 0)
   (traces ((recv (enc b (invk a))))
     ((recv (enc a (invk b))) (send (enc b (invk a)))))
   (label 2)
@@ -67,6 +69,7 @@
   (non-orig (invk a) (invk b))
   (operation encryption-test (added-strand init 1) (enc a (invk b))
     (1 0))
+  (strand-map 0 1)
   (traces ((recv (enc b (invk a))))
     ((recv (enc a (invk b))) (send (enc b (invk a))))
     ((send (enc a (invk b)))))
@@ -86,6 +89,7 @@
   (non-orig (invk a) (invk b))
   (operation encryption-test (added-strand resp 2) (enc a (invk b))
     (1 0))
+  (strand-map 0 1)
   (traces ((recv (enc b (invk a))))
     ((recv (enc a (invk b))) (send (enc b (invk a))))
     ((recv (enc b (invk a))) (send (enc a (invk b)))))
@@ -104,6 +108,7 @@
   (non-orig (invk a) (invk b))
   (operation encryption-test (added-strand init 1) (enc b (invk a))
     (2 0))
+  (strand-map 0 1 2)
   (traces ((recv (enc b (invk a))))
     ((recv (enc a (invk b))) (send (enc b (invk a))))
     ((recv (enc b (invk a))) (send (enc a (invk b))))
@@ -123,6 +128,7 @@
   (non-orig (invk a) (invk b))
   (operation encryption-test (added-strand resp 2) (enc b (invk a))
     (2 0))
+  (strand-map 0 1 2)
   (traces ((recv (enc b (invk a))))
     ((recv (enc a (invk b))) (send (enc b (invk a))))
     ((recv (enc b (invk a))) (send (enc a (invk b))))
@@ -130,6 +136,10 @@
   (label 6)
   (parent 4)
   (seen 4)
+  (seen-ops
+    (4
+      (operation encryption-test (added-strand resp 2) (enc a (invk b))
+        (3 0)) (strand-map 0 1 2 1)))
   (unrealized (3 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -141,12 +151,15 @@
   (precedes ((1 1) (0 0)) ((2 0) (1 0)))
   (non-orig (invk a) (invk b))
   (operation generalization deleted (1 0))
+  (strand-map 0 2 3)
   (traces ((recv (enc b (invk a))))
     ((recv (enc b (invk a))) (send (enc a (invk b))))
     ((send (enc b (invk a)))))
   (label 7)
   (parent 5)
   (seen 1)
+  (seen-ops
+    (1 (operation generalization deleted (1 0)) (strand-map 0 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -182,6 +195,7 @@
   (non-orig (invk b))
   (operation encryption-test (displaced 1 0 init 1) (enc a (invk b))
     (0 1))
+  (strand-map 0)
   (traces ((send (enc b (invk b))) (recv (enc b (invk b)))))
   (label 9)
   (parent 8)
@@ -198,6 +212,7 @@
   (non-orig (invk a) (invk b))
   (operation encryption-test (added-strand init 1) (enc a (invk b))
     (0 1))
+  (strand-map 0)
   (traces ((send (enc b (invk a))) (recv (enc a (invk b))))
     ((send (enc a (invk b)))))
   (label 10)
@@ -215,6 +230,7 @@
   (non-orig (invk a) (invk b))
   (operation encryption-test (added-strand resp 2) (enc a (invk b))
     (0 1))
+  (strand-map 0)
   (traces ((send (enc b (invk a))) (recv (enc a (invk b))))
     ((recv (enc b (invk a))) (send (enc a (invk b)))))
   (label 11)
@@ -230,6 +246,7 @@
   (non-orig (invk a) (invk b))
   (operation encryption-test (displaced 2 0 init 1) (enc b (invk a))
     (1 0))
+  (strand-map 0 1)
   (traces ((send (enc b (invk a))) (recv (enc a (invk b))))
     ((recv (enc b (invk a))) (send (enc a (invk b)))))
   (label 12)
@@ -248,6 +265,7 @@
   (non-orig (invk a) (invk b))
   (operation encryption-test (added-strand init 1) (enc b (invk a))
     (1 0))
+  (strand-map 0 1)
   (traces ((send (enc b (invk a))) (recv (enc a (invk b))))
     ((recv (enc b (invk a))) (send (enc a (invk b))))
     ((send (enc b (invk a)))))
@@ -267,6 +285,7 @@
   (non-orig (invk a) (invk b))
   (operation encryption-test (added-strand resp 2) (enc b (invk a))
     (1 0))
+  (strand-map 0 1)
   (traces ((send (enc b (invk a))) (recv (enc a (invk b))))
     ((recv (enc b (invk a))) (send (enc a (invk b))))
     ((recv (enc a (invk b))) (send (enc b (invk a)))))
@@ -283,11 +302,13 @@
   (non-orig (invk b))
   (operation encryption-test (displaced 3 0 init 1) (enc a (invk b))
     (2 0))
+  (strand-map 0 1 1)
   (traces ((send (enc b (invk b))) (recv (enc b (invk b))))
     ((recv (enc b (invk b))) (send (enc b (invk b)))))
   (label 15)
   (parent 14)
   (seen 9)
+  (seen-ops (9 (operation generalization deleted (1 0)) (strand-map 0)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -301,6 +322,7 @@
   (non-orig (invk a) (invk b))
   (operation encryption-test (added-strand init 1) (enc a (invk b))
     (2 0))
+  (strand-map 0 1 2)
   (traces ((send (enc b (invk a))) (recv (enc a (invk b))))
     ((recv (enc b (invk a))) (send (enc a (invk b))))
     ((recv (enc a (invk b))) (send (enc b (invk a))))
@@ -320,6 +342,7 @@
   (non-orig (invk a) (invk b))
   (operation encryption-test (added-strand resp 2) (enc a (invk b))
     (2 0))
+  (strand-map 0 1 2)
   (traces ((send (enc b (invk a))) (recv (enc a (invk b))))
     ((recv (enc b (invk a))) (send (enc a (invk b))))
     ((recv (enc a (invk b))) (send (enc b (invk a))))
@@ -327,6 +350,10 @@
   (label 17)
   (parent 14)
   (seen 14)
+  (seen-ops
+    (14
+      (operation encryption-test (added-strand resp 2) (enc b (invk a))
+        (3 0)) (strand-map 0 1 2 1)))
   (unrealized (3 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -338,12 +365,15 @@
   (precedes ((1 1) (0 1)) ((2 0) (1 0)))
   (non-orig (invk a) (invk b))
   (operation generalization deleted (1 0))
+  (strand-map 0 2 3)
   (traces ((send (enc b (invk a))) (recv (enc a (invk b))))
     ((recv (enc a (invk b))) (send (enc b (invk a))))
     ((send (enc a (invk b)))))
   (label 18)
   (parent 16)
   (seen 10)
+  (seen-ops
+    (10 (operation generalization deleted (1 0)) (strand-map 0 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -381,6 +411,7 @@
   (non-orig b (invk a))
   (operation encryption-test (added-strand init 1)
     (enc (invk b) (invk a)) (0 0))
+  (strand-map 0)
   (traces ((recv (enc (invk b) (invk a))))
     ((send (enc (invk b) (invk a)))))
   (label 20)
@@ -398,6 +429,7 @@
   (non-orig b (invk a))
   (operation encryption-test (added-strand resp 2)
     (enc (invk b) (invk a)) (0 0))
+  (strand-map 0)
   (traces ((recv (enc (invk b) (invk a))))
     ((recv (enc a b)) (send (enc (invk b) (invk a)))))
   (label 21)
@@ -414,6 +446,7 @@
   (non-orig (invk a) (invk a-0))
   (operation encryption-test (added-strand init 1) (enc a (invk a-0))
     (1 0))
+  (strand-map 0 1)
   (traces ((recv (enc a-0 (invk a))))
     ((recv (enc a (invk a-0))) (send (enc a-0 (invk a))))
     ((send (enc a (invk a-0)))))
@@ -433,6 +466,7 @@
   (non-orig (invk a) (invk b))
   (operation encryption-test (added-strand resp 2) (enc a (invk b))
     (1 0))
+  (strand-map 0 1)
   (traces ((recv (enc b (invk a))))
     ((recv (enc a (invk b))) (send (enc b (invk a))))
     ((recv (enc b (invk a))) (send (enc a (invk b)))))
@@ -451,6 +485,7 @@
   (non-orig (invk a) (invk b))
   (operation encryption-test (added-strand init 1) (enc b (invk a))
     (2 0))
+  (strand-map 0 1 2)
   (traces ((recv (enc b (invk a))))
     ((recv (enc a (invk b))) (send (enc b (invk a))))
     ((recv (enc b (invk a))) (send (enc a (invk b))))
@@ -470,6 +505,7 @@
   (non-orig (invk a) (invk b))
   (operation encryption-test (added-strand resp 2) (enc b (invk a))
     (2 0))
+  (strand-map 0 1 2)
   (traces ((recv (enc b (invk a))))
     ((recv (enc a (invk b))) (send (enc b (invk a))))
     ((recv (enc b (invk a))) (send (enc a (invk b))))
@@ -477,6 +513,10 @@
   (label 25)
   (parent 23)
   (seen 23)
+  (seen-ops
+    (23
+      (operation encryption-test (added-strand resp 2) (enc a (invk b))
+        (3 0)) (strand-map 0 1 2 1)))
   (unrealized (3 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -488,12 +528,15 @@
   (precedes ((1 1) (0 0)) ((2 0) (1 0)))
   (non-orig (invk a) (invk b))
   (operation generalization deleted (1 0))
+  (strand-map 0 2 3)
   (traces ((recv (enc b (invk a))))
     ((recv (enc b (invk a))) (send (enc a (invk b))))
     ((send (enc b (invk a)))))
   (label 26)
   (parent 24)
   (seen 20)
+  (seen-ops
+    (20 (operation generalization deleted (1 0)) (strand-map 0 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/reflect_shapes.tst b/tst/reflect_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/reflect_shapes.tst
@@ -0,0 +1,224 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald reflect)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/reflect.scm")
+
+(defprotocol reflect basic
+  (defrole init
+    (vars (a b akey))
+    (trace (send (enc b (invk a))) (recv (enc a (invk b)))))
+  (defrole resp
+    (vars (a b akey))
+    (trace (recv (enc b (invk a))) (send (enc a (invk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton reflect
+  (vars (a b akey))
+  (defstrand resp 1 (a a) (b b))
+  (non-orig (invk a) (invk b))
+  (traces ((recv (enc b (invk a)))))
+  (label 0)
+  (unrealized (0 0))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton reflect
+  (vars (a b akey))
+  (defstrand resp 1 (a a) (b b))
+  (defstrand init 1 (a a) (b b))
+  (precedes ((1 0) (0 0)))
+  (non-orig (invk a) (invk b))
+  (operation encryption-test (added-strand init 1) (enc b (invk a))
+    (0 0))
+  (traces ((recv (enc b (invk a)))) ((send (enc b (invk a)))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b))))
+  (origs))
+
+(defskeleton reflect
+  (vars (a b akey))
+  (defstrand resp 1 (a a) (b b))
+  (defstrand resp 2 (a b) (b a))
+  (defstrand init 1 (a b) (b a))
+  (precedes ((1 1) (0 0)) ((2 0) (1 0)))
+  (non-orig (invk a) (invk b))
+  (operation encryption-test (added-strand init 1) (enc a (invk b))
+    (1 0))
+  (traces ((recv (enc b (invk a))))
+    ((recv (enc a (invk b))) (send (enc b (invk a))))
+    ((send (enc a (invk b)))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol reflect basic
+  (defrole init
+    (vars (a b akey))
+    (trace (send (enc b (invk a))) (recv (enc a (invk b)))))
+  (defrole resp
+    (vars (a b akey))
+    (trace (recv (enc b (invk a))) (send (enc a (invk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton reflect
+  (vars (a b akey))
+  (defstrand init 2 (a a) (b b))
+  (non-orig (invk a) (invk b))
+  (traces ((send (enc b (invk a))) (recv (enc a (invk b)))))
+  (label 8)
+  (unrealized (0 1))
+  (origs)
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton reflect
+  (vars (b akey))
+  (defstrand init 2 (a b) (b b))
+  (non-orig (invk b))
+  (operation encryption-test (displaced 1 0 init 1) (enc a (invk b))
+    (0 1))
+  (traces ((send (enc b (invk b))) (recv (enc b (invk b)))))
+  (label 9)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps ((0) ((a b) (b b))))
+  (origs))
+
+(defskeleton reflect
+  (vars (a b akey))
+  (defstrand init 2 (a a) (b b))
+  (defstrand init 1 (a b) (b a))
+  (precedes ((1 0) (0 1)))
+  (non-orig (invk a) (invk b))
+  (operation encryption-test (added-strand init 1) (enc a (invk b))
+    (0 1))
+  (traces ((send (enc b (invk a))) (recv (enc a (invk b))))
+    ((send (enc a (invk b)))))
+  (label 10)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b))))
+  (origs))
+
+(defskeleton reflect
+  (vars (a b akey))
+  (defstrand init 2 (a a) (b b))
+  (defstrand resp 2 (a a) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk a) (invk b))
+  (operation encryption-test (displaced 2 0 init 1) (enc b (invk a))
+    (1 0))
+  (traces ((send (enc b (invk a))) (recv (enc a (invk b))))
+    ((recv (enc b (invk a))) (send (enc a (invk b)))))
+  (label 12)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b))))
+  (origs))
+
+(defskeleton reflect
+  (vars (a b akey))
+  (defstrand init 2 (a a) (b b))
+  (defstrand resp 2 (a a) (b b))
+  (defstrand init 1 (a a) (b b))
+  (precedes ((1 1) (0 1)) ((2 0) (1 0)))
+  (non-orig (invk a) (invk b))
+  (operation encryption-test (added-strand init 1) (enc b (invk a))
+    (1 0))
+  (traces ((send (enc b (invk a))) (recv (enc a (invk b))))
+    ((recv (enc b (invk a))) (send (enc a (invk b))))
+    ((send (enc b (invk a)))))
+  (label 13)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol reflect basic
+  (defrole init
+    (vars (a b akey))
+    (trace (send (enc b (invk a))) (recv (enc a (invk b)))))
+  (defrole resp
+    (vars (a b akey))
+    (trace (recv (enc b (invk a))) (send (enc a (invk b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton reflect
+  (vars (a b akey))
+  (defstrand resp 1 (a a) (b (invk b)))
+  (non-orig b (invk a))
+  (traces ((recv (enc (invk b) (invk a)))))
+  (label 19)
+  (unrealized (0 0))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton reflect
+  (vars (a b akey))
+  (defstrand resp 1 (a a) (b (invk b)))
+  (defstrand init 1 (a a) (b (invk b)))
+  (precedes ((1 0) (0 0)))
+  (non-orig b (invk a))
+  (operation encryption-test (added-strand init 1)
+    (enc (invk b) (invk a)) (0 0))
+  (traces ((recv (enc (invk b) (invk a))))
+    ((send (enc (invk b) (invk a)))))
+  (label 20)
+  (parent 19)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b))))
+  (origs))
+
+(defskeleton reflect
+  (vars (a a-0 akey))
+  (defstrand resp 1 (a a) (b a-0))
+  (defstrand resp 2 (a a-0) (b a))
+  (defstrand init 1 (a a-0) (b a))
+  (precedes ((1 1) (0 0)) ((2 0) (1 0)))
+  (non-orig (invk a) (invk a-0))
+  (operation encryption-test (added-strand init 1) (enc a (invk a-0))
+    (1 0))
+  (traces ((recv (enc a-0 (invk a))))
+    ((recv (enc a (invk a-0))) (send (enc a-0 (invk a))))
+    ((send (enc a (invk a-0)))))
+  (label 22)
+  (parent 19)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b (invk a-0)))))
+  (origs))
+
+(comment "Nothing left to do")
diff --git a/tst/renamings.tst b/tst/renamings.tst
--- a/tst/renamings.tst
+++ b/tst/renamings.tst
@@ -2,7 +2,7 @@
   (comment "There is a flaw in this protocol by design")
   (comment "It also shows how variable renaming works"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/renamings.scm")
 
 (defprotocol blanchet basic
@@ -41,6 +41,7 @@
   (uniq-orig a)
   (operation encryption-test (added-strand init 1) (enc a (privk s))
     (0 0))
+  (strand-map 0)
   (traces ((recv (enc (enc a (privk s)) (pubk d))) (send (enc b a)))
     ((send (enc (enc a (privk s)) (pubk b-0)))))
   (label 1)
@@ -87,6 +88,7 @@
   (non-orig (privk d))
   (uniq-orig a)
   (operation encryption-test (added-strand resp 2) (enc b a) (0 1))
+  (strand-map 0)
   (traces ((send (enc (enc a (privk s)) (pubk d))) (recv (enc b a)))
     ((recv (enc (enc a (privk d-0)) (pubk a-0))) (send (enc b a))))
   (label 3)
@@ -102,6 +104,7 @@
   (non-orig (privk d))
   (uniq-orig a)
   (operation encryption-test (added-listener a) (enc b a) (0 1))
+  (strand-map 0)
   (traces ((send (enc (enc a (privk s)) (pubk d))) (recv (enc b a)))
     ((recv a) (send a)))
   (label 4)
@@ -119,6 +122,7 @@
   (uniq-orig a)
   (operation nonce-test (contracted (d-0 s) (a-0 d)) a (1 0)
     (enc (enc a (privk s)) (pubk d)))
+  (strand-map 0 1)
   (traces ((send (enc (enc a (privk s)) (pubk d))) (recv (enc b a)))
     ((recv (enc (enc a (privk s)) (pubk d))) (send (enc b a))))
   (label 5)
diff --git a/tst/renamings_shapes.tst b/tst/renamings_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/renamings_shapes.tst
@@ -0,0 +1,104 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Blanchet's Simple Example Protocol"
+  (comment "There is a flaw in this protocol by design")
+  (comment "It also shows how variable renaming works"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/renamings.scm")
+
+(defprotocol blanchet basic
+  (defrole init
+    (vars (a b name) (s skey) (d data))
+    (trace (send (enc (enc s (privk a)) (pubk b))) (recv (enc d s))))
+  (defrole resp
+    (vars (d a name) (b skey) (s data))
+    (trace (recv (enc (enc b (privk d)) (pubk a))) (send (enc s b))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Blanchet's protocol using named asymmetric keys"))
+
+(defskeleton blanchet
+  (vars (b data) (a skey) (s d name))
+  (defstrand resp 2 (s b) (b a) (d s) (a d))
+  (non-orig (privk s) (privk d))
+  (uniq-orig a)
+  (comment "Analyze from the responder's perspective")
+  (traces ((recv (enc (enc a (privk s)) (pubk d))) (send (enc b a))))
+  (label 0)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton blanchet
+  (vars (b data) (a skey) (s d b-0 name))
+  (defstrand resp 2 (s b) (b a) (d s) (a d))
+  (defstrand init 1 (s a) (a s) (b b-0))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk s) (privk d))
+  (uniq-orig a)
+  (operation encryption-test (added-strand init 1) (enc a (privk s))
+    (0 0))
+  (traces ((recv (enc (enc a (privk s)) (pubk d))) (send (enc b a)))
+    ((send (enc (enc a (privk s)) (pubk b-0)))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((s s) (d d) (a a) (b b))))
+  (origs (a (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol blanchet basic
+  (defrole init
+    (vars (a b name) (s skey) (d data))
+    (trace (send (enc (enc s (privk a)) (pubk b))) (recv (enc d s))))
+  (defrole resp
+    (vars (d a name) (b skey) (s data))
+    (trace (recv (enc (enc b (privk d)) (pubk a))) (send (enc s b))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Blanchet's protocol using named asymmetric keys"))
+
+(defskeleton blanchet
+  (vars (b data) (a skey) (s d name))
+  (defstrand init 2 (d b) (s a) (a s) (b d))
+  (non-orig (privk d))
+  (uniq-orig a)
+  (comment "Analyze from the initiator's perspective")
+  (traces ((send (enc (enc a (privk s)) (pubk d))) (recv (enc b a))))
+  (label 2)
+  (unrealized (0 1))
+  (origs (a (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton blanchet
+  (vars (b data) (a skey) (s d name))
+  (defstrand init 2 (d b) (s a) (a s) (b d))
+  (defstrand resp 2 (s b) (b a) (d s) (a d))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk d))
+  (uniq-orig a)
+  (operation nonce-test (contracted (d-0 s) (a-0 d)) a (1 0)
+    (enc (enc a (privk s)) (pubk d)))
+  (traces ((send (enc (enc a (privk s)) (pubk d))) (recv (enc b a)))
+    ((recv (enc (enc a (privk s)) (pubk d))) (send (enc b a))))
+  (label 5)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((s s) (d d) (a a) (b b))))
+  (origs (a (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/role_uniq.tst b/tst/role_uniq.tst
--- a/tst/role_uniq.tst
+++ b/tst/role_uniq.tst
@@ -1,6 +1,6 @@
 (herald "Role Unique Origination")
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/role_uniq.scm")
 
 (defprotocol blanchet basic
@@ -39,6 +39,7 @@
   (non-orig (invk b))
   (uniq-orig s)
   (operation encryption-test (added-strand resp 2) (enc d s) (0 1))
+  (strand-map 0)
   (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)
@@ -54,6 +55,7 @@
   (non-orig (invk b))
   (uniq-orig s)
   (operation encryption-test (added-listener s) (enc d s) (0 1))
+  (strand-map 0)
   (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
     ((recv s) (send s)))
   (label 2)
@@ -71,6 +73,7 @@
   (uniq-orig s)
   (operation nonce-test (contracted (a-0 a) (b-0 b)) s (1 0)
     (enc (enc s (invk a)) b))
+  (strand-map 0 1)
   (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)
@@ -118,6 +121,7 @@
   (uniq-orig s)
   (operation encryption-test (added-strand init 1) (enc s (invk a))
     (0 0))
+  (strand-map 0)
   (traces ((recv (enc (enc s (invk a)) b)) (send (enc d s)))
     ((send (enc (enc s (invk a)) b-0))))
   (label 5)
@@ -178,6 +182,7 @@
   (non-orig (invk b))
   (uniq-orig s)
   (operation encryption-test (added-strand resp 2) (enc d s) (0 1))
+  (strand-map 0)
   (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 8)
@@ -193,6 +198,7 @@
   (non-orig (invk b))
   (uniq-orig s)
   (operation encryption-test (added-listener s) (enc d s) (0 1))
+  (strand-map 0)
   (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
     ((recv s) (send s)))
   (label 9)
@@ -210,6 +216,7 @@
   (uniq-orig s)
   (operation nonce-test (contracted (a-0 a) (b-0 b)) s (1 0)
     (enc (enc s (invk a)) b))
+  (strand-map 0 1)
   (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
     ((recv (enc (enc s (invk a)) b)) (send (enc d s))))
   (label 10)
@@ -259,6 +266,7 @@
   (rule role-uniq)
   (operation encryption-test (added-strand init 1) (enc s (invk a))
     (0 0))
+  (strand-map 0)
   (traces ((recv (enc (enc s (invk a)) b)) (send (enc d s)))
     ((send (enc (enc s (invk a)) b-0))))
   (label 12)
diff --git a/tst/role_uniq_shapes.tst b/tst/role_uniq_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/role_uniq_shapes.tst
@@ -0,0 +1,200 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Role Unique Origination")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/role_uniq.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))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Blanchet's protocol using unnamed asymmetric keys"))
+
+(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 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 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (d d))))
+  (origs (s (0 0))))
+
+(comment "Nothing left to do")
+
+(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))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Blanchet's protocol using unnamed asymmetric keys"))
+
+(defskeleton blanchet
+  (vars (d data) (s skey) (a b akey))
+  (defstrand resp 2 (d d) (s s) (a a) (b b))
+  (non-orig (invk a) (invk b))
+  (comment "Analyze from the responder's perspective")
+  (traces ((recv (enc (enc s (invk a)) b)) (send (enc d s))))
+  (label 4)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton blanchet
+  (vars (d data) (s skey) (a b b-0 akey))
+  (defstrand resp 2 (d d) (s s) (a a) (b b))
+  (defstrand init 1 (s s) (a a) (b b-0))
+  (precedes ((1 0) (0 0)))
+  (non-orig (invk a) (invk b))
+  (uniq-orig s)
+  (operation encryption-test (added-strand init 1) (enc s (invk a))
+    (0 0))
+  (traces ((recv (enc (enc s (invk a)) b)) (send (enc d s)))
+    ((send (enc (enc s (invk a)) b-0))))
+  (label 5)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (d d))))
+  (origs (s (1 0))))
+
+(comment "Nothing left to do")
+
+(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))))
+  (defrole resp
+    (vars (a b akey) (s skey) (d data))
+    (trace (recv (enc (enc s (invk a)) b)) (send (enc d s))))
+  (defrule role-uniq
+    (forall ((z strd) (s skey)) (implies (p "init" "s" z s) (uniq s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Blanchet's protocol using unnamed asymmetric keys"))
+
+(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))
+  (comment "Analyze from the initiator's perspective")
+  (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s))))
+  (label 6)
+  (realized)
+  (origs)
+  (comment "Not closed under rules"))
+
+(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 10)
+  (parent 6)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (d d))))
+  (origs (s (0 0))))
+
+(comment "Nothing left to do")
+
+(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))))
+  (defrole resp
+    (vars (a b akey) (s skey) (d data))
+    (trace (recv (enc (enc s (invk a)) b)) (send (enc d s))))
+  (defrule role-uniq
+    (forall ((z strd) (s skey)) (implies (p "init" "s" z s) (uniq s))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Blanchet's protocol using unnamed asymmetric keys"))
+
+(defskeleton blanchet
+  (vars (d data) (s skey) (a b akey))
+  (defstrand resp 2 (d d) (s s) (a a) (b b))
+  (non-orig (invk a) (invk b))
+  (comment "Analyze from the responder's perspective")
+  (traces ((recv (enc (enc s (invk a)) b)) (send (enc d s))))
+  (label 11)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton blanchet
+  (vars (d data) (s skey) (a b b-0 akey))
+  (defstrand resp 2 (d d) (s s) (a a) (b b))
+  (defstrand init 1 (s s) (a a) (b b-0))
+  (precedes ((1 0) (0 0)))
+  (non-orig (invk a) (invk b))
+  (uniq-orig s)
+  (rule role-uniq)
+  (operation encryption-test (added-strand init 1) (enc s (invk a))
+    (0 0))
+  (traces ((recv (enc (enc s (invk a)) b)) (send (enc d s)))
+    ((send (enc (enc s (invk a)) b-0))))
+  (label 12)
+  (parent 11)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (d d))))
+  (origs (s (1 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/rule-node.scm b/tst/rule-node.scm
--- a/tst/rule-node.scm
+++ b/tst/rule-node.scm
@@ -45,7 +45,7 @@
   (facts (neq s t)
 	 ;; (neq s s1)
 	 )
-  (facts (le 0 0 0 1))
+  (facts (le 0 (idx 0) 0 (idx 1)))
   )
 
 (defskeleton rule-order
@@ -53,7 +53,7 @@
   (defstrand init 2 (s s) (t t))
   (defstrand init 2 (s t) (t s))
   (precedes ((1 0) (0 1)))
-  (facts (le 1 0 0 1) (le 0 0 0 1)))
+  (facts (le 1 (idx 0) 0 (idx 1)) (le 0 (idx 0) 0 (idx 1))))
 
 (defprotocol rule-order-prec basic
   (defrole init
diff --git a/tst/rule-node.tst b/tst/rule-node.tst
--- a/tst/rule-node.tst
+++ b/tst/rule-node.tst
@@ -1,6 +1,6 @@
 (herald rule-node)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/rule-node.scm")
 
 (defprotocol rule-order basic
@@ -32,7 +32,7 @@
   (defstrand init 2 (s s) (t t))
   (defstrand init 2 (s t) (t s))
   (precedes ((1 0) (0 1)))
-  (facts (neq s t) (le 0 0 0 1))
+  (facts (neq s t) (le 0 (idx 0) 0 (idx 1)))
   (traces ((send (cat s t)) (recv (cat t s)))
     ((send (cat t s)) (recv (cat s t))))
   (label 0)
@@ -45,11 +45,10 @@
   (defstrand init 2 (s s) (t t))
   (defstrand init 2 (s t) (t s))
   (precedes ((1 0) (0 1)))
-  (facts (lt 0 0 0 1) (le 0 (idx 0) 0 (idx 1)) (le 1 (idx 0) 0 (idx 1))
-    (le 1 (idx 0) 1 (idx 1)) (lt 1 (idx 0) 1 (idx 1))
-    (lt 1 (idx 0) 0 (idx 1)) (lt 0 (idx 0) 0 (idx 1)) (neq s t)
-    (le 0 0 0 1))
-  (rule le-lt lt-le prec-lt)
+  (facts (le 1 (idx 0) 0 (idx 1)) (le 1 (idx 0) 1 (idx 1))
+    (lt 1 (idx 0) 1 (idx 1)) (lt 1 (idx 0) 0 (idx 1))
+    (lt 0 (idx 0) 0 (idx 1)) (neq s t) (le 0 (idx 0) 0 (idx 1)))
+  (rule lt-le prec-lt)
   (traces ((send (cat s t)) (recv (cat t s)))
     ((send (cat t s)) (recv (cat s t))))
   (label 1)
@@ -90,7 +89,7 @@
   (defstrand init 2 (s s) (t t))
   (defstrand init 2 (s t) (t s))
   (precedes ((1 0) (0 1)))
-  (facts (le 1 0 0 1) (le 0 0 0 1))
+  (facts (le 1 (idx 0) 0 (idx 1)) (le 0 (idx 0) 0 (idx 1)))
   (traces ((send (cat s t)) (recv (cat t s)))
     ((send (cat t s)) (recv (cat s t))))
   (label 2)
@@ -99,46 +98,32 @@
   (comment "Not closed under rules"))
 
 (defskeleton rule-order
-  (vars (s text))
-  (defstrand init 2 (s s) (t s))
-  (facts (le 0 (idx 0) 0 (idx 1)) (lt 0 (idx 0) 0 (idx 1)) (le 0 0 0 0))
-  (rule le-lt lt-le prec-lt)
-  (traces ((send (cat s s)) (recv (cat s s))))
-  (label 3)
-  (parent 2)
-  (realized)
-  (shape)
-  (maps)
-  (origs))
-
-(defskeleton rule-order
   (vars (s t text))
   (defstrand init 2 (s s) (t t))
   (defstrand init 2 (s t) (t s))
   (precedes ((1 0) (0 1)))
-  (facts (lt 0 0 0 1) (lt 1 0 0 1) (le 0 (idx 0) 0 (idx 1))
-    (le 1 (idx 0) 0 (idx 1)) (le 1 (idx 0) 1 (idx 1))
-    (lt 1 (idx 0) 1 (idx 1)) (lt 1 (idx 0) 0 (idx 1))
-    (lt 0 (idx 0) 0 (idx 1)) (le 1 0 0 1) (le 0 0 0 1))
-  (rule le-lt lt-le prec-lt)
+  (facts (le 1 (idx 0) 1 (idx 1)) (lt 1 (idx 0) 1 (idx 1))
+    (lt 1 (idx 0) 0 (idx 1)) (lt 0 (idx 0) 0 (idx 1))
+    (le 1 (idx 0) 0 (idx 1)) (le 0 (idx 0) 0 (idx 1)))
+  (rule lt-le prec-lt)
   (traces ((send (cat s t)) (recv (cat t s)))
     ((send (cat t s)) (recv (cat s t))))
-  (label 4)
+  (label 3)
   (parent 2)
-  (seen 3 5)
   (realized)
-  (origs)
-  (comment "2 in cohort - 0 not yet seen"))
+  (shape)
+  (maps ((0 1) ((s s) (t t))))
+  (origs))
 
 (defskeleton rule-order
   (vars (s text))
   (defstrand init 2 (s s) (t s))
-  (facts (lt 0 0 0 1) (le 0 (idx 0) 0 (idx 1)) (lt 0 (idx 0) 0 (idx 1))
-    (le 0 0 0 0))
-  (rule le-lt lt-le prec-lt)
+  (facts (le 0 (idx 0) 0 (idx 1)) (lt 0 (idx 0) 0 (idx 1)))
+  (operation collapsed 1 0)
+  (strand-map 0 0)
   (traces ((send (cat s s)) (recv (cat s s))))
-  (label 5)
-  (parent 2)
+  (label 4)
+  (parent 3)
   (realized)
   (shape)
   (maps)
@@ -164,7 +149,7 @@
   (vars (s t text))
   (defstrand init 2 (s s) (t t))
   (traces ((send (cat s t)) (recv (cat t s))))
-  (label 6)
+  (label 5)
   (realized)
   (origs)
   (comment "Not closed under rules"))
@@ -175,8 +160,8 @@
   (facts (tell-me 0 (idx 0) 0 (idx 1)))
   (rule prec-tell-me)
   (traces ((send (cat s t)) (recv (cat t s))))
-  (label 7)
-  (parent 6)
+  (label 6)
+  (parent 5)
   (realized)
   (shape)
   (maps ((0) ((s s) (t t))))
@@ -205,7 +190,7 @@
   (precedes ((1 0) (0 1)))
   (traces ((send (cat s t)) (recv (cat t s)))
     ((send (cat t s)) (recv (cat s t))))
-  (label 8)
+  (label 7)
   (realized)
   (origs)
   (comment "Not closed under rules"))
@@ -220,8 +205,8 @@
   (rule prec-tell-me)
   (traces ((send (cat s t)) (recv (cat t s)))
     ((send (cat t s)) (recv (cat s t))))
-  (label 9)
-  (parent 8)
+  (label 8)
+  (parent 7)
   (realized)
   (shape)
   (maps ((0 1) ((s s) (t t))))
@@ -232,9 +217,10 @@
   (defstrand init 2 (s s) (t s))
   (facts (tell-me 0 (idx 0) 0 (idx 1)))
   (operation collapsed 1 0)
+  (strand-map 0 0)
   (traces ((send (cat s s)) (recv (cat s s))))
-  (label 10)
-  (parent 9)
+  (label 9)
+  (parent 8)
   (realized)
   (shape)
   (maps)
@@ -263,7 +249,7 @@
   (precedes ((1 0) (0 1)))
   (traces ((send (cat s t)) (recv (cat t s)))
     ((send (cat s t)) (recv (cat t s))))
-  (label 11)
+  (label 10)
   (realized)
   (origs)
   (comment "Not closed under rules"))
@@ -278,8 +264,8 @@
   (rule prec-tell-me)
   (traces ((send (cat s t)) (recv (cat t s)))
     ((send (cat s t)) (recv (cat t s))))
-  (label 12)
-  (parent 11)
+  (label 11)
+  (parent 10)
   (realized)
   (shape)
   (maps ((0 1) ((s s) (t t))))
@@ -290,9 +276,10 @@
   (defstrand init 2 (s s) (t t))
   (facts (tell-me 0 (idx 0) 0 (idx 1)))
   (operation collapsed 1 0)
+  (strand-map 0 0)
   (traces ((send (cat s t)) (recv (cat t s))))
-  (label 13)
-  (parent 12)
+  (label 12)
+  (parent 11)
   (realized)
   (shape)
   (maps)
diff --git a/tst/rule-node_shapes.tst b/tst/rule-node_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/rule-node_shapes.tst
@@ -0,0 +1,299 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald rule-node)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/rule-node.scm")
+
+(defprotocol rule-order basic
+  (defrole init
+    (vars (s t text))
+    (trace (send (cat s t)) (recv (cat t s))))
+  (defrule le-lt
+    (forall ((z1 z2 strd) (i1 i2 indx))
+      (implies
+        (fact le z1 i1 z2 i2)
+        (or (and (= z1 z2) (= i1 i2)) (fact lt z1 i1 z2 i2)))))
+  (defrule lt-le
+    (forall ((z1 z2 strd) (i1 i2 indx))
+      (implies (fact lt z1 i1 z2 i2) (fact le z1 i1 z2 i2))))
+  (defrule prec-lt
+    (forall ((z1 z2 strd) (i1 i2 indx))
+      (implies (prec z1 i1 z2 i2) (fact lt z1 i1 z2 i2))))
+  (defrule neq-false
+    (forall ((s mesg)) (implies (fact neq s s) (false))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton rule-order
+  (vars (s t text))
+  (defstrand init 2 (s s) (t t))
+  (defstrand init 2 (s t) (t s))
+  (precedes ((1 0) (0 1)))
+  (facts (neq s t) (le 0 0 0 1))
+  (traces ((send (cat s t)) (recv (cat t s)))
+    ((send (cat t s)) (recv (cat s t))))
+  (label 0)
+  (realized)
+  (origs)
+  (comment "Not closed under rules"))
+
+(defskeleton rule-order
+  (vars (s t text))
+  (defstrand init 2 (s s) (t t))
+  (defstrand init 2 (s t) (t s))
+  (precedes ((1 0) (0 1)))
+  (facts (lt 0 0 0 1) (le 0 0 0 1) (le 1 0 0 1) (le 1 0 1 1)
+    (lt 1 0 1 1) (lt 1 0 0 1) (lt 0 0 0 1) (neq s t) (le 0 0 0 1))
+  (rule le-lt lt-le prec-lt)
+  (traces ((send (cat s t)) (recv (cat t s)))
+    ((send (cat t s)) (recv (cat s t))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((s s) (t t))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol rule-order basic
+  (defrole init
+    (vars (s t text))
+    (trace (send (cat s t)) (recv (cat t s))))
+  (defrule le-lt
+    (forall ((z1 z2 strd) (i1 i2 indx))
+      (implies
+        (fact le z1 i1 z2 i2)
+        (or (and (= z1 z2) (= i1 i2)) (fact lt z1 i1 z2 i2)))))
+  (defrule lt-le
+    (forall ((z1 z2 strd) (i1 i2 indx))
+      (implies (fact lt z1 i1 z2 i2) (fact le z1 i1 z2 i2))))
+  (defrule prec-lt
+    (forall ((z1 z2 strd) (i1 i2 indx))
+      (implies (prec z1 i1 z2 i2) (fact lt z1 i1 z2 i2))))
+  (defrule neq-false
+    (forall ((s mesg)) (implies (fact neq s s) (false))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton rule-order
+  (vars (s t text))
+  (defstrand init 2 (s s) (t t))
+  (defstrand init 2 (s t) (t s))
+  (precedes ((1 0) (0 1)))
+  (facts (le 1 0 0 1) (le 0 0 0 1))
+  (traces ((send (cat s t)) (recv (cat t s)))
+    ((send (cat t s)) (recv (cat s t))))
+  (label 2)
+  (realized)
+  (origs)
+  (comment "Not closed under rules"))
+
+(defskeleton rule-order
+  (vars (s text))
+  (defstrand init 2 (s s) (t s))
+  (facts (le 0 0 0 1) (lt 0 0 0 1) (le 0 0 0 0))
+  (rule le-lt lt-le prec-lt)
+  (traces ((send (cat s s)) (recv (cat s s))))
+  (label 3)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps)
+  (origs))
+
+(defskeleton rule-order
+  (vars (s t text))
+  (defstrand init 2 (s s) (t t))
+  (defstrand init 2 (s t) (t s))
+  (precedes ((1 0) (0 1)))
+  (facts (lt 0 0 0 1) (lt 1 0 0 1) (le 0 0 0 1) (le 1 0 0 1)
+    (le 1 0 1 1) (lt 1 0 1 1) (lt 1 0 0 1) (lt 0 0 0 1) (le 1 0 0 1)
+    (le 0 0 0 1))
+  (rule le-lt lt-le prec-lt)
+  (traces ((send (cat s t)) (recv (cat t s)))
+    ((send (cat t s)) (recv (cat s t))))
+  (label 4)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0 1) ((s s) (t t))))
+  (origs))
+
+(defskeleton rule-order
+  (vars (s text))
+  (defstrand init 2 (s s) (t s))
+  (facts (lt 0 0 0 1) (le 0 0 0 1) (lt 0 0 0 1) (le 0 0 0 0))
+  (rule le-lt lt-le prec-lt)
+  (traces ((send (cat s s)) (recv (cat s s))))
+  (label 5)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps)
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol rule-order-prec basic
+  (defrole init
+    (vars (s t text))
+    (trace (send (cat s t)) (recv (cat t s))))
+  (defrule prec-tell-me
+    (forall ((z1 z2 strd) (i1 i2 indx))
+      (implies (prec z1 i1 z2 i2) (fact tell-me z1 i1 z2 i2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton rule-order-prec
+  (vars (s t text))
+  (defstrand init 2 (s s) (t t))
+  (traces ((send (cat s t)) (recv (cat t s))))
+  (label 6)
+  (realized)
+  (origs)
+  (comment "Not closed under rules"))
+
+(defskeleton rule-order-prec
+  (vars (s t text))
+  (defstrand init 2 (s s) (t t))
+  (facts (tell-me 0 0 0 1))
+  (rule prec-tell-me)
+  (traces ((send (cat s t)) (recv (cat t s))))
+  (label 7)
+  (parent 6)
+  (realized)
+  (shape)
+  (maps ((0) ((s s) (t t))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol rule-order-prec basic
+  (defrole init
+    (vars (s t text))
+    (trace (send (cat s t)) (recv (cat t s))))
+  (defrule prec-tell-me
+    (forall ((z1 z2 strd) (i1 i2 indx))
+      (implies (prec z1 i1 z2 i2) (fact tell-me z1 i1 z2 i2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton rule-order-prec
+  (vars (s t text))
+  (defstrand init 2 (s s) (t t))
+  (defstrand init 2 (s t) (t s))
+  (precedes ((1 0) (0 1)))
+  (traces ((send (cat s t)) (recv (cat t s)))
+    ((send (cat t s)) (recv (cat s t))))
+  (label 8)
+  (realized)
+  (origs)
+  (comment "Not closed under rules"))
+
+(defskeleton rule-order-prec
+  (vars (s t text))
+  (defstrand init 2 (s s) (t t))
+  (defstrand init 2 (s t) (t s))
+  (precedes ((1 0) (0 1)))
+  (facts (tell-me 1 0 1 1) (tell-me 1 0 0 1) (tell-me 0 0 0 1))
+  (rule prec-tell-me)
+  (traces ((send (cat s t)) (recv (cat t s)))
+    ((send (cat t s)) (recv (cat s t))))
+  (label 9)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps ((0 1) ((s s) (t t))))
+  (origs))
+
+(defskeleton rule-order-prec
+  (vars (s text))
+  (defstrand init 2 (s s) (t s))
+  (facts (tell-me 0 0 0 1))
+  (operation collapsed 1 0)
+  (traces ((send (cat s s)) (recv (cat s s))))
+  (label 10)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps)
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol rule-order-prec basic
+  (defrole init
+    (vars (s t text))
+    (trace (send (cat s t)) (recv (cat t s))))
+  (defrule prec-tell-me
+    (forall ((z1 z2 strd) (i1 i2 indx))
+      (implies (prec z1 i1 z2 i2) (fact tell-me z1 i1 z2 i2))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton rule-order-prec
+  (vars (s t text))
+  (defstrand init 2 (s s) (t t))
+  (defstrand init 2 (s s) (t t))
+  (precedes ((1 0) (0 1)))
+  (traces ((send (cat s t)) (recv (cat t s)))
+    ((send (cat s t)) (recv (cat t s))))
+  (label 11)
+  (realized)
+  (origs)
+  (comment "Not closed under rules"))
+
+(defskeleton rule-order-prec
+  (vars (s t text))
+  (defstrand init 2 (s s) (t t))
+  (defstrand init 2 (s s) (t t))
+  (precedes ((1 0) (0 1)))
+  (facts (tell-me 1 0 1 1) (tell-me 1 0 0 1) (tell-me 0 0 0 1))
+  (rule prec-tell-me)
+  (traces ((send (cat s t)) (recv (cat t s)))
+    ((send (cat s t)) (recv (cat t s))))
+  (label 12)
+  (parent 11)
+  (realized)
+  (shape)
+  (maps ((0 1) ((s s) (t t))))
+  (origs))
+
+(defskeleton rule-order-prec
+  (vars (s t text))
+  (defstrand init 2 (s s) (t t))
+  (facts (tell-me 0 0 0 1))
+  (operation collapsed 1 0)
+  (traces ((send (cat s t)) (recv (cat t s))))
+  (label 13)
+  (parent 12)
+  (realized)
+  (shape)
+  (maps)
+  (origs))
+
+(comment "Nothing left to do")
diff --git a/tst/rule-order.tst b/tst/rule-order.tst
--- a/tst/rule-order.tst
+++ b/tst/rule-order.tst
@@ -1,6 +1,6 @@
 (herald rule-order)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/rule-order.scm")
 
 (defprotocol rule-order basic
@@ -47,6 +47,7 @@
   (label 2)
   (parent 0)
   (seen 1)
+  (seen-ops (1))
   (realized)
   (origs)
   (comment "1 in cohort - 0 not yet seen"))
diff --git a/tst/rule-order_shapes.tst b/tst/rule-order_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/rule-order_shapes.tst
@@ -0,0 +1,58 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald rule-order)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/rule-order.scm")
+
+(defprotocol rule-order basic
+  (defrole init (vars (s t text)) (trace (send (cat s t))))
+  (defrule ge
+    (forall ((x y text))
+      (implies (fact le x y) (or (= x y) (fact lt x y)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton rule-order
+  (vars (s t text))
+  (defstrand init 1 (s s) (t t))
+  (facts (le s t))
+  (traces ((send (cat s t))))
+  (label 0)
+  (realized)
+  (origs)
+  (comment "Not closed under rules"))
+
+(defskeleton rule-order
+  (vars (t text))
+  (defstrand init 1 (s t) (t t))
+  (facts (le t t))
+  (rule ge)
+  (traces ((send (cat t t))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((s t) (t t))))
+  (origs))
+
+(defskeleton rule-order
+  (vars (s t text))
+  (defstrand init 1 (s s) (t t))
+  (facts (lt s t) (le s t))
+  (rule ge)
+  (traces ((send (cat s t))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((s s) (t t))))
+  (origs))
+
+(comment "Nothing left to do")
diff --git a/tst/sa.scm b/tst/sa.scm
new file mode 100644
--- /dev/null
+++ b/tst/sa.scm
@@ -0,0 +1,226 @@
+(defprotocol subatomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (load ls old1) (stor lk (cat "st-k" d o k))
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch)
+    (critical-sections (1 4))
+    (facts (same-dev ls lk)))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "open" d o n k)) (load ls (cat "st" d any))
+      (load lk (cat "st-k" d o k)) (stor ls (cat "st" d o o)) (send n))
+    (critical-sections (1 3))
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (facts (same-dev ls lk)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n))
+    (gen-st (cat "st-k" d o k))
+    (critical-sections (1 3))
+    (facts (same-dev ls lk)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (load ls (cat "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    (uniq-orig n)
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (critical-sections (0 1))
+    (facts (same-dev ls lk)))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 (idx 2)) (p "dev-up" z2 (idx 2))
+          (p "dev-up" "k" z1 k) (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defrule same-dev-ls-lk
+    (forall ((ls lk lk-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
+        (= lk lk-0))))
+  (defrule same-dev-lk-ls
+    (forall ((lk ls ls-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
+        (= ls ls-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-dev-up-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-up" z (idx 3)) (p "dev-up" "lk" z lk)
+          (p "dev-up" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-open-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-open" z (idx 3)) (p "dev-open" "lk" z lk)
+          (p "dev-open" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-close-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-close" z (idx 3)) (p "dev-close" "lk" z lk)
+          (p "dev-close" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-pass-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-pass" z (idx 2)) (p "dev-pass" "lk" z lk)
+          (p "dev-pass" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 5)) (trans z (idx 4)))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 5)) (trans z (idx 2)))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 4)) (trans z (idx 1)))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd))
+      (implies (p "dev-open" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-open-at-1
+    (forall ((z strd))
+      (implies (p "dev-open" z (idx 4)) (trans z (idx 1)))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd))
+      (implies (p "dev-close" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd))
+      (implies (p "dev-close" z (idx 4)) (trans z (idx 2)))))
+  (defgenrule eff-dev-up-3
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z (idx 4)) (prec z (idx 3) z1 i))
+        (or (= z z1)
+          (and (p "dev-up" z (idx 5)) (prec z (idx 4) z1 i))))))
+  (defgenrule cau-dev-up-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-open-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-open" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-close-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-close" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-pass-1
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-pass" z (idx 2)) (prec z1 i z (idx 1)))
+        (or (= z z1) (prec z1 i z (idx 0))))))
+  (defgenrule gen-st-dev-open-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-open" z (idx 1)) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-open-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-open" z (idx 1)) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-close-0
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-close" z (idx 1)) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-pass" z (idx 1)) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-pass" z (idx 1)) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d)) (gen-st (cat "st" d o o))))))
+
+
+(defgoal subatomic-open-closed
+  (forall
+    ((k skey) (n text) (d o d-0 o-0 name) (start-ch chan) (lk ls locn)
+      (z z-0 strd))
+    (implies
+      (and (p "owner-power-dev" z 2) (p "dev-pass" z-0 4)
+        (p "owner-power-dev" "k" z k) (p "owner-power-dev" "d" z d)
+        (p "owner-power-dev" "o" z o)
+        (p "owner-power-dev" "start-ch" z start-ch)
+        (p "dev-pass" "k" z-0 k) (p "dev-pass" "n" z-0 n)
+        (p "dev-pass" "d" z-0 d-0) (p "dev-pass" "o" z-0 o-0)
+        (p "dev-pass" "lk" z-0 lk) (p "dev-pass" "ls" z-0 ls)
+        (uniq-at n z-0 3) (uniq-at k z 0) (conf start-ch)
+        (fact no-state-split))
+      (exists ((any old old1 mesg) (n-0 text) (z-1 z-2 z-3 z-4 strd))
+        (and (= d-0 d) (= o-0 o) (p "dev-open" z-1 4)
+          (p "owner-open" z-2 1) (p "user-pass" z-3 1)
+          (p "dev-up" z-4 6) (p "dev-pass" "d" z-0 d)
+          (p "dev-pass" "o" z-0 o) (p "dev-open" "any" z-1 any)
+          (p "dev-open" "k" z-1 k) (p "dev-open" "n" z-1 n-0)
+          (p "dev-open" "d" z-1 d) (p "dev-open" "o" z-1 o)
+          (p "dev-open" "lk" z-1 lk) (p "dev-open" "ls" z-1 ls)
+          (p "owner-open" "k" z-2 k) (p "owner-open" "n" z-2 n-0)
+          (p "owner-open" "d" z-2 d) (p "owner-open" "o" z-2 o)
+          (p "user-pass" "k" z-3 k) (p "dev-up" "old" z-4 old)
+          (p "dev-up" "old1" z-4 old1) (p "dev-up" "k" z-4 k)
+          (p "dev-up" "d" z-4 d) (p "dev-up" "o" z-4 o)
+          (p "dev-up" "start-ch" z-4 start-ch) (p "dev-up" "lk" z-4 lk)
+          (p "dev-up" "ls" z-4 ls) (prec z 0 z-4 0) (prec z-1 3 z-0 0)
+          (prec z-2 0 z-1 0) (prec z-3 0 z-0 2) (prec z-4 4 z-1 1)
+          (prec z-4 5 z 1) (gen-st (cat "st" d o o))
+          (gen-st (cat "st-k" d o k)) (leads-to z-1 3 z-0 1)
+          (leads-to z-4 3 z-0 0) (leads-to z-4 3 z-1 2) (auth start-ch)
+          (fact same-dev ls lk))))))
diff --git a/tst/sa.tst b/tst/sa.tst
new file mode 100644
--- /dev/null
+++ b/tst/sa.tst
@@ -0,0 +1,967 @@
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/sa.scm")
+
+(defprotocol subatomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (load ls old1) (stor lk (cat "st-k" d o k))
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch)
+    (critical-sections (1 4))
+    (facts (same-dev ls lk)))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "open" d o n k)) (load ls (cat "st" d any))
+      (load lk (cat "st-k" d o k)) (stor ls (cat "st" d o o)) (send n))
+    (critical-sections (1 3))
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (facts (same-dev ls lk)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n))
+    (gen-st (cat "st-k" d o k))
+    (critical-sections (1 3))
+    (facts (same-dev ls lk)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (load ls (cat "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    (uniq-orig n)
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (critical-sections (0 1))
+    (facts (same-dev ls lk)))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 (idx 2)) (p "dev-up" z2 (idx 2))
+          (p "dev-up" "k" z1 k) (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defrule same-dev-ls-lk
+    (forall ((ls lk lk-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
+        (= lk lk-0))))
+  (defrule same-dev-lk-ls
+    (forall ((lk ls ls-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
+        (= ls ls-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-dev-up-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-up" z (idx 3)) (p "dev-up" "ls" z ls)
+          (p "dev-up" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-open-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-open" z (idx 3)) (p "dev-open" "ls" z ls)
+          (p "dev-open" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-close-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-close" z (idx 3)) (p "dev-close" "ls" z ls)
+          (p "dev-close" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-pass-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-pass" z (idx 2)) (p "dev-pass" "ls" z ls)
+          (p "dev-pass" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 5)) (trans z (idx 4)))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 5)) (trans z (idx 2)))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 4)) (trans z (idx 1)))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd))
+      (implies (p "dev-open" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-open-at-1
+    (forall ((z strd))
+      (implies (p "dev-open" z (idx 4)) (trans z (idx 1)))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd))
+      (implies (p "dev-close" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd))
+      (implies (p "dev-close" z (idx 4)) (trans z (idx 2)))))
+  (defgenrule eff-dev-up-3
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-up" z (idx 4)) (prec z (idx 3) z1 i))
+        (or (= z z1)
+          (and (p "dev-up" z (idx 5)) (prec z (idx 4) z1 i))))))
+  (defgenrule cau-dev-up-2
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-up" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-open-2
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-open" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-close-2
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-close" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-pass-1
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-pass" z (idx 2)) (prec z1 i z (idx 1)))
+        (or (= z z1) (prec z1 i z (idx 0))))))
+  (defgenrule gen-st-dev-open-1
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-open" z (idx 1)) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-open-0
+    (forall ((z strd) (d o name))
+      (implies
+        (and (p "dev-open" z (idx 1)) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-close-0
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-close" z (idx 1)) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-1
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-pass" z (idx 1)) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-0
+    (forall ((z strd) (d o name))
+      (implies
+        (and (p "dev-pass" z (idx 1)) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-dev-up-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-up" z (idx 3)) (p "dev-up" "lk" z lk)
+          (p "dev-up" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-open-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-open" z (idx 3)) (p "dev-open" "lk" z lk)
+          (p "dev-open" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-close-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-close" z (idx 3)) (p "dev-close" "lk" z lk)
+          (p "dev-close" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-pass-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-pass" z (idx 2)) (p "dev-pass" "lk" z lk)
+          (p "dev-pass" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 5)) (trans z (idx 4)))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 5)) (trans z (idx 2)))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 4)) (trans z (idx 1)))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd))
+      (implies (p "dev-open" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-open-at-1
+    (forall ((z strd))
+      (implies (p "dev-open" z (idx 4)) (trans z (idx 1)))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd))
+      (implies (p "dev-close" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd))
+      (implies (p "dev-close" z (idx 4)) (trans z (idx 2)))))
+  (defgenrule eff-dev-up-3
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z (idx 4)) (prec z (idx 3) z1 i))
+        (or (= z z1)
+          (and (p "dev-up" z (idx 5)) (prec z (idx 4) z1 i))))))
+  (defgenrule cau-dev-up-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-open-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-open" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-close-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-close" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-pass-1
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-pass" z (idx 2)) (prec z1 i z (idx 1)))
+        (or (= z z1) (prec z1 i z (idx 0))))))
+  (defgenrule gen-st-dev-open-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-open" z (idx 1)) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-open-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-open" z (idx 1)) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-close-0
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-close" z (idx 1)) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-pass" z (idx 1)) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-pass" z (idx 1)) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d)) (gen-st (cat "st" d o o))))))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (n text) (d o d-0 o-0 name) (pt pt-0 pval)
+    (start-ch chan) (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d-0) (o o-0) (lk lk) (ls ls))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (uniq-orig k n)
+  (conf start-ch)
+  (facts (no-state-split))
+  (goals
+    (forall
+      ((k skey) (n text) (d o d-0 o-0 name) (start-ch chan) (lk ls locn)
+        (z z-0 strd))
+      (implies
+        (and (p "owner-power-dev" z 2) (p "dev-pass" z-0 4)
+          (p "owner-power-dev" "k" z k) (p "owner-power-dev" "d" z d)
+          (p "owner-power-dev" "o" z o)
+          (p "owner-power-dev" "start-ch" z start-ch)
+          (p "dev-pass" "k" z-0 k) (p "dev-pass" "n" z-0 n)
+          (p "dev-pass" "d" z-0 d-0) (p "dev-pass" "o" z-0 o-0)
+          (p "dev-pass" "lk" z-0 lk) (p "dev-pass" "ls" z-0 ls)
+          (uniq-at n z-0 3) (uniq-at k z 0) (conf start-ch)
+          (fact no-state-split))
+        (exists ((any old old1 mesg) (n-0 text) (z-1 z-2 z-3 z-4 strd))
+          (and (= d-0 d) (= o-0 o) (p "dev-open" z-1 4)
+            (p "owner-open" z-2 1) (p "user-pass" z-3 1)
+            (p "dev-up" z-4 6) (p "dev-pass" "d" z-0 d)
+            (p "dev-pass" "o" z-0 o) (p "dev-open" "any" z-1 any)
+            (p "dev-open" "k" z-1 k) (p "dev-open" "n" z-1 n-0)
+            (p "dev-open" "d" z-1 d) (p "dev-open" "o" z-1 o)
+            (p "dev-open" "lk" z-1 lk) (p "dev-open" "ls" z-1 ls)
+            (p "owner-open" "k" z-2 k) (p "owner-open" "n" z-2 n-0)
+            (p "owner-open" "d" z-2 d) (p "owner-open" "o" z-2 o)
+            (p "user-pass" "k" z-3 k) (p "dev-up" "old" z-4 old)
+            (p "dev-up" "old1" z-4 old1) (p "dev-up" "k" z-4 k)
+            (p "dev-up" "d" z-4 d) (p "dev-up" "o" z-4 o)
+            (p "dev-up" "start-ch" z-4 start-ch)
+            (p "dev-up" "lk" z-4 lk) (p "dev-up" "ls" z-4 ls)
+            (prec z 0 z-4 0) (prec z-1 3 z-0 0) (prec z-2 0 z-1 0)
+            (prec z-3 0 z-0 2) (prec z-4 4 z-1 1) (prec z-4 5 z 1)
+            (gen-st (cat "st" d o o)) (gen-st (cat "st-k" d o k))
+            (leads-to z-1 3 z-0 1) (leads-to z-4 3 z-0 0)
+            (leads-to z-4 3 z-1 2) (auth start-ch)
+            (fact same-dev ls lk))))))
+  (traces
+    ((load lk (cat pt "st-k" d-0 o-0 k))
+      (load ls (cat pt-0 "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
+      (send (enc "you may pass" n k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))))
+  (label 0)
+  (unrealized (0 0) (0 2) (1 1))
+  (preskeleton)
+  (origs (n (0 3)) (k (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (n text) (d o d-0 o-0 name) (pt pt-0 pval)
+    (start-ch chan) (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d-0) (o o-0) (lk lk) (ls ls))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (precedes ((1 0) (0 0)))
+  (uniq-orig k n)
+  (conf start-ch)
+  (facts (no-state-split))
+  (traces
+    ((load lk (cat pt "st-k" d-0 o-0 k))
+      (load ls (cat pt-0 "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
+      (send (enc "you may pass" n k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))))
+  (label 1)
+  (parent 0)
+  (unrealized (0 0) (0 2) (1 1))
+  (origs (n (0 3)) (k (1 0)))
+  (comment "Not closed under rules"))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (n text) (d o d-0 o-0 name) (pt pt-0 pval)
+    (start-ch chan) (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d-0) (o o-0) (lk lk) (ls ls))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (precedes ((1 0) (0 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d-0 o-0 o-0) (cat "st-k" d-0 o-0 k))
+  (conf start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (rule fact-dev-pass-same-dev0 gen-st-dev-pass-0 gen-st-dev-pass-1)
+  (traces
+    ((load lk (cat pt "st-k" d-0 o-0 k))
+      (load ls (cat pt-0 "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
+      (send (enc "you may pass" n k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))))
+  (label 2)
+  (parent 1)
+  (unrealized (0 0) (0 1) (0 2) (1 1))
+  (origs (n (0 3)) (k (1 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 mesg) (k skey) (n text) (d o d-0 o-0 d-1 o-1 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch start-ch-0 chan)
+    (lk ls lk-0 ls-0 locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d-0) (o o-0) (lk lk) (ls ls))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d-1) (o o-1)
+    (start-ch start-ch-0) (lk lk-0) (ls ls-0))
+  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 5) (1 1)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d-0 o-0 o-0) (cat "st-k" d-0 o-0 k))
+  (conf start-ch)
+  (auth start-ch-0)
+  (facts (same-dev ls-0 lk-0) (same-dev ls lk) (no-state-split))
+  (rule fact-dev-pass-same-dev0 fact-dev-up-same-dev0 trRl_dev-up-at-1
+    trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (added-strand dev-up 6) (enc "up" k) (1 1))
+  (strand-map 0 1)
+  (traces
+    ((load lk (cat pt "st-k" d-0 o-0 k))
+      (load ls (cat pt-0 "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
+      (send (enc "you may pass" n k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv start-ch-0 (cat "power-up" d-1 o-1 k))
+      (load lk-0 (cat pt-1 old)) (load ls-0 (cat pt-2 old1))
+      (stor lk-0 (cat pt-3 "st-k" d-1 o-1 k))
+      (stor ls-0 (cat pt-4 "st" d-1 o-1)) (send (enc "up" k))))
+  (label 3)
+  (parent 2)
+  (unrealized (0 0) (0 1) (0 2) (2 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (n text) (d o d-0 o-0 name) (pt pt-0 pval)
+    (start-ch chan) (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d-0) (o o-0) (lk lk) (ls ls))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (deflistener k)
+  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (1 1)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d-0 o-0 o-0) (cat "st-k" d-0 o-0 k))
+  (conf start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (rule fact-dev-pass-same-dev0)
+  (operation encryption-test (added-listener k) (enc "up" k) (1 1))
+  (strand-map 0 1)
+  (traces
+    ((load lk (cat pt "st-k" d-0 o-0 k))
+      (load ls (cat pt-0 "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
+      (send (enc "you may pass" n k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv k) (send k)))
+  (label 4)
+  (parent 2)
+  (seen 6)
+  (seen-ops
+    (6
+      (operation nonce-test (added-strand dev-up 4) k (2 0)
+        (ch-msg start-ch (cat "power-up" d-0 o-0 k)))
+      (strand-map 0 1 2)))
+  (unrealized (0 0) (0 1) (0 2) (2 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 mesg) (k skey) (n text) (d o d-0 o-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan)
+    (lk ls lk-0 ls-0 locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d-0) (o o-0) (lk lk) (ls ls))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk-0) (ls ls-0))
+  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 5) (1 1)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d-0 o-0 o-0) (cat "st-k" d-0 o-0 k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls-0 lk-0) (same-dev ls lk) (no-state-split))
+  (rule fact-dev-pass-same-dev0 fact-dev-up-same-dev0 trRl_dev-up-at-1
+    trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation channel-test (displaced 3 1 owner-power-dev 1)
+    (ch-msg start-ch-0 (cat "power-up" d-1 o-1 k)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((load lk (cat pt "st-k" d-0 o-0 k))
+      (load ls (cat pt-0 "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
+      (send (enc "you may pass" n k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk-0 (cat pt-1 old))
+      (load ls-0 (cat pt-2 old1)) (stor lk-0 (cat pt-3 "st-k" d o k))
+      (stor ls-0 (cat pt-4 "st" d o)) (send (enc "up" k))))
+  (label 5)
+  (parent 3)
+  (seen 7 7 7 7 7 7 7)
+  (seen-ops
+    (7
+      (operation channel-test (displaced 3 2 dev-up 4)
+        (ch-msg lk-0 (cat pt-4 "st-k" d-0 o-0 k)) (0 0))
+      (strand-map 0 1 2))
+    (7
+      (operation channel-test (displaced 3 2 dev-up 4)
+        (ch-msg lk-0 (cat pt-4 "st-k" d-0 o-0 k)) (0 0))
+      (strand-map 0 1 2))
+    (7
+      (operation channel-test (displaced 3 2 dev-up 4)
+        (ch-msg lk-0 (cat pt-4 "st-k" d-0 o-0 k)) (0 0))
+      (strand-map 0 1 2))
+    (7
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d o k)) (0 0)) (strand-map 0 1 2))
+    (7
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d o k)) (0 0)) (strand-map 0 1 2))
+    (7
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d o k)) (0 0)) (strand-map 0 1 2))
+    (7
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d o k)) (0 0)) (strand-map 0 1 2)))
+  (unrealized (0 0) (0 1) (0 2))
+  (comment "8 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 mesg) (k skey) (n text) (d o d-0 o-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan)
+    (lk ls lk-0 ls-0 locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand owner-power-dev 2 (k k) (d d-0) (o o-0)
+    (start-ch start-ch))
+  (deflistener k)
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d-0) (o o-0)
+    (start-ch start-ch) (lk lk-0) (ls ls-0))
+  (precedes ((1 0) (0 0)) ((1 0) (3 0)) ((2 1) (1 1)) ((3 4) (2 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls-0 lk-0) (same-dev ls lk) (no-state-split))
+  (rule eff-dev-up-3 fact-dev-pass-same-dev0 fact-dev-up-same-dev0
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation nonce-test (added-strand dev-up 4) k (2 0)
+    (ch-msg start-ch (cat "power-up" d-0 o-0 k)))
+  (strand-map 0 1 2)
+  (traces
+    ((load lk (cat pt "st-k" d o k)) (load ls (cat pt-0 "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((send start-ch (cat "power-up" d-0 o-0 k)) (recv (enc "up" k)))
+    ((recv k) (send k))
+    ((recv start-ch (cat "power-up" d-0 o-0 k))
+      (load lk-0 (cat pt-1 old)) (load ls-0 (cat pt-2 old1))
+      (stor lk-0 (cat pt-3 "st-k" d-0 o-0 k))
+      (stor ls-0 (cat pt-4 "st" d-0 o-0))))
+  (label 6)
+  (parent 4)
+  (unrealized (0 0) (0 1) (0 2) (2 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 mesg) (k skey) (n text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (start-ch chan) (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (precedes ((1 0) (2 0)) ((2 4) (0 0)) ((2 5) (1 1)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (0 0)))
+  (rule cau-dev-pass-1 eff-dev-up-3 fact-dev-pass-same-dev0
+    fact-dev-up-same-dev0 same-dev-lk-ls trRl_dev-up-at-1
+    trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation channel-test (displaced 3 2 dev-up 4)
+    (ch-msg lk-0 (cat pt-4 "st-k" d-0 o-0 k)) (0 0))
+  (strand-map 0 1 2)
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)) (send (enc "up" k))))
+  (label 7)
+  (parent 5)
+  (seen 8 8 8 8)
+  (seen-ops
+    (8
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (0 1)) (strand-map 0 1 2))
+    (8
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (0 1)) (strand-map 0 1 2))
+    (8
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (0 1)) (strand-map 0 1 2))
+    (8
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (0 1)) (strand-map 0 1 2)))
+  (unrealized (0 1) (0 2))
+  (comment "5 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k k-0 skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval) (start-ch chan)
+    (ls lk locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k-0) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (precedes ((1 0) (2 0)) ((2 4) (3 1)) ((2 5) (1 1)) ((3 3) (0 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (0 0)) ((3 3) (0 1)))
+  (rule cau-dev-open-2 cau-dev-pass-1 fact-dev-open-same-dev0
+    fact-dev-pass-same-dev0 gen-st-dev-open-1 invShearsRule
+    same-dev-ls-lk trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation channel-test (added-strand dev-open 4)
+    (ch-msg ls (cat pt "st" d o o)) (0 1))
+  (strand-map 0 1 2)
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)) (send (enc "up" k)))
+    ((recv (enc "open" d o n-0 k-0)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-5 "st-k" d o k-0))
+      (stor ls (cat pt "st" d o o))))
+  (label 8)
+  (parent 7)
+  (seen 9 9)
+  (seen-ops
+    (9
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d o k)) (3 2)) (strand-map 0 1 2 3))
+    (9
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d o k)) (3 2))
+      (strand-map 0 1 2 3)))
+  (unrealized (0 2) (3 2))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan) (ls lk locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (precedes ((1 0) (2 0)) ((2 4) (3 1)) ((2 5) (1 1)) ((3 3) (0 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (0 0)) ((2 3) (3 2)) ((3 3) (0 1)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation channel-test (displaced 4 2 dev-up 4)
+    (ch-msg lk (cat pt-5 "st-k" d o k-0)) (3 2))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)) (send (enc "up" k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o))))
+  (label 9)
+  (parent 8)
+  (unrealized (0 2) (3 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan) (ls lk locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 1 (k k) (n n-0) (d d) (o o))
+  (precedes ((1 0) (2 0)) ((2 4) (3 1)) ((2 5) (1 1)) ((3 3) (0 0))
+    ((4 0) (3 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (0 0)) ((2 3) (3 2)) ((3 3) (0 1)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (added-strand owner-open 1)
+    (enc "open" d o n-0 k) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)) (send (enc "up" k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((send (enc "open" d o n-0 k))))
+  (label 10)
+  (parent 9)
+  (unrealized (0 2))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan) (ls lk locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (deflistener k)
+  (precedes ((1 0) (2 0)) ((1 0) (4 0)) ((2 4) (3 1)) ((2 5) (1 1))
+    ((3 3) (0 0)) ((4 1) (3 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (0 0)) ((2 3) (3 2)) ((3 3) (0 1)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (added-listener k) (enc "open" d o n-0 k)
+    (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)) (send (enc "up" k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv k) (send k)))
+  (label 11)
+  (parent 9)
+  (seen 14 14 14)
+  (seen-ops
+    (14
+      (operation nonce-test (displaced 5 2 dev-up 4) k (4 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4))
+    (14
+      (operation nonce-test (added-strand dev-up 4) k (4 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4))
+    (14
+      (operation nonce-test (added-strand dev-up 4) k (4 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4)))
+  (unrealized (4 0))
+  (comment "4 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan) (ls lk locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 1 (k k) (n n-0) (d d) (o o))
+  (defstrand user-pass 1 (k k))
+  (precedes ((1 0) (2 0)) ((2 4) (3 1)) ((2 5) (1 1)) ((3 3) (0 0))
+    ((4 0) (3 0)) ((5 0) (0 2)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (0 0)) ((2 3) (3 2)) ((3 3) (0 1)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (added-strand user-pass 1)
+    (enc "may I pass" k) (0 2))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)) (send (enc "up" k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((send (enc "open" d o n-0 k))) ((send (enc "may I pass" k))))
+  (label 12)
+  (parent 10)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps
+    ((0 1)
+      ((k k) (n n) (d d) (o o) (d-0 d) (o-0 o) (start-ch start-ch)
+        (lk lk) (ls ls))))
+  (origs (pt-2 (2 3)) (pt (3 3)) (pt-3 (2 4)) (n (0 3)) (k (1 0))))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan) (ls lk locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 1 (k k) (n n-0) (d d) (o o))
+  (deflistener k)
+  (precedes ((1 0) (2 0)) ((1 0) (5 0)) ((2 4) (3 1)) ((2 5) (1 1))
+    ((3 3) (0 0)) ((4 0) (3 0)) ((5 1) (0 2)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (0 0)) ((2 3) (3 2)) ((3 3) (0 1)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (added-listener k) (enc "may I pass" k)
+    (0 2))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)) (send (enc "up" k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((send (enc "open" d o n-0 k))) ((recv k) (send k)))
+  (label 13)
+  (parent 10)
+  (seen 15)
+  (seen-ops
+    (15
+      (operation nonce-test (added-strand dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5)))
+  (unrealized (5 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan) (ls lk locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (deflistener k)
+  (precedes ((1 0) (2 0)) ((2 4) (4 0)) ((2 5) (1 1)) ((3 3) (0 0))
+    ((4 1) (3 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (0 0)) ((2 3) (3 2)) ((3 3) (0 1)))
+  (rule eff-dev-up-3 fact-dev-pass-same-dev0 trRl_dev-open-at-1
+    trRl_dev-open-at-3 trRl_dev-up-at-1 trRl_dev-up-at-2
+    trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation nonce-test (displaced 5 2 dev-up 4) k (4 0)
+    (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)) (send (enc "up" k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv k) (send k)))
+  (label 14)
+  (parent 11)
+  (unrealized (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan) (ls lk locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 1 (k k) (n n-0) (d d) (o o))
+  (deflistener k)
+  (precedes ((1 0) (2 0)) ((2 4) (3 1)) ((2 4) (5 0)) ((2 5) (1 1))
+    ((3 3) (0 0)) ((4 0) (3 0)) ((5 1) (0 2)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (0 0)) ((2 3) (3 2)) ((3 3) (0 1)))
+  (rule eff-dev-up-3 fact-dev-pass-same-dev0 trRl_dev-open-at-1
+    trRl_dev-open-at-3 trRl_dev-up-at-1 trRl_dev-up-at-2
+    trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation nonce-test (displaced 6 2 dev-up 4) k (5 0)
+    (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)) (send (enc "up" k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((send (enc "open" d o n-0 k))) ((recv k) (send k)))
+  (label 15)
+  (parent 13)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
diff --git a/tst/sigenc.tst b/tst/sigenc.tst
--- a/tst/sigenc.tst
+++ b/tst/sigenc.tst
@@ -1,7 +1,7 @@
 (herald "Signed Encrypted Message Example"
   (comment "Shows examples of key usage of asymmetric keys"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/sigenc.scm")
 
 (defprotocol mult-keys-sig-enc basic
@@ -45,6 +45,7 @@
   (uniq-orig n1)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+  (strand-map 0)
   (traces
     ((send (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
       (recv (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
@@ -66,6 +67,7 @@
   (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
     (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a))
     (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+  (strand-map 0 1)
   (traces
     ((send (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
       (recv (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
@@ -122,6 +124,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand init 1)
     (enc n1 a (privk "sig" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
       (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
@@ -141,6 +144,7 @@
   (uniq-orig n2)
   (operation encryption-test (displaced 1 2 init 3)
     (enc n2 (privk "sig" a)) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
       (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
@@ -165,6 +169,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand init 3)
     (enc n2 (privk "sig" a)) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
       (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
@@ -223,6 +228,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand init 3) n2 (0 2)
     (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+  (strand-map 0)
   (traces
     ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
       (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
@@ -280,6 +286,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand init 1)
     (enc n1 a (privk "sig" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
       (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
@@ -299,6 +306,7 @@
   (uniq-orig n2)
   (operation encryption-test (displaced 1 2 init 3)
     (enc n2 (privk "sig" a)) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
       (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
@@ -321,6 +329,7 @@
   (uniq-orig n2)
   (operation encryption-test (added-strand init 3)
     (enc n2 (privk "sig" a)) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
       (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
@@ -343,6 +352,7 @@
   (uniq-orig n2)
   (operation nonce-test (contracted (b-0 b)) n2 (1 1)
     (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+  (strand-map 0 1)
   (traces
     ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
       (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
@@ -367,6 +377,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand init 3) n2 (1 1)
     (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+  (strand-map 0 1)
   (traces
     ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
       (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
@@ -380,6 +391,8 @@
   (label 14)
   (parent 11)
   (seen 15)
+  (seen-ops
+    (15 (operation generalization deleted (1 1)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -393,6 +406,7 @@
   (uniq-orig n2)
   (operation nonce-test (contracted (b-1 b) (n1-0 n1)) n2 (2 1)
     (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
       (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
@@ -418,6 +432,7 @@
   (uniq-orig n2)
   (operation nonce-test (displaced 1 3 init 3) n2 (2 1)
     (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+  (strand-map 0 2 1)
   (traces
     ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
       (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
@@ -431,6 +446,8 @@
   (label 16)
   (parent 12)
   (seen 13)
+  (seen-ops
+    (13 (operation generalization deleted (1 0)) (strand-map 0 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -445,6 +462,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand init 3) n2 (2 1)
     (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
       (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
@@ -459,6 +477,8 @@
   (label 17)
   (parent 12)
   (seen 15)
+  (seen-ops
+    (15 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/sigenc_shapes.tst b/tst/sigenc_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/sigenc_shapes.tst
@@ -0,0 +1,287 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Signed Encrypted Message Example"
+  (comment "Shows examples of key usage of asymmetric keys"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/sigenc.scm")
+
+(defprotocol mult-keys-sig-enc basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (recv (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (send (enc (enc n2 (privk "sig" a)) (pubk "enc" b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (recv (enc (enc n2 (privk "sig" a)) (pubk "enc" b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton mult-keys-sig-enc
+  (vars (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (non-orig (privk "enc" a) (privk "enc" b) (privk "sig" a))
+  (uniq-orig n1)
+  (traces
+    ((send (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (recv (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (send (enc (enc n2 (privk "sig" a)) (pubk "enc" b)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n1 (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton mult-keys-sig-enc
+  (vars (n1 n2 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (defstrand resp 2 (n2 n2) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk "enc" a) (privk "enc" b) (privk "sig" a))
+  (uniq-orig n1)
+  (operation nonce-test (contracted (n2-0 n2)) n1 (0 1)
+    (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a))
+    (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+  (traces
+    ((send (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (recv (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (send (enc (enc n2 (privk "sig" a)) (pubk "enc" b))))
+    ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n2))))
+  (origs (n1 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol mult-keys-sig-enc basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (recv (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (send (enc (enc n2 (privk "sig" a)) (pubk "enc" b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (recv (enc (enc n2 (privk "sig" a)) (pubk "enc" b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton mult-keys-sig-enc
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (non-orig (privk "sig" a))
+  (uniq-orig n2)
+  (traces
+    ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (recv (enc (enc n2 (privk "sig" a)) (pubk "enc" b)))))
+  (label 3)
+  (unrealized (0 0) (0 2))
+  (origs (n2 (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton mult-keys-sig-enc
+  (vars (n2 n1 text) (a b b-0 name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b-0))
+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
+  (non-orig (privk "sig" a))
+  (uniq-orig n2)
+  (operation encryption-test (displaced 1 2 init 3)
+    (enc n2 (privk "sig" a)) (0 2))
+  (traces
+    ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (recv (enc (enc n2 (privk "sig" a)) (pubk "enc" b))))
+    ((send (enc (enc n1 a (privk "sig" a)) (pubk "enc" b-0)))
+      (recv (enc (enc n1 n2 (privk "sig" b-0)) (pubk "enc" a)))
+      (send (enc (enc n2 (privk "sig" a)) (pubk "enc" b-0)))))
+  (label 5)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 1))))
+
+(defskeleton mult-keys-sig-enc
+  (vars (n2 n1 n1-0 text) (a b b-0 b-1 name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 1 (n1 n1) (a a) (b b-0))
+  (defstrand init 3 (n1 n1-0) (n2 n2) (a a) (b b-1))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((2 2) (0 2)))
+  (non-orig (privk "sig" a))
+  (uniq-orig n2)
+  (operation encryption-test (added-strand init 3)
+    (enc n2 (privk "sig" a)) (0 2))
+  (traces
+    ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (recv (enc (enc n2 (privk "sig" a)) (pubk "enc" b))))
+    ((send (enc (enc n1 a (privk "sig" a)) (pubk "enc" b-0))))
+    ((send (enc (enc n1-0 a (privk "sig" a)) (pubk "enc" b-1)))
+      (recv (enc (enc n1-0 n2 (privk "sig" b-1)) (pubk "enc" a)))
+      (send (enc (enc n2 (privk "sig" a)) (pubk "enc" b-1)))))
+  (label 6)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol mult-keys-sig-enc basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (recv (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (send (enc (enc n2 (privk "sig" a)) (pubk "enc" b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (recv (enc (enc n2 (privk "sig" a)) (pubk "enc" b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton mult-keys-sig-enc
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (non-orig (privk "enc" a))
+  (uniq-orig n2)
+  (traces
+    ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (recv (enc (enc n2 (privk "sig" a)) (pubk "enc" b)))))
+  (label 7)
+  (unrealized (0 2))
+  (origs (n2 (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton mult-keys-sig-enc
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))
+  (non-orig (privk "enc" a))
+  (uniq-orig n2)
+  (operation nonce-test (added-strand init 3) n2 (0 2)
+    (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+  (traces
+    ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (recv (enc (enc n2 (privk "sig" a)) (pubk "enc" b))))
+    ((send (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (recv (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (send (enc (enc n2 (privk "sig" a)) (pubk "enc" b)))))
+  (label 8)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol mult-keys-sig-enc basic
+  (defrole init
+    (vars (a b name) (n1 n2 text))
+    (trace (send (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (recv (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (send (enc (enc n2 (privk "sig" a)) (pubk "enc" b)))))
+  (defrole resp
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (recv (enc (enc n2 (privk "sig" a)) (pubk "enc" b)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton mult-keys-sig-enc
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (non-orig (privk "enc" a) (privk "sig" a))
+  (uniq-orig n2)
+  (traces
+    ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (recv (enc (enc n2 (privk "sig" a)) (pubk "enc" b)))))
+  (label 9)
+  (unrealized (0 0) (0 2))
+  (origs (n2 (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton mult-keys-sig-enc
+  (vars (n2 n1 text) (a b name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
+  (non-orig (privk "enc" a) (privk "sig" a))
+  (uniq-orig n2)
+  (operation nonce-test (contracted (b-0 b)) n2 (1 1)
+    (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+  (traces
+    ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (recv (enc (enc n2 (privk "sig" a)) (pubk "enc" b))))
+    ((send (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (recv (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (send (enc (enc n2 (privk "sig" a)) (pubk "enc" b)))))
+  (label 13)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 1))))
+
+(defskeleton mult-keys-sig-enc
+  (vars (n2 n1 text) (a b b-0 name))
+  (defstrand resp 3 (n2 n2) (n1 n1) (b b) (a a))
+  (defstrand init 1 (n1 n1) (a a) (b b-0))
+  (defstrand init 3 (n1 n1) (n2 n2) (a a) (b b))
+  (precedes ((0 1) (2 1)) ((1 0) (0 0)) ((2 2) (0 2)))
+  (non-orig (privk "enc" a) (privk "sig" a))
+  (uniq-orig n2)
+  (operation nonce-test (contracted (b-1 b) (n1-0 n1)) n2 (2 1)
+    (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+  (traces
+    ((recv (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (send (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (recv (enc (enc n2 (privk "sig" a)) (pubk "enc" b))))
+    ((send (enc (enc n1 a (privk "sig" a)) (pubk "enc" b-0))))
+    ((send (enc (enc n1 a (privk "sig" a)) (pubk "enc" b)))
+      (recv (enc (enc n1 n2 (privk "sig" b)) (pubk "enc" a)))
+      (send (enc (enc n2 (privk "sig" a)) (pubk "enc" b)))))
+  (label 15)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n2 n2) (n1 n1))))
+  (origs (n2 (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/sorted_epmo_acctnum.tst b/tst/sorted_epmo_acctnum.tst
--- a/tst/sorted_epmo_acctnum.tst
+++ b/tst/sorted_epmo_acctnum.tst
@@ -4,7 +4,7 @@
     "This version uses sorts to avoid confusion"
     "between a nonce and other data"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/sorted_epmo_acctnum.scm")
 
 (defprotocol sorted_epmo_acctnum basic
@@ -117,6 +117,7 @@
   (uniq-orig nm nc nb)
   (operation encryption-test (added-strand bank 2)
     (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b)) (0 2))
+  (strand-map 0)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -147,6 +148,7 @@
   (uniq-orig nm nc nb)
   (operation nonce-test (added-strand customer 3) nm (1 0)
     (enc nc nm m price (pubk c)))
+  (strand-map 0 1)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -181,6 +183,7 @@
   (operation nonce-test (contracted (b-0 b) (acctnum-0 acctnum)) nm
     (1 0) (enc nc nm m price (pubk c))
     (enc c nc nm acctnum price (pubk b)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -220,6 +223,7 @@
   (operation nonce-test (added-strand bank 2) nm (1 0)
     (enc nc nm m price (pubk c))
     (enc c nc nm acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -257,6 +261,7 @@
   (uniq-orig nm nc nb)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -293,6 +298,7 @@
   (uniq-orig nm nc nb nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -333,6 +339,7 @@
   (uniq-orig nm nc nb)
   (operation nonce-test (displaced 4 2 customer 3) nm (3 0)
     (enc nc nm m price (pubk c)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -371,6 +378,7 @@
   (uniq-orig nm nc nb)
   (operation nonce-test (displaced 2 3 customer 5) nb (0 2)
     (enc "hash" c nc nb nm price (pubk hash)) (enc nc nb (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -418,6 +426,7 @@
   (uniq-orig nm nc nb nm-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm-0 m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -457,6 +466,7 @@
   (operation nonce-test (contracted (b-0 b) (acctnum-0 acctnum)) nm
     (1 0) (enc "hash" c nc nb-0 nm price (pubk hash-0))
     (enc nc nm m price (pubk c)) (enc c nc nm acctnum price (pubk b)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -501,6 +511,7 @@
     (enc "hash" c nc nb-0 nm price (pubk hash-0))
     (enc nc nm m price (pubk c))
     (enc c nc nm acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -548,6 +559,7 @@
     (enc "hash" c nc nb-0 nm price (pubk hash-0))
     (enc nc nm m price (pubk c))
     (enc c nc nm acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -575,6 +587,10 @@
   (label 12)
   (parent 7)
   (seen 7)
+  (seen-ops
+    (7
+      (operation nonce-test (displaced 5 2 customer 3) nm (4 0)
+        (enc nc nm m price (pubk c))) (strand-map 0 1 2 3 3)))
   (unrealized (0 0) (0 2) (1 0) (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -595,6 +611,7 @@
   (uniq-orig nm nc nb nm-0)
   (operation nonce-test (displaced 2 4 customer 5) nb (0 2)
     (enc "hash" c nc nb nm price (pubk hash)) (enc nc nb (pubk c)))
+  (strand-map 0 1 3 2)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -620,6 +637,8 @@
   (label 13)
   (parent 9)
   (seen 8)
+  (seen-ops
+    (8 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -640,6 +659,7 @@
   (uniq-orig nm nc nb)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -683,6 +703,7 @@
   (uniq-orig nm nc nb nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -728,6 +749,7 @@
     (1 0) (enc "hash" c nc nb-0 nb-0 price (pubk hash-0))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -775,6 +797,7 @@
     (enc "hash" c nc nb-0 nb-0 price (pubk hash-0))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -824,6 +847,7 @@
     (enc "hash" c nc nb-0 nb-0 price (pubk hash-0))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 3 2)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -873,6 +897,7 @@
   (uniq-orig nm nc nb)
   (operation nonce-test (displaced 2 4 customer 5) nb (0 2)
     (enc "hash" c nc nb nm price (pubk hash)) (enc nc nb (pubk c)))
+  (strand-map 0 1 3 2)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -901,6 +926,8 @@
   (label 19)
   (parent 14)
   (seen 8)
+  (seen-ops
+    (8 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -923,6 +950,7 @@
   (uniq-orig nm nc nb nm-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm-0 m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -966,6 +994,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1009,6 +1038,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1056,6 +1086,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (displaced 5 2 customer 3) nb-0 (4 0)
     (enc nc nb-0 m price (pubk c)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1083,6 +1114,14 @@
   (label 23)
   (parent 17)
   (seen 11)
+  (seen-ops
+    (11
+      (operation nonce-test (displaced 5 4 bank 2) nb-1 (1 0)
+        (enc "hash" c nc nb-1 nb-1 price (pubk hash-0))
+        (enc "hash" c nc nb-0 nb-1 price (pubk hash-1))
+        (enc nc nb-1 (pubk c)) (enc nc nb-1 m price (pubk c))
+        (enc c nc nb-1 acctnum-0 price (pubk b-0)))
+      (strand-map 0 1 2 3 3)))
   (unrealized (0 0) (0 2) (1 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1105,6 +1144,7 @@
   (operation encryption-test (displaced 4 2 bank 2)
     (enc (enc "hash" c nc nb-0 nb-0 price (pubk hash-0)) (privk b-0))
     (3 3))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1159,6 +1199,7 @@
   (operation encryption-test (added-strand bank 2)
     (enc (enc "hash" c nc nb-0 nb-0 price (pubk hash-0)) (privk b-0))
     (3 3))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1215,6 +1256,7 @@
   (uniq-orig nm nc nb nm-0)
   (operation nonce-test (displaced 2 5 customer 5) nb (0 2)
     (enc "hash" c nc nb nm price (pubk hash)) (enc nc nb (pubk c)))
+  (strand-map 0 1 4 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nm m price (pubk c)))
@@ -1245,6 +1287,8 @@
   (label 26)
   (parent 20)
   (seen 13)
+  (seen-ops
+    (13 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1265,6 +1309,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (displaced 2 4 customer 5) nb (0 2)
     (enc "hash" c nc nb nb-0 price (pubk hash)) (enc nc nb (pubk c)))
+  (strand-map 0 1 3 2)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1293,6 +1338,8 @@
   (label 27)
   (parent 21)
   (seen 8)
+  (seen-ops
+    (8 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1315,6 +1362,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1360,6 +1408,7 @@
     (1 0) (enc "hash" c nc nb-0 nb-0 price (pubk hash-0))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc goods-0 (pubk m)) (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1416,6 +1465,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1477,6 +1527,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1532,6 +1583,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (displaced 5 3 customer 3) nb-0 (4 0)
     (enc nc nb-0 m price (pubk c)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1588,6 +1640,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (displaced 2 5 customer 5) nb (0 2)
     (enc "hash" c nc nb nb-0 price (pubk hash)) (enc nc nb (pubk c)))
+  (strand-map 0 1 4 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1618,6 +1671,8 @@
   (label 33)
   (parent 28)
   (seen 13)
+  (seen-ops
+    (13 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1638,6 +1693,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1690,6 +1746,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1745,6 +1802,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (displaced 5 3 customer 3) nb-0 (4 0)
     (enc nc nb-0 m price (pubk c)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1804,6 +1862,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc nc nm m price-0 (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1836,6 +1895,10 @@
   (label 37)
   (parent 31)
   (seen 35)
+  (seen-ops
+    (35
+      (operation nonce-test (displaced 5 4 merchant 2) nc (0 0)
+        (enc c nc goods-0 (pubk m))) (strand-map 0 1 2 3 4)))
   (unrealized (0 0) (0 2))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -1866,6 +1929,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc nc nm m price-0 (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1903,6 +1967,10 @@
   (label 38)
   (parent 31)
   (seen 45)
+  (seen-ops
+    (45
+      (operation nonce-test (displaced 6 3 customer 3) nb-0 (5 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 5 4)))
   (unrealized (0 0) (0 2) (1 0) (5 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1927,6 +1995,7 @@
   (operation nonce-test (contracted (acctnum-1 acctnum-0)) nb-0 (4 0)
     (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -1986,6 +2055,7 @@
   (operation nonce-test (displaced 5 2 bank 2) nb-0 (4 0)
     (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -2021,6 +2091,13 @@
   (label 40)
   (parent 32)
   (seen 24)
+  (seen-ops
+    (24
+      (operation nonce-test (contracted (acctnum-1 acctnum-0)) nb-0
+        (4 0) (enc "hash" c nc nb-0 nb-0 price (pubk hash-0))
+        (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
+        (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+      (strand-map 0 1 2 3 2)))
   (unrealized (0 0) (0 2) (1 0) (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -2049,6 +2126,7 @@
   (operation nonce-test (added-strand bank 2) nb-0 (4 0)
     (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -2110,6 +2188,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -2169,6 +2248,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -2234,6 +2314,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -2274,6 +2355,10 @@
   (label 44)
   (parent 36)
   (seen 36)
+  (seen-ops
+    (36
+      (operation nonce-test (displaced 6 3 customer 3) nb-0 (5 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 4)))
   (unrealized (0 0) (0 2) (1 0) (5 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -2305,6 +2390,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -2363,6 +2449,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -2421,6 +2508,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -2478,6 +2566,7 @@
     (1 0) (enc "hash" c nc nb-0 nb-0 price (pubk hash-0))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc goods-0 (pubk m)) (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -2542,6 +2631,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -2611,6 +2701,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -2674,6 +2765,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (displaced 6 3 customer 3) nb-0 (5 0)
     (enc nc nb-0 m price (pubk c)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -2736,6 +2828,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -2798,6 +2891,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -2865,6 +2959,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc nc nm m price-0 (pubk c))
     (enc c nc goods-0 (pubk m)) (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -2902,6 +2997,10 @@
   (label 54)
   (parent 45)
   (seen 53)
+  (seen-ops
+    (53
+      (operation nonce-test (displaced 6 5 merchant 2) nc (0 0)
+        (enc c nc goods-0 (pubk m))) (strand-map 0 1 2 3 4 5)))
   (unrealized (0 0) (0 2))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -2936,6 +3035,7 @@
     (enc nc nb-0 m price (pubk c)) (enc nc nm m price-0 (pubk c))
     (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -2978,6 +3078,10 @@
   (label 55)
   (parent 45)
   (seen 45)
+  (seen-ops
+    (45
+      (operation nonce-test (displaced 7 3 customer 3) nb-0 (6 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 5 4)))
   (unrealized (0 0) (0 2) (1 0) (6 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3003,6 +3107,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm-0 m price-1 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -3059,6 +3164,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -3119,6 +3225,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -3182,6 +3289,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (displaced 6 3 customer 3) nb-0 (5 0)
     (enc nc nb-0 m price (pubk c)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -3249,6 +3357,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc nc nm m price-0 (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -3286,6 +3395,10 @@
   (label 60)
   (parent 50)
   (seen 58)
+  (seen-ops
+    (58
+      (operation nonce-test (displaced 6 5 merchant 2) nc (0 0)
+        (enc c nc goods-0 (pubk m))) (strand-map 0 1 2 3 4 5)))
   (unrealized (0 0) (0 2))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -3318,6 +3431,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc nc nm m price-0 (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -3360,6 +3474,10 @@
   (label 61)
   (parent 50)
   (seen 72)
+  (seen-ops
+    (72
+      (operation nonce-test (displaced 7 3 customer 3) nb-0 (6 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 6 5)))
   (unrealized (0 0) (0 2) (1 0) (6 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3389,6 +3507,7 @@
     (enc "hash" c nc nb-0 nb-1 price (pubk hash-1))
     (enc nc nb-1 m price (pubk c))
     (enc c nc nb-1 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -3457,6 +3576,7 @@
     (enc "hash" c nc nb-1 nb-0 price (pubk hash-1))
     (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -3525,6 +3645,7 @@
     (enc "hash" c nc nb-1 nb-0 price (pubk hash-1))
     (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -3595,6 +3716,7 @@
     (enc "hash" c nc nb-1 nb-0 price (pubk hash-1))
     (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -3640,6 +3762,10 @@
   (label 65)
   (parent 51)
   (seen 51)
+  (seen-ops
+    (51
+      (operation nonce-test (displaced 7 3 customer 3) nb-0 (6 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 5 5)))
   (unrealized (0 0) (0 2) (1 0) (4 0) (6 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -3666,6 +3792,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -3729,6 +3856,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -3795,6 +3923,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -3858,6 +3987,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -3925,6 +4055,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -3997,6 +4128,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -4042,6 +4174,10 @@
   (label 71)
   (parent 59)
   (seen 59)
+  (seen-ops
+    (59
+      (operation nonce-test (displaced 7 3 customer 3) nb-0 (6 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 5 5)))
   (unrealized (0 0) (0 2) (1 0) (6 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4075,6 +4211,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -4141,6 +4278,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -4206,6 +4344,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -4272,6 +4411,7 @@
     (enc "hash" c nc nb-0 nb-0 price (pubk hash-1))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -4340,6 +4480,7 @@
     (enc "hash" c nc nb-0 nb-0 price (pubk hash-1))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -4410,6 +4551,7 @@
     (enc "hash" c nc nb-0 nb-0 price (pubk hash-1))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -4484,6 +4626,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -4556,6 +4699,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -4633,6 +4777,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -4704,6 +4849,7 @@
     (enc "hash" c nc nb-1 nb-0 price (pubk hash-1))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -4775,6 +4921,7 @@
     (enc "hash" c nc nb-1 nb-0 price (pubk hash-1))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -4820,6 +4967,10 @@
   (label 82)
   (parent 64)
   (seen 64)
+  (seen-ops
+    (64
+      (operation nonce-test (displaced 7 3 customer 3) nb-0 (6 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 5 5)))
   (unrealized (0 0) (0 2) (1 0) (4 0) (6 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -4849,6 +5000,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm-0 m price-1 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -4914,6 +5066,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -4983,6 +5136,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -5057,6 +5211,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc nc nm m price-0 (pubk c))
     (enc c nc goods-0 (pubk m)) (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -5099,6 +5254,10 @@
   (label 86)
   (parent 72)
   (seen 85)
+  (seen-ops
+    (85
+      (operation nonce-test (displaced 7 6 merchant 2) nc (0 0)
+        (enc c nc goods-0 (pubk m))) (strand-map 0 1 2 3 4 5 6)))
   (unrealized (0 0) (0 2))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -5136,6 +5295,7 @@
     (enc nc nb-0 m price (pubk c)) (enc nc nm m price-0 (pubk c))
     (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -5183,6 +5343,10 @@
   (label 87)
   (parent 72)
   (seen 72)
+  (seen-ops
+    (72
+      (operation nonce-test (displaced 8 3 customer 3) nb-0 (7 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 5 6 5)))
   (unrealized (0 0) (0 2) (1 0) (7 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -5210,6 +5374,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm-0 m price-1 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -5278,6 +5443,7 @@
     (enc "hash" c nc nb-0 nb-0 price (pubk hash-1))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc goods-0 (pubk m)) (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -5350,6 +5516,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -5427,6 +5594,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -5497,6 +5665,7 @@
     (enc "hash" c nc nb-0 nb-0 price (pubk hash-1))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -5568,6 +5737,7 @@
     (enc "hash" c nc nb-0 nb-0 price (pubk hash-1))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -5641,6 +5811,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (displaced 7 3 customer 3) nb-0 (6 0)
     (enc nc nb-0 m price (pubk c)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -5686,6 +5857,14 @@
   (label 94)
   (parent 77)
   (seen 62)
+  (seen-ops
+    (62
+      (operation nonce-test (displaced 7 6 bank 2) nb-1 (4 0)
+        (enc "hash" c nc nb-1 nb-1 price (pubk hash-1))
+        (enc "hash" c nc nb-0 nb-1 price (pubk hash-2))
+        (enc nc nb-1 (pubk c)) (enc nc nb-1 m price (pubk c))
+        (enc c nc nb-1 acctnum-0 price (pubk b-0)))
+      (strand-map 0 1 2 3 4 5 5)))
   (unrealized (0 0) (0 2) (1 0) (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -5712,6 +5891,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -5781,6 +5961,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -5851,6 +6032,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (displaced 7 3 customer 3) nb-0 (6 0)
     (enc nc nb-0 m price (pubk c)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -5928,6 +6110,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc nc nm m price-0 (pubk c))
     (enc c nc goods-0 (pubk m)) (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -5970,6 +6153,10 @@
   (label 98)
   (parent 80)
   (seen 96)
+  (seen-ops
+    (96
+      (operation nonce-test (displaced 7 6 merchant 2) nc (0 0)
+        (enc c nc goods-0 (pubk m))) (strand-map 0 1 2 3 4 5 6)))
   (unrealized (0 0) (0 2))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -6007,6 +6194,7 @@
     (enc nc nb-0 m price (pubk c)) (enc nc nm m price-0 (pubk c))
     (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -6054,6 +6242,10 @@
   (label 99)
   (parent 80)
   (seen 118)
+  (seen-ops
+    (118
+      (operation nonce-test (displaced 8 3 customer 3) nb-0 (7 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 5 7 6)))
   (unrealized (0 0) (0 2) (1 0) (7 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -6084,6 +6276,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -6156,6 +6349,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -6233,6 +6427,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -6302,6 +6497,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -6372,6 +6568,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -6446,6 +6643,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -6515,6 +6713,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -6583,6 +6782,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -6653,6 +6853,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (displaced 7 3 customer 3) nb-0 (6 0)
     (enc nc nb-0 m price (pubk c)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -6729,6 +6930,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc nc nm m price-0 (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -6771,6 +6973,10 @@
   (label 109)
   (parent 91)
   (seen 107)
+  (seen-ops
+    (107
+      (operation nonce-test (displaced 7 6 merchant 2) nc (0 0)
+        (enc c nc goods-0 (pubk m))) (strand-map 0 1 2 3 4 5 6)))
   (unrealized (0 0) (0 2))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -6807,6 +7013,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc nc nm m price-0 (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -6854,6 +7061,10 @@
   (label 110)
   (parent 91)
   (seen 130)
+  (seen-ops
+    (130
+      (operation nonce-test (displaced 8 3 customer 3) nb-0 (7 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 5 7 6)))
   (unrealized (0 0) (0 2) (1 0) (7 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -6883,6 +7094,7 @@
     (enc "hash" c nc nb-0 nb-0 price (pubk hash-1))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc goods-0 (pubk m)) (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -6955,6 +7167,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -7032,6 +7245,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -7102,6 +7316,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (displaced 7 3 customer 3) nb-0 (6 0)
     (enc nc nb-0 m price (pubk c)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -7147,6 +7362,15 @@
   (label 114)
   (parent 93)
   (seen 76)
+  (seen-ops
+    (76
+      (operation nonce-test (displaced 7 6 bank 2) nb-1 (4 0)
+        (enc "hash" c nc nb-1 nb-1 price (pubk hash-0))
+        (enc "hash" c nc nb-1 nb-1 price (pubk hash-1))
+        (enc "hash" c nc nb-0 nb-1 price (pubk hash-2))
+        (enc nc nb-1 (pubk c)) (enc nc nb-1 m price (pubk c))
+        (enc c nc nb-1 acctnum-0 price (pubk b-0)))
+      (strand-map 0 1 2 3 4 5 5)))
   (unrealized (0 0) (0 2) (1 0) (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -7175,6 +7399,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -7250,6 +7475,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c)) (enc nc nb-2 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -7331,6 +7557,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c)) (enc nc nb-2 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -7381,6 +7608,10 @@
   (label 117)
   (parent 97)
   (seen 97)
+  (seen-ops
+    (97
+      (operation nonce-test (displaced 8 3 customer 3) nb-0 (7 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 5 6 6)))
   (unrealized (0 0) (0 2) (1 0) (7 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -7418,6 +7649,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c)) (enc nc nb-2 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -7492,6 +7724,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -7565,6 +7798,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -7634,6 +7868,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -7703,6 +7938,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -7773,6 +8009,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (displaced 7 3 customer 3) nb-0 (6 0)
     (enc nc nb-0 m price (pubk c)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -7850,6 +8087,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc nc nm m price-0 (pubk c))
     (enc c nc goods-0 (pubk m)) (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -7892,6 +8130,10 @@
   (label 124)
   (parent 102)
   (seen 122)
+  (seen-ops
+    (122
+      (operation nonce-test (displaced 7 6 merchant 2) nc (0 0)
+        (enc c nc goods-0 (pubk m))) (strand-map 0 1 2 3 4 5 6)))
   (unrealized (0 0) (0 2))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -7929,6 +8171,7 @@
     (enc nc nb-0 m price (pubk c)) (enc nc nm m price-0 (pubk c))
     (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -7976,6 +8219,10 @@
   (label 125)
   (parent 102)
   (seen 146)
+  (seen-ops
+    (146
+      (operation nonce-test (displaced 8 3 customer 3) nb-0 (7 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 5 7 6)))
   (unrealized (0 0) (0 2) (1 0) (7 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -8008,6 +8255,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm-0 m price-1 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -8080,6 +8328,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -8155,6 +8404,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -8236,6 +8486,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -8286,6 +8537,10 @@
   (label 129)
   (parent 108)
   (seen 108)
+  (seen-ops
+    (108
+      (operation nonce-test (displaced 8 3 customer 3) nb-0 (7 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 5 6 6)))
   (unrealized (0 0) (0 2) (1 0) (7 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -8323,6 +8578,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -8397,6 +8653,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -8470,6 +8727,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -8539,6 +8797,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -8607,6 +8866,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -8677,6 +8937,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (displaced 7 3 customer 3) nb-0 (6 0)
     (enc nc nb-0 m price (pubk c)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -8753,6 +9014,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc nc nm m price-0 (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -8795,6 +9057,10 @@
   (label 136)
   (parent 113)
   (seen 134)
+  (seen-ops
+    (134
+      (operation nonce-test (displaced 7 6 merchant 2) nc (0 0)
+        (enc c nc goods-0 (pubk m))) (strand-map 0 1 2 3 4 5 6)))
   (unrealized (0 0) (0 2))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -8831,6 +9097,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc nc nm m price-0 (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -8878,6 +9145,10 @@
   (label 137)
   (parent 113)
   (seen 157)
+  (seen-ops
+    (157
+      (operation nonce-test (displaced 8 3 customer 3) nb-0 (7 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 5 7 6)))
   (unrealized (0 0) (0 2) (1 0) (7 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -8906,6 +9177,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -8982,6 +9254,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -9065,6 +9338,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c)) (enc nc nb-2 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc nc nm m price-0 (pubk c))
     (enc c nc goods-0 (pubk m)) (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -9112,6 +9386,10 @@
   (label 140)
   (parent 118)
   (seen 139)
+  (seen-ops
+    (139
+      (operation nonce-test (displaced 8 7 merchant 2) nc (0 0)
+        (enc c nc goods-0 (pubk m))) (strand-map 0 1 2 3 4 5 6 7)))
   (unrealized (0 0) (0 2))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -9152,6 +9430,7 @@
     (enc nc nb-0 m price (pubk c)) (enc nc nm m price-0 (pubk c))
     (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -9204,6 +9483,10 @@
   (label 141)
   (parent 118)
   (seen 118)
+  (seen-ops
+    (118
+      (operation nonce-test (displaced 9 3 customer 3) nb-0 (8 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 5 6 7 6)))
   (unrealized (0 0) (0 2) (1 0) (8 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -9235,6 +9518,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm-0 m price-1 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -9307,6 +9591,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -9382,6 +9667,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c)) (enc nc nb-2 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -9463,6 +9749,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c)) (enc nc nb-2 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -9513,6 +9800,10 @@
   (label 145)
   (parent 123)
   (seen 123)
+  (seen-ops
+    (123
+      (operation nonce-test (displaced 8 3 customer 3) nb-0 (7 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 5 6 6)))
   (unrealized (0 0) (0 2) (1 0) (7 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -9550,6 +9841,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c)) (enc nc nb-2 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -9624,6 +9916,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -9697,6 +9990,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -9768,6 +10062,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -9844,6 +10139,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -9927,6 +10223,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc nc nm m price-0 (pubk c))
     (enc c nc goods-0 (pubk m)) (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -9974,6 +10271,10 @@
   (label 151)
   (parent 130)
   (seen 150)
+  (seen-ops
+    (150
+      (operation nonce-test (displaced 8 7 merchant 2) nc (0 0)
+        (enc c nc goods-0 (pubk m))) (strand-map 0 1 2 3 4 5 6 7)))
   (unrealized (0 0) (0 2))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -10014,6 +10315,7 @@
     (enc nc nb-0 m price (pubk c)) (enc nc nm m price-0 (pubk c))
     (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -10066,6 +10368,10 @@
   (label 152)
   (parent 130)
   (seen 130)
+  (seen-ops
+    (130
+      (operation nonce-test (displaced 9 3 customer 3) nb-0 (8 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 5 6 7 6)))
   (unrealized (0 0) (0 2) (1 0) (8 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -10097,6 +10403,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm-0 m price-1 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -10169,6 +10476,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -10244,6 +10552,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -10325,6 +10634,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -10375,6 +10685,10 @@
   (label 156)
   (parent 135)
   (seen 135)
+  (seen-ops
+    (135
+      (operation nonce-test (displaced 8 3 customer 3) nb-0 (7 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 5 6 6)))
   (unrealized (0 0) (0 2) (1 0) (7 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -10412,6 +10726,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -10486,6 +10801,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -10559,6 +10875,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -10633,6 +10950,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -10712,6 +11030,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -10793,6 +11112,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -10869,6 +11189,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -10945,6 +11266,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -11028,6 +11350,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c)) (enc nc nb-2 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc nc nm m price-0 (pubk c))
     (enc c nc goods-0 (pubk m)) (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -11075,6 +11398,10 @@
   (label 165)
   (parent 146)
   (seen 164)
+  (seen-ops
+    (164
+      (operation nonce-test (displaced 8 7 merchant 2) nc (0 0)
+        (enc c nc goods-0 (pubk m))) (strand-map 0 1 2 3 4 5 6 7)))
   (unrealized (0 0) (0 2))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -11115,6 +11442,7 @@
     (enc nc nb-0 m price (pubk c)) (enc nc nm m price-0 (pubk c))
     (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -11167,6 +11495,10 @@
   (label 166)
   (parent 146)
   (seen 146)
+  (seen-ops
+    (146
+      (operation nonce-test (displaced 9 3 customer 3) nb-0 (8 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 5 6 7 6)))
   (unrealized (0 0) (0 2) (1 0) (8 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -11198,6 +11530,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm-0 m price-1 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -11272,6 +11605,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -11350,6 +11684,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -11431,6 +11766,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -11507,6 +11843,7 @@
   (uniq-orig nc nb nb-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -11583,6 +11920,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -11666,6 +12004,7 @@
     (enc nc nb-0 (pubk c)) (enc nc nb-1 (pubk c))
     (enc nc nb-0 m price (pubk c)) (enc nc nm m price-0 (pubk c))
     (enc c nc goods-0 (pubk m)) (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -11713,6 +12052,10 @@
   (label 173)
   (parent 157)
   (seen 172)
+  (seen-ops
+    (172
+      (operation nonce-test (displaced 8 7 merchant 2) nc (0 0)
+        (enc c nc goods-0 (pubk m))) (strand-map 0 1 2 3 4 5 6 7)))
   (unrealized (0 0) (0 2))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -11753,6 +12096,7 @@
     (enc nc nb-0 m price (pubk c)) (enc nc nm m price-0 (pubk c))
     (enc c nc goods-0 (pubk m))
     (enc c nc nb-0 acctnum-0 price (pubk b-0)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -11805,6 +12149,10 @@
   (label 174)
   (parent 157)
   (seen 157)
+  (seen-ops
+    (157
+      (operation nonce-test (displaced 9 3 customer 3) nb-0 (8 0)
+        (enc nc nb-0 m price (pubk c))) (strand-map 0 1 2 3 4 5 6 7 6)))
   (unrealized (0 0) (0 2) (1 0) (8 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -11836,6 +12184,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm-0 m price-1 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -11914,6 +12263,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm-0 m price-1 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -11994,6 +12344,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -12073,6 +12424,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -12154,6 +12506,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -12236,6 +12589,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm-0 m price-1 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -12315,6 +12669,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -12393,6 +12748,7 @@
   (uniq-orig nc nb nb-0 nm)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -12474,6 +12830,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (added-strand merchant 2) nc (0 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -12556,6 +12913,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm-0 m price-1 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -12639,6 +12997,7 @@
   (uniq-orig nc nb nb-0 nm nm-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (0 0)
     (enc nc nm-0 m price-1 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv (enc c nc goods (pubk m)))
       (send (enc nc nb-0 m price (pubk c)))
@@ -12803,6 +13162,7 @@
   (uniq-orig nm nb nc)
   (operation encryption-test (added-strand merchant 4)
     (enc (enc "hash" b m nb nm (pubk hash)) (privk m)) (0 2))
+  (strand-map 0)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -12833,6 +13193,7 @@
   (operation encryption-test (displaced 2 0 bank 2)
     (enc (enc "hash" c-0 nc-0 nb nm price-0 (pubk hash)) (privk b))
     (1 2))
+  (strand-map 0 1)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -12865,6 +13226,7 @@
   (uniq-orig nm nb nc)
   (operation nonce-test (added-strand customer 5) nb (1 2)
     (enc "hash" c nc nb nm price (pubk hash)) (enc nc nb (pubk c)))
+  (strand-map 0 1)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -12906,6 +13268,7 @@
   (uniq-orig nm nb nc)
   (operation nonce-test (contracted (m-0 m)) nm (2 1)
     (enc nc nm m price (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -12947,6 +13310,7 @@
   (uniq-orig nm nb nc)
   (operation encryption-test (displaced 3 0 bank 2)
     (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b-0)) (2 3))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -12988,6 +13352,7 @@
   (uniq-orig nm nb nc)
   (operation nonce-test (contracted (goods-0 goods)) nc (1 0)
     (enc c nc goods (pubk m)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -13032,6 +13397,7 @@
   (uniq-orig nm nb nc nm-0)
   (operation nonce-test (added-strand merchant 2) nc (1 0)
     (enc c nc goods-0 (pubk m)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -13075,6 +13441,7 @@
   (uniq-orig nm nb nc)
   (operation nonce-test (displaced 3 2 customer 3) nm (0 0)
     (enc nc nm m price (pubk c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -13118,6 +13485,7 @@
   (uniq-orig nm nb nc nm-0)
   (operation nonce-test (contracted (goods-0 goods)) nc (1 0)
     (enc nc nm-0 m price-0 (pubk c)) (enc c nc goods (pubk m)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -13160,6 +13528,7 @@
   (uniq-orig nm nb nc)
   (operation nonce-test (contracted (acctnum-0 acctnum)) nm (0 0)
     (enc nc nm m price (pubk c)) (enc c nc nm acctnum price (pubk b)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -13208,6 +13577,7 @@
   (uniq-orig nm nb nc)
   (operation nonce-test (added-strand bank 2) nm (0 0)
     (enc nc nm m price (pubk c)) (enc c nc nm acctnum-0 price (pubk b)))
+  (strand-map 0 1 2)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -13256,6 +13626,7 @@
   (uniq-orig nm nb nc nm-0)
   (operation nonce-test (displaced 4 2 customer 3) nm (0 0)
     (enc nc nm m price (pubk c)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -13301,6 +13672,7 @@
   (uniq-orig nm nb nc)
   (operation nonce-test (displaced 4 2 customer 3) nm (3 0)
     (enc nc nm m price (pubk c)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -13349,6 +13721,7 @@
   (uniq-orig nm nb nc nm-0)
   (operation nonce-test (contracted (acctnum-0 acctnum)) nm (0 0)
     (enc nc nm m price (pubk c)) (enc c nc nm acctnum price (pubk b)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -13375,6 +13748,8 @@
   (label 200)
   (parent 198)
   (seen 196)
+  (seen-ops
+    (196 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -13399,6 +13774,7 @@
   (uniq-orig nm nb nc nm-0)
   (operation nonce-test (added-strand bank 2) nm (0 0)
     (enc nc nm m price (pubk c)) (enc c nc nm acctnum-0 price (pubk b)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -13450,6 +13826,7 @@
   (operation nonce-test (contracted (acctnum-0 acctnum)) nm (0 0)
     (enc "hash" c nc nb-0 nm price (pubk hash-0))
     (enc nc nm m price (pubk c)) (enc c nc nm acctnum price (pubk b)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -13479,6 +13856,8 @@
   (label 202)
   (parent 199)
   (seen 196)
+  (seen-ops
+    (196 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -13500,6 +13879,7 @@
   (operation nonce-test (displaced 4 3 bank 2) nm (0 0)
     (enc "hash" c nc nb-0 nm price (pubk hash-0))
     (enc nc nm m price (pubk c)) (enc c nc nm acctnum-0 price (pubk b)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc nb-0 acctnum price (pubk b)))
       (send
@@ -13553,6 +13933,7 @@
   (operation nonce-test (added-strand bank 2) nm (0 0)
     (enc "hash" c nc nb-0 nm price (pubk hash-0))
     (enc nc nm m price (pubk c)) (enc c nc nm acctnum-0 price (pubk b)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -13587,6 +13968,10 @@
   (label 204)
   (parent 199)
   (seen 199)
+  (seen-ops
+    (199
+      (operation nonce-test (displaced 5 2 customer 3) nm (4 0)
+        (enc nc nm m price (pubk c))) (strand-map 0 1 2 3 3)))
   (unrealized (0 0) (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -13610,6 +13995,7 @@
   (uniq-orig nm nb nc nm-0)
   (operation nonce-test (displaced 5 2 customer 3) nm (4 0)
     (enc nc nm m price (pubk c)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -13662,6 +14048,7 @@
     (enc "hash" c nc nb-0 nb-0 price (pubk hash-0))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc nb-0 acctnum price (pubk b)))
       (send
@@ -13691,6 +14078,8 @@
   (label 206)
   (parent 203)
   (seen 196)
+  (seen-ops
+    (196 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -13717,6 +14106,7 @@
     (enc "hash" c nc nb-0 nb-0 price (pubk hash-0))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum-0 price (pubk b)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (enc c nc nb-0 acctnum price (pubk b)))
       (send
@@ -13773,6 +14163,7 @@
   (operation nonce-test (contracted (acctnum-0 acctnum)) nm (0 0)
     (enc "hash" c nc nb-0 nm price (pubk hash-0))
     (enc nc nm m price (pubk c)) (enc c nc nm acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -13804,6 +14195,8 @@
   (label 208)
   (parent 205)
   (seen 202)
+  (seen-ops
+    (202 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -13829,6 +14222,7 @@
     (enc "hash" c nc nb-0 nm-0 price (pubk hash-0))
     (enc nc nm-0 m price (pubk c))
     (enc c nc nm-0 acctnum-0 price (pubk b)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc nb-0 acctnum price (pubk b)))
       (send
@@ -13887,6 +14281,7 @@
   (operation nonce-test (added-strand bank 2) nm (0 0)
     (enc "hash" c nc nb-0 nm price (pubk hash-0))
     (enc nc nm m price (pubk c)) (enc c nc nm acctnum-0 price (pubk b)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc nm acctnum price (pubk b)))
       (send
@@ -13923,6 +14318,10 @@
   (label 210)
   (parent 205)
   (seen 205)
+  (seen-ops
+    (205
+      (operation nonce-test (displaced 6 2 customer 3) nm (5 0)
+        (enc nc nm m price (pubk c))) (strand-map 0 1 2 3 4 4)))
   (unrealized (0 0) (5 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -13947,6 +14346,7 @@
   (uniq-orig nb nc nb-0)
   (operation nonce-test (displaced 5 2 customer 3) nb-0 (4 0)
     (enc nc nb-0 m price (pubk c)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc nb-0 acctnum price (pubk b)))
       (send
@@ -13981,6 +14381,14 @@
   (label 211)
   (parent 207)
   (seen 203)
+  (seen-ops
+    (203
+      (operation nonce-test (displaced 5 4 bank 2) nb-1 (0 0)
+        (enc "hash" c nc nb-1 nb-1 price (pubk hash-0))
+        (enc "hash" c nc nb-0 nb-1 price (pubk hash-1))
+        (enc nc nb-1 (pubk c)) (enc nc nb-1 m price (pubk c))
+        (enc c nc nb-1 acctnum-0 price (pubk b)))
+      (strand-map 0 1 2 3 3)))
   (unrealized (0 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -14005,6 +14413,7 @@
     (enc "hash" c nc nb-0 nb-0 price (pubk hash-0))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum price (pubk b)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc nb-0 acctnum price (pubk b)))
       (send
@@ -14036,6 +14445,8 @@
   (label 212)
   (parent 209)
   (seen 206)
+  (seen-ops
+    (206 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -14065,6 +14476,7 @@
     (enc "hash" c nc nb-0 nb-0 price (pubk hash-0))
     (enc nc nb-0 (pubk c)) (enc nc nb-0 m price (pubk c))
     (enc c nc nb-0 acctnum-0 price (pubk b)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (enc c nc nb-0 acctnum price (pubk b)))
       (send
@@ -14127,6 +14539,7 @@
   (uniq-orig nb nc nm nb-0)
   (operation nonce-test (displaced 6 2 customer 3) nb-0 (5 0)
     (enc nc nb-0 m price (pubk c)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (enc c nc nb-0 acctnum price (pubk b)))
       (send
@@ -14163,6 +14576,14 @@
   (label 214)
   (parent 213)
   (seen 209)
+  (seen-ops
+    (209
+      (operation nonce-test (displaced 6 5 bank 2) nb-1 (0 0)
+        (enc "hash" c nc nb-1 nb-1 price (pubk hash-0))
+        (enc "hash" c nc nb-0 nb-1 price (pubk hash-1))
+        (enc nc nb-1 (pubk c)) (enc nc nb-1 m price (pubk c))
+        (enc c nc nb-1 acctnum-0 price (pubk b)))
+      (strand-map 0 1 2 3 4 4)))
   (unrealized (0 0))
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/sorted_epmo_acctnum_shapes.tst b/tst/sorted_epmo_acctnum_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/sorted_epmo_acctnum_shapes.tst
@@ -0,0 +1,304 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Electronic Purchase with Money Order Protocol Variant"
+  (bound 12)
+  (comment "This version includes account numbers in exchanges"
+    "This version uses sorts to avoid confusion"
+    "between a nonce and other data"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/sorted_epmo_acctnum.scm")
+
+(comment "Strand count bounded at 12")
+
+(defprotocol sorted_epmo_acctnum basic
+  (defrole bank
+    (vars (b c m name) (acctnum price text) (hash name) (nc nm nb data))
+    (trace (recv (enc c nc nm acctnum price (pubk b)))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
+    (non-orig (privk hash))
+    (annotations b
+      (1
+        (forall ((pm name))
+          (implies
+            (and (authtransfer c acctnum b price pm nm)
+              (reqtransfer pm b price pm nm))
+            (dotransfer acctnum b price pm nm))))
+      (2
+        (and (says c (authtransfer c acctnum b price m nm))
+          (says m (reqtransfer m b price m nm))))))
+  (defrole customer
+    (vars (b c m hash name) (acctnum goods price text) (nc nm nb data))
+    (trace (send (enc c nc goods (pubk m)))
+      (recv (enc nc nm m price (pubk c)))
+      (send (enc c nc nm acctnum price (pubk b)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb)))
+    (non-orig (privk b) (privk hash))
+    (uniq-orig nc)
+    (annotations c
+      (1
+        (says m
+          (implies
+            (exists ((acctnum2 text))
+              (dotransfer acctnum2 b price m nm)) (doship m goods c))))
+      (3
+        (says b
+          (forall ((pm name))
+            (implies
+              (and (authtransfer c acctnum b price m nm)
+                (reqtransfer pm b price pm nm))
+              (dotransfer acctnum b price pm nm)))))
+      (4 (authtransfer c acctnum b price m nm))))
+  (defrole merchant
+    (vars (b c m hash name) (goods price text) (nc nm nb data))
+    (trace (recv (enc c nc goods (pubk m)))
+      (send (enc nc nm m price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb))
+      (send (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
+    (non-orig (privk hash))
+    (uniq-orig nm)
+    (annotations m
+      (1
+        (implies
+          (exists ((acctnum2 text)) (dotransfer acctnum2 b price m nm))
+          (doship m goods c)))
+      (2
+        (and
+          (says b
+            (forall ((pm name))
+              (exists ((acctnum2 text))
+                (implies
+                  (and (authtransfer c acctnum2 b price m nm)
+                    (reqtransfer pm b price pm nm))
+                  (dotransfer acctnum2 b price pm nm)))))
+          (says c
+            (exists ((acctnum2 text))
+              (authtransfer c acctnum2 b price m nm)))))
+      (3 (and (reqtransfer m b price m nm) (doship m goods c)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton sorted_epmo_acctnum
+  (vars (nm nc nb data) (goods price text) (b m c hash name))
+  (defstrand merchant 4 (nc nc) (nm nm) (nb nb) (goods goods)
+    (price price) (b b) (c c) (m m) (hash hash))
+  (non-orig (privk b) (privk m) (privk c) (privk hash))
+  (uniq-orig nm nc nb)
+  (traces
+    ((recv (enc c nc goods (pubk m)))
+      (send (enc nc nm m price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb))
+      (send (enc (enc "hash" b m nb nm (pubk hash)) (privk m)))))
+  (label 0)
+  (unrealized (0 2))
+  (origs (nm (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton sorted_epmo_acctnum
+  (vars (nm nc nb data) (price acctnum goods text) (c hash b m name))
+  (defstrand merchant 4 (nc nc) (nm nm) (nb nb) (goods goods)
+    (price price) (b b) (c c) (m m) (hash hash))
+  (defstrand bank 2 (nc nc) (nm nm) (nb nb) (acctnum acctnum)
+    (price price) (b b) (c c) (hash hash))
+  (defstrand customer 5 (nc nc) (nm nm) (nb nb) (acctnum acctnum)
+    (goods goods) (price price) (b b) (c c) (m m) (hash hash))
+  (precedes ((0 1) (2 1)) ((1 1) (2 3)) ((2 0) (0 0)) ((2 2) (1 0))
+    ((2 4) (0 2)))
+  (non-orig (privk c) (privk hash) (privk b) (privk m))
+  (uniq-orig nm nc nb)
+  (operation nonce-test (displaced 2 3 customer 5) nb (0 2)
+    (enc "hash" c nc nb nm price (pubk hash)) (enc nc nb (pubk c)))
+  (traces
+    ((recv (enc c nc goods (pubk m)))
+      (send (enc nc nm m price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb))
+      (send (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
+    ((recv (enc c nc nm acctnum price (pubk b)))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c)))))
+    ((send (enc c nc goods (pubk m)))
+      (recv (enc nc nm m price (pubk c)))
+      (send (enc c nc nm acctnum price (pubk b)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb))))
+  (label 8)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((b b) (m m) (c c) (nm nm) (nc nc) (nb nb) (hash hash)
+        (goods goods) (price price))))
+  (origs (nc (2 0)) (nm (0 1)) (nb (1 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol sorted_epmo_acctnum basic
+  (defrole bank
+    (vars (b c m name) (acctnum price text) (hash name) (nc nm nb data))
+    (trace (recv (enc c nc nm acctnum price (pubk b)))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
+    (non-orig (privk hash))
+    (annotations b
+      (1
+        (forall ((pm name))
+          (implies
+            (and (authtransfer c acctnum b price pm nm)
+              (reqtransfer pm b price pm nm))
+            (dotransfer acctnum b price pm nm))))
+      (2
+        (and (says c (authtransfer c acctnum b price m nm))
+          (says m (reqtransfer m b price m nm))))))
+  (defrole customer
+    (vars (b c m hash name) (acctnum goods price text) (nc nm nb data))
+    (trace (send (enc c nc goods (pubk m)))
+      (recv (enc nc nm m price (pubk c)))
+      (send (enc c nc nm acctnum price (pubk b)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb)))
+    (non-orig (privk b) (privk hash))
+    (uniq-orig nc)
+    (annotations c
+      (1
+        (says m
+          (implies
+            (exists ((acctnum2 text))
+              (dotransfer acctnum2 b price m nm)) (doship m goods c))))
+      (3
+        (says b
+          (forall ((pm name))
+            (implies
+              (and (authtransfer c acctnum b price m nm)
+                (reqtransfer pm b price pm nm))
+              (dotransfer acctnum b price pm nm)))))
+      (4 (authtransfer c acctnum b price m nm))))
+  (defrole merchant
+    (vars (b c m hash name) (goods price text) (nc nm nb data))
+    (trace (recv (enc c nc goods (pubk m)))
+      (send (enc nc nm m price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb))
+      (send (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
+    (non-orig (privk hash))
+    (uniq-orig nm)
+    (annotations m
+      (1
+        (implies
+          (exists ((acctnum2 text)) (dotransfer acctnum2 b price m nm))
+          (doship m goods c)))
+      (2
+        (and
+          (says b
+            (forall ((pm name))
+              (exists ((acctnum2 text))
+                (implies
+                  (and (authtransfer c acctnum2 b price m nm)
+                    (reqtransfer pm b price pm nm))
+                  (dotransfer acctnum2 b price pm nm)))))
+          (says c
+            (exists ((acctnum2 text))
+              (authtransfer c acctnum2 b price m nm)))))
+      (3 (and (reqtransfer m b price m nm) (doship m goods c)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton sorted_epmo_acctnum
+  (vars (nm nb nc data) (acctnum price text) (b m c hash name))
+  (defstrand bank 3 (nc nc) (nm nm) (nb nb) (acctnum acctnum)
+    (price price) (b b) (c c) (m m) (hash hash))
+  (non-orig (privk b) (privk m) (privk c) (privk hash))
+  (uniq-orig nm nb nc)
+  (traces
+    ((recv (enc c nc nm acctnum price (pubk b)))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc "hash" b m nb nm (pubk hash)) (privk m)))))
+  (label 186)
+  (unrealized (0 2))
+  (origs (nb (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton sorted_epmo_acctnum
+  (vars (nm nb nc data) (price acctnum goods text) (b m c hash name))
+  (defstrand bank 3 (nc nc) (nm nm) (nb nb) (acctnum acctnum)
+    (price price) (b b) (c c) (m m) (hash hash))
+  (defstrand merchant 4 (nc nc) (nm nm) (nb nb) (goods goods)
+    (price price) (b b) (c c) (m m) (hash hash))
+  (defstrand customer 5 (nc nc) (nm nm) (nb nb) (acctnum acctnum)
+    (goods goods) (price price) (b b) (c c) (m m) (hash hash))
+  (precedes ((0 1) (2 3)) ((1 1) (2 1)) ((1 3) (0 2)) ((2 0) (1 0))
+    ((2 2) (0 0)) ((2 4) (1 2)))
+  (non-orig (privk b) (privk m) (privk c) (privk hash))
+  (uniq-orig nm nb nc)
+  (operation nonce-test (contracted (acctnum-0 acctnum)) nm (0 0)
+    (enc nc nm m price (pubk c)) (enc c nc nm acctnum price (pubk b)))
+  (traces
+    ((recv (enc c nc nm acctnum price (pubk b)))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c))))
+      (recv (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
+    ((recv (enc c nc goods (pubk m)))
+      (send (enc nc nm m price (pubk c)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb))
+      (send (enc (enc "hash" b m nb nm (pubk hash)) (privk m))))
+    ((send (enc c nc goods (pubk m)))
+      (recv (enc nc nm m price (pubk c)))
+      (send (enc c nc nm acctnum price (pubk b)))
+      (recv
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          (enc nc nb (pubk c))))
+      (send
+        (cat (enc (enc "hash" c nc nb nm price (pubk hash)) (privk b))
+          nb))))
+  (label 196)
+  (parent 186)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((b b) (m m) (c c) (nm nm) (nb nb) (nc nc) (hash hash)
+        (acctnum acctnum) (price price))))
+  (origs (nc (2 0)) (nm (1 1)) (nb (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/sts.scm b/tst/sts.scm
--- a/tst/sts.scm
+++ b/tst/sts.scm
@@ -11,22 +11,31 @@
 
 (defprotocol station-to-station diffie-hellman
   (defrole init
-    (vars (x rndx) (h base) (a b name))
+    (vars (x rndx) (eta expt) (a b name))
     (trace
      (send (exp (gen) x))
-     (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-     (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))
+     (recv (cat (exp (gen) eta)
+		(enc (enc (exp (gen) eta)
+			  (exp (gen) x) (privk b))
+		     (exp (exp (gen) eta) x))))
+     (send (enc (enc (exp (gen) x)
+		     (exp (gen) eta) (privk a))
+		(exp (exp (gen) eta) x)))
      (send (privk a)))
     (uniq-gen x))
   (defrole resp
-    (vars (y rndx) (h base) (a b name))
+    (vars (y rndx) (chi expt) (a b name))
     (trace
-     (recv h)
-     (send (cat (exp (gen) y) (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-     (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y)))
+     (recv (exp (gen) chi))
+     (send (cat (exp (gen) y)
+		(enc (enc (exp (gen) y)
+			  (exp (gen) chi) (privk b))
+		     (exp (exp (gen) chi) y))))
+     (recv (enc (enc (exp (gen) chi)
+		     (exp (gen) y) (privk a))
+		(exp (exp (gen) chi) y)))
      (send (privk b)))
-    (uniq-gen y))
-)
+    (uniq-gen y)))
 
 (defskeleton station-to-station
   (vars (a b name))
@@ -41,31 +50,31 @@
   )
 
 (defskeleton station-to-station
-  (vars (a b name)(x y rndx) (h base))
-  (defstrand init 3 (a a) (b b) (x x) (h h))
-  (deflistener (exp h x))
+  (vars (a b name)(x y rndx) (eta expt))
+  (defstrand init 3 (a a) (b b) (x x) (eta eta))
+  (deflistener (exp (exp (gen) eta) x))
   (non-orig (privk b) (privk a))
 )
 
 (defskeleton station-to-station
-  (vars (a b name) (x y rndx)(h base))
-  (defstrand resp 3 (a a) (b b) (y y) (h h))
-  (deflistener (exp h y))
+  (vars (a b name) (x y rndx)(chi expt))
+  (defstrand resp 3 (a a) (b b) (y y) (chi chi))
+  (deflistener (exp (exp (gen) chi) y))
   (non-orig (privk a) (privk b))
 )
 
 (defskeleton station-to-station
   (vars (a b name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (b b) (h (exp (gen) x)) (y y))
+  (defstrand init 4 (a a) (b b) (eta y) (x x))
+  (defstrand resp 4 (b b) (chi x) (y y))
   (precedes ((0 0) (1 0)) ((1 1) (0 1)))
   (uniq-orig (privk b) (privk a))
   )
 
 (defskeleton station-to-station
   (vars (a b name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (b b) (h (exp (gen) x)) (y y))
+  (defstrand init 4 (a a) (b b) (eta y) (x x))
+  (defstrand resp 4 (b b) (chi x) (y y))
   (deflistener (exp (gen) (mul x y)))
   (precedes ((0 0) (1 0)) ((1 1) (0 1)))
   (uniq-orig (privk b) (privk a))
diff --git a/tst/sts.tst b/tst/sts.tst
--- a/tst/sts.tst
+++ b/tst/sts.tst
@@ -1,4041 +1,1549 @@
 (herald "Station-to-station protocol" (bound 20)
   (algebra diffie-hellman))
 
-(comment "CPSA 4.4.3")
-(comment "All input read from tst/sts.scm")
-(comment "Strand count bounded at 20")
-
-(defprotocol station-to-station diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))
-      (send (privk a)))
-    (uniq-gen x))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y)))
-      (send (privk b)))
-    (uniq-gen y))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-to-station
-  (vars (a b name) (h base) (x rndx))
-  (defstrand init 3 (a a) (b b) (h h) (x x))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (traces
-    ((send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))))
-  (label 0)
-  (unrealized (0 1))
-  (origs)
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (precedes ((0 0) (1 1)) ((1 2) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (operation encryption-test (added-strand init 3)
-    (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-      (exp (gen) (mul x x-0))) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0))))))
-  (label 1)
-  (parent 0)
-  (unrealized (1 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation encryption-test (added-strand resp 2)
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-      (exp (gen) (mul x y))) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 2)
-  (parent 0)
-  (realized)
-  (shape)
-  (maps ((0) ((a a) (b b) (x x) (h (exp (gen) y)))))
-  (origs))
-
-(defskeleton station-to-station
-  (vars (a b name) (h base) (x rndx))
-  (defstrand init 3 (a a) (b b) (h h) (x x))
-  (deflistener (exp h x))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (operation encryption-test (added-listener (exp h x))
-    (enc (enc h (exp (gen) x) (privk b)) (exp h x)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x))))
-    ((recv (exp h x)) (send (exp h x))))
-  (label 3)
-  (parent 0)
-  (unrealized (0 1) (1 0))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (precedes ((0 0) (2 0)) ((1 0) (2 0)) ((1 2) (0 1)) ((2 1) (1 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))
-    (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-      (exp (gen) (mul x x-0))) (1 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))
-  (label 4)
-  (parent 1)
-  (unrealized (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x rndx))
-  (defstrand init 3 (a a) (b b) (h (gen)) (x x))
-  (deflistener (exp (gen) x))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (operation nonce-test (displaced 2 0 init 1) (exp (gen) x-0) (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (gen)
-          (enc (enc (gen) (exp (gen) x) (privk b)) (exp (gen) x))))
-      (send (enc (enc (exp (gen) x) (gen) (privk a)) (exp (gen) x))))
-    ((recv (exp (gen) x)) (send (exp (gen) x))))
-  (label 5)
-  (parent 3)
-  (unrealized (0 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (rec x))) (x x))
-  (deflistener (gen))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (operation nonce-test (contracted (h (exp (gen) (rec x)))) (gen)
-    (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (rec x))
-          (enc (enc (exp (gen) (rec x)) (exp (gen) x) (privk b))
-            (gen))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) (rec x)) (privk a)) (gen))))
-    ((recv (gen)) (send (gen))))
-  (label 6)
-  (parent 3)
-  (unrealized (0 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) x-0))) (x x))
-  (deflistener (exp (gen) x-0))
-  (defstrand init 1 (x x-0))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((2 0) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (operation nonce-test (added-strand init 1) (exp (gen) x-0) (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) x-0))
-          (enc
-            (enc (exp (gen) (mul (rec x) x-0)) (exp (gen) x) (privk b))
-            (exp (gen) x-0))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) (mul (rec x) x-0)) (privk a))
-          (exp (gen) x-0))))
-    ((recv (exp (gen) x-0)) (send (exp (gen) x-0)))
-    ((send (exp (gen) x-0))))
-  (label 7)
-  (parent 3)
-  (unrealized (0 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (h base) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) y))) (x x))
-  (deflistener (exp (gen) y))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation nonce-test (added-strand resp 2) (exp (gen) y) (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) y))
-          (enc (enc (exp (gen) (mul (rec x) y)) (exp (gen) x) (privk b))
-            (exp (gen) y))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) (mul (rec x) y)) (privk a))
-          (exp (gen) y)))) ((recv (exp (gen) y)) (send (exp (gen) y)))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y))))))
-  (label 8)
-  (parent 3)
-  (unrealized (0 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b name) (h base) (x rndx) (w expt))
-  (defstrand init 3 (a a) (b b) (h h) (x x))
-  (deflistener (exp h x))
-  (deflistener (cat (exp h (mul x (rec w))) w))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp h (mul x (rec w))) w))
-    (exp h x) (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x))))
-    ((recv (exp h x)) (send (exp h x)))
-    ((recv (cat (exp h (mul x (rec w))) w))
-      (send (cat (exp h (mul x (rec w))) w))))
-  (label 9)
-  (parent 3)
-  (unrealized (0 1) (2 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (precedes ((0 0) (3 0)) ((1 0) (3 0)) ((1 2) (0 1)) ((2 1) (1 1))
-    ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (operation nonce-test (added-listener (cat (exp (gen) x) x-0))
-    (exp (gen) (mul x x-0)) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0))))
-  (label 10)
-  (parent 4)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (precedes ((0 0) (3 0)) ((1 0) (3 0)) ((1 2) (0 1)) ((2 1) (1 1))
-    ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (operation nonce-test (added-listener (cat (exp (gen) x-0) x))
-    (exp (gen) (mul x x-0)) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))
-  (label 11)
-  (parent 4)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b name) (w expt) (x rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) w)) (x x))
-  (deflistener (exp (gen) (mul w x)))
-  (deflistener (cat (exp (gen) x) w))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (precur (2 0))
-  (operation nonce-test (displaced 3 0 init 1) (exp (gen) x-0) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) w)
-          (enc (enc (exp (gen) w) (exp (gen) x) (privk b))
-            (exp (gen) (mul w x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) w) (privk a))
-          (exp (gen) (mul w x)))))
-    ((recv (exp (gen) (mul w x))) (send (exp (gen) (mul w x))))
-    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w))))
-  (label 12)
-  (parent 9)
-  (unrealized (0 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x rndx) (w expt))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w))) (x x))
-  (deflistener (exp (gen) w))
-  (deflistener (cat (gen) w))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (precur (2 0))
-  (operation nonce-test (contracted (h (exp (gen) (mul (rec x) w))))
-    (gen) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) w))
-          (enc (enc (exp (gen) (mul (rec x) w)) (exp (gen) x) (privk b))
-            (exp (gen) w))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) (mul (rec x) w)) (privk a))
-          (exp (gen) w)))) ((recv (exp (gen) w)) (send (exp (gen) w)))
-    ((recv (cat (gen) w)) (send (cat (gen) w))))
-  (label 13)
-  (parent 9)
-  (unrealized (0 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x rndx) (w expt) (x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w x-0)))
-    (x x))
-  (deflistener (exp (gen) (mul w x-0)))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 1 (x x-0))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 0) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation nonce-test (added-strand init 1) (exp (gen) x-0) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) w x-0))
-          (enc
-            (enc (exp (gen) (mul (rec x) w x-0)) (exp (gen) x)
-              (privk b)) (exp (gen) (mul w x-0)))))
-      (send
-        (enc
-          (enc (exp (gen) x) (exp (gen) (mul (rec x) w x-0)) (privk a))
-          (exp (gen) (mul w x-0)))))
-    ((recv (exp (gen) (mul w x-0))) (send (exp (gen) (mul w x-0))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((send (exp (gen) x-0))))
-  (label 14)
-  (parent 9)
-  (unrealized (0 1))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (h base) (x rndx) (w expt) (y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w y))) (x x))
-  (deflistener (exp (gen) (mul w y)))
-  (deflistener (cat (exp (gen) y) w))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation nonce-test (added-strand resp 2) (exp (gen) y) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) w y))
-          (enc
-            (enc (exp (gen) (mul (rec x) w y)) (exp (gen) x) (privk b))
-            (exp (gen) (mul w y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) (mul (rec x) w y)) (privk a))
-          (exp (gen) (mul w y)))))
-    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y))))))
-  (label 15)
-  (parent 9)
-  (unrealized (0 1))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (precedes ((0 0) (2 0)) ((0 0) (3 1)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 0) (2 0)) ((3 2) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation encryption-test (added-strand init 3)
-    (enc (exp (gen) x-0) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0))))))
-  (label 16)
-  (parent 12)
-  (unrealized (2 0) (3 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) x) y))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 17)
-  (parent 12)
-  (unrealized (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (gen) (mul x x-0)))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (precedes ((0 0) (2 0)) ((0 0) (3 1)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 0) (2 0)) ((3 2) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation encryption-test (added-strand init 3)
-    (enc (exp (gen) x-0) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0))))))
-  (label 18)
-  (parent 13)
-  (unrealized (1 0) (2 0) (3 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (gen) (mul x y)))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (gen) (mul x y))) (send (cat (gen) (mul x y))))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 19)
-  (parent 13)
-  (unrealized (1 0) (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (precedes ((0 0) (2 0)) ((0 0) (3 1)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 0) (2 0)) ((3 2) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation encryption-test (displaced 3 4 init 3)
-    (enc (exp (gen) x-1) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x)))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0))))))
-  (label 20)
-  (parent 14)
-  (unrealized (2 0) (3 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 x-1 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-1)) (x x))
-  (deflistener (exp (gen) (mul x x-1)))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))
-  (defstrand init 1 (x x-0))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-1))
-  (precedes ((0 0) (2 0)) ((0 0) (4 1)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 0) (2 0)) ((4 0) (2 0)) ((4 2) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0 x-1)
-  (precur (2 0))
-  (operation encryption-test (added-strand init 3)
-    (enc (exp (gen) x-1) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-1)
-          (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-1)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-1) (privk a))
-          (exp (gen) (mul x x-1)))))
-    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) x-1))))
-    ((send (exp (gen) x-0)))
-    ((send (exp (gen) x-1))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-1) (privk b-0))
-            (exp (gen) (mul x x-1)))))
-      (send
-        (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-1))))))
-  (label 21)
-  (parent 14)
-  (unrealized (1 0) (2 0) (4 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x x-0 y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) y)))
-  (defstrand init 1 (x x-0))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 0) (2 0))
-    ((4 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0 y)
-  (precur (2 0))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) y)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) y))))
-    ((send (exp (gen) x-0)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 22)
-  (parent 14)
-  (unrealized (1 0) (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 b-1 name) (h base) (x y x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) x-0)))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (defstrand init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))
-  (precedes ((0 0) (2 0)) ((0 0) (4 1)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (2 0)) ((4 0) (2 0)) ((4 2) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y x-0)
-  (precur (2 0))
-  (operation encryption-test (added-strand init 3)
-    (enc (exp (gen) x-0) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) x-0)))
-      (send (cat (exp (gen) y) (mul x (rec y) x-0))))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0))))))
-  (label 23)
-  (parent 15)
-  (unrealized (1 0) (2 0) (4 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation encryption-test (displaced 4 3 resp 2)
-    (enc (exp (gen) y-0) (exp (gen) x) (privk b-0)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 24)
-  (parent 15)
-  (unrealized (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (h base) (x y y-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y-0)) (x x))
-  (deflistener (exp (gen) (mul x y-0)))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) y-0)))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y-0))
-  (precedes ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0))
-    ((4 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y y-0)
-  (precur (2 0))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y-0) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y-0)
-          (enc (enc (exp (gen) y-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y-0) (privk a))
-          (exp (gen) (mul x y-0)))))
-    ((recv (exp (gen) (mul x y-0))) (send (exp (gen) (mul x y-0))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) y-0)))
-      (send (cat (exp (gen) y) (mul x (rec y) y-0))))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y-0)
-          (enc (enc (exp (gen) y-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y-0)))))))
-  (label 25)
-  (parent 15)
-  (unrealized (1 0) (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (precedes ((0 0) (2 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 0) (2 0)) ((3 0) (4 0)) ((3 2) (0 1)) ((4 1) (3 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))
-    (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-      (exp (gen) (mul x x-0))) (3 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))
-  (label 26)
-  (parent 16)
-  (unrealized (2 0) (4 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (gen) (mul x x-0)))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (precedes ((0 0) (2 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 0) (2 0)) ((3 0) (4 0)) ((3 2) (0 1)) ((4 1) (3 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))
-    (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-      (exp (gen) (mul x x-0))) (3 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))
-  (label 27)
-  (parent 18)
-  (unrealized (1 0) (2 0) (4 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (precedes ((0 0) (2 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 0) (2 0)) ((3 0) (4 0)) ((3 2) (0 1)) ((4 1) (3 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))
-    (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-      (exp (gen) (mul x x-0))) (3 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x)))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))
-  (label 28)
-  (parent 20)
-  (unrealized (2 0) (4 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 x-1 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-1)) (x x))
-  (deflistener (exp (gen) (mul x x-1)))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))
-  (defstrand init 1 (x x-0))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-1))
-  (deflistener (exp (gen) (mul x x-1)))
-  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 0) (2 0)) ((4 0) (2 0)) ((4 0) (5 0)) ((4 2) (0 1))
-    ((5 1) (4 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0 x-1)
-  (precur (2 0))
-  (operation encryption-test (added-listener (exp (gen) (mul x x-1)))
-    (enc (enc (exp (gen) x) (exp (gen) x-1) (privk b-0))
-      (exp (gen) (mul x x-1))) (4 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-1)
-          (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-1)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-1) (privk a))
-          (exp (gen) (mul x x-1)))))
-    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) x-1))))
-    ((send (exp (gen) x-0)))
-    ((send (exp (gen) x-1))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-1) (privk b-0))
-            (exp (gen) (mul x x-1)))))
-      (send
-        (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-1)))))
-    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1)))))
-  (label 29)
-  (parent 21)
-  (unrealized (1 0) (2 0) (5 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 b-1 name) (h base) (x y x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) x-0)))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (defstrand init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (2 0)) ((4 0) (2 0)) ((4 0) (5 0)) ((4 2) (0 1))
-    ((5 1) (4 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y x-0)
-  (precur (2 0))
-  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))
-    (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))
-      (exp (gen) (mul x x-0))) (4 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) x-0)))
-      (send (cat (exp (gen) y) (mul x (rec y) x-0))))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))
-  (label 30)
-  (parent 23)
-  (unrealized (1 0) (2 0) (5 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))
-    ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x) x-0))
-    (exp (gen) (mul x x-0)) (4 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0))))
-  (label 31)
-  (parent 26)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))
-    ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x-0) x))
-    (exp (gen) (mul x x-0)) (4 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))
-  (label 32)
-  (parent 26)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (gen) (mul x x-0)))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))
-    ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x) x-0))
-    (exp (gen) (mul x x-0)) (4 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0))))
-  (label 33)
-  (parent 27)
-  (unrealized (1 0) (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (gen) (mul x x-0)))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))
-    ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x-0) x))
-    (exp (gen) (mul x x-0)) (4 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))
-  (label 34)
-  (parent 27)
-  (unrealized (1 0) (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))
-    ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x) x-0))
-    (exp (gen) (mul x x-0)) (4 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x)))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0))))
-  (label 35)
-  (parent 28)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))
-    ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x-0) x))
-    (exp (gen) (mul x x-0)) (4 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x)))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))
-  (label 36)
-  (parent 28)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 x-1 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-1)) (x x))
-  (deflistener (exp (gen) (mul x x-1)))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))
-  (defstrand init 1 (x x-0))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-1))
-  (deflistener (exp (gen) (mul x x-1)))
-  (deflistener (cat (exp (gen) x) x-1))
-  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 0) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))
-    ((5 1) (4 1)) ((6 1) (5 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0 x-1)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x) x-1))
-    (exp (gen) (mul x x-1)) (5 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-1)
-          (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-1)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-1) (privk a))
-          (exp (gen) (mul x x-1)))))
-    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) x-1))))
-    ((send (exp (gen) x-0)))
-    ((send (exp (gen) x-1))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-1) (privk b-0))
-            (exp (gen) (mul x x-1)))))
-      (send
-        (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-1)))))
-    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))
-    ((recv (cat (exp (gen) x) x-1)) (send (cat (exp (gen) x) x-1))))
-  (label 37)
-  (parent 29)
-  (unrealized (1 0) (2 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 x-1 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-1)) (x x))
-  (deflistener (exp (gen) (mul x x-1)))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))
-  (defstrand init 1 (x x-0))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-1))
-  (deflistener (exp (gen) (mul x x-1)))
-  (deflistener (cat (exp (gen) x-1) x))
-  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 0) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))
-    ((5 1) (4 1)) ((6 1) (5 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0 x-1)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x-1) x))
-    (exp (gen) (mul x x-1)) (5 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-1)
-          (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-1)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-1) (privk a))
-          (exp (gen) (mul x x-1)))))
-    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) x-1))))
-    ((send (exp (gen) x-0)))
-    ((send (exp (gen) x-1))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-1) (privk b-0))
-            (exp (gen) (mul x x-1)))))
-      (send
-        (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-1)))))
-    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))
-    ((recv (cat (exp (gen) x-1) x)) (send (cat (exp (gen) x-1) x))))
-  (label 38)
-  (parent 29)
-  (unrealized (1 0) (2 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 b-1 name) (h base) (x y x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) x-0)))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (defstrand init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))
-    ((5 1) (4 1)) ((6 1) (5 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y x-0)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x) x-0))
-    (exp (gen) (mul x x-0)) (5 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) x-0)))
-      (send (cat (exp (gen) y) (mul x (rec y) x-0))))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0))))
-  (label 39)
-  (parent 30)
-  (unrealized (1 0) (2 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 b-1 name) (h base) (x y x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) x-0)))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (defstrand init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))
-    ((5 1) (4 1)) ((6 1) (5 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y x-0)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x-0) x))
-    (exp (gen) (mul x x-0)) (5 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) x-0)))
-      (send (cat (exp (gen) y) (mul x (rec y) x-0))))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))
-  (label 40)
-  (parent 30)
-  (unrealized (1 0) (2 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
-
-(defprotocol station-to-station diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))
-      (send (privk a)))
-    (uniq-gen x))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y)))
-      (send (privk b)))
-    (uniq-gen y))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-to-station
-  (vars (a b name) (h base) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h h) (y y))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y)))))
-  (label 41)
-  (unrealized (0 2))
-  (origs)
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (operation encryption-test (added-strand init 3)
-    (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-      (exp (gen) (mul y x))) (0 2))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x))))))
-  (label 42)
-  (parent 41)
-  (unrealized (1 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (h base) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h h) (y y))
-  (deflistener (exp h y))
-  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (operation encryption-test (added-listener (exp h y))
-    (enc (enc h (exp (gen) y) (privk a)) (exp h y)) (0 2))
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y))))
-    ((recv (exp h y)) (send (exp h y))))
-  (label 43)
-  (parent 41)
-  (unrealized (0 2) (1 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x y rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation encryption-test (displaced 2 0 resp 2)
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul x y))) (1 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y))))))
-  (label 44)
-  (parent 42)
-  (realized)
-  (shape)
-  (maps ((0) ((a a) (b b) (y y) (h (exp (gen) x)))))
-  (origs))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (operation encryption-test (added-listener (exp (gen) (mul y x)))
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul y x))) (1 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x)))))
-  (label 45)
-  (parent 42)
-  (unrealized (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h (gen)) (y y))
-  (deflistener (exp (gen) y))
-  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (operation nonce-test (displaced 2 0 resp 2) (exp (gen) y-0) (1 0))
-  (traces
-    ((recv (gen))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (gen) (privk b)) (exp (gen) y))))
-      (recv (enc (enc (gen) (exp (gen) y) (privk a)) (exp (gen) y))))
-    ((recv (exp (gen) y)) (send (exp (gen) y))))
-  (label 46)
-  (parent 43)
-  (unrealized (0 2))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b name) (h base) (y rndx) (w expt))
-  (defstrand resp 3 (a a) (b b) (h h) (y y))
-  (deflistener (exp h y))
-  (deflistener (cat (exp h (mul y (rec w))) w))
-  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp h (mul y (rec w))) w))
-    (exp h y) (1 0))
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y))))
-    ((recv (exp h y)) (send (exp h y)))
-    ((recv (cat (exp h (mul y (rec w))) w))
-      (send (cat (exp h (mul y (rec w))) w))))
-  (label 47)
-  (parent 43)
-  (unrealized (0 2) (2 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))
-    ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (operation nonce-test (added-listener (cat (exp (gen) y) x))
-    (exp (gen) (mul y x)) (2 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
-  (label 48)
-  (parent 45)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) x) y))
-  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))
-    ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (operation nonce-test (added-listener (cat (exp (gen) x) y))
-    (exp (gen) (mul y x)) (2 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
-  (label 49)
-  (parent 45)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b name) (w expt) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) w)) (y y))
-  (deflistener (exp (gen) (mul w y)))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (precur (2 0))
-  (operation nonce-test (displaced 3 0 resp 2) (exp (gen) y-0) (2 0))
-  (traces
-    ((recv (exp (gen) w))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) w) (privk b))
-            (exp (gen) (mul w y)))))
-      (recv
-        (enc (enc (exp (gen) w) (exp (gen) y) (privk a))
-          (exp (gen) (mul w y)))))
-    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 50)
-  (parent 47)
-  (unrealized (0 2))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (2 0)) ((0 1) (3 1)) ((1 1) (0 2)) ((2 1) (1 0))
-    ((3 0) (0 0)) ((3 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (precur (2 0))
-  (operation encryption-test (added-strand init 3)
-    (enc (exp (gen) x) (exp (gen) y) (privk a)) (0 2))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x))))))
-  (label 51)
-  (parent 50)
-  (unrealized (2 0) (3 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x y rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (2 0)) ((0 1) (3 1)) ((1 1) (0 2)) ((2 1) (1 0))
-    ((3 0) (0 0)) ((3 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation encryption-test (displaced 4 0 resp 2)
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul x y))) (3 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y))))))
-  (label 52)
-  (parent 51)
-  (unrealized (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (precedes ((0 1) (2 0)) ((0 1) (4 0)) ((1 1) (0 2)) ((2 1) (1 0))
-    ((3 0) (0 0)) ((3 2) (0 2)) ((4 1) (3 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (precur (2 0))
-  (operation encryption-test (added-listener (exp (gen) (mul y x)))
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul y x))) (3 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x)))))
-  (label 53)
-  (parent 51)
-  (unrealized (2 0) (4 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (precedes ((0 1) (2 0)) ((0 1) (5 0)) ((1 1) (0 2)) ((2 1) (1 0))
-    ((3 0) (0 0)) ((3 2) (0 2)) ((4 1) (3 1)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) y) x))
-    (exp (gen) (mul y x)) (4 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
-  (label 54)
-  (parent 53)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) x) y))
-  (precedes ((0 1) (2 0)) ((0 1) (5 0)) ((1 1) (0 2)) ((2 1) (1 0))
-    ((3 0) (0 0)) ((3 2) (0 2)) ((4 1) (3 1)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x) y))
-    (exp (gen) (mul y x)) (4 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
-  (label 55)
-  (parent 53)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
-
-(defprotocol station-to-station diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))
-      (send (privk a)))
-    (uniq-gen x))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y)))
-      (send (privk b)))
-    (uniq-gen y))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-to-station
-  (vars (a b name) (h base) (x rndx))
-  (defstrand init 3 (a a) (b b) (h h) (x x))
-  (deflistener (exp h x))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (traces
-    ((send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x))))
-    ((recv (exp h x)) (send (exp h x))))
-  (label 56)
-  (unrealized (0 1) (1 0))
-  (preskeleton)
-  (origs)
-  (comment "Not a skeleton"))
-
-(defskeleton station-to-station
-  (vars (a b name) (h base) (x rndx))
-  (defstrand init 3 (a a) (b b) (h h) (x x))
-  (deflistener (exp h x))
-  (precedes ((0 0) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (traces
-    ((send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x))))
-    ((recv (exp h x)) (send (exp h x))))
-  (label 57)
-  (parent 56)
-  (unrealized (0 1) (1 0))
-  (origs)
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x rndx))
-  (defstrand init 3 (a a) (b b) (h (gen)) (x x))
-  (deflistener (exp (gen) x))
-  (precedes ((0 0) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (operation nonce-test (displaced 2 0 init 1) (exp (gen) x-0) (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (gen)
-          (enc (enc (gen) (exp (gen) x) (privk b)) (exp (gen) x))))
-      (send (enc (enc (exp (gen) x) (gen) (privk a)) (exp (gen) x))))
-    ((recv (exp (gen) x)) (send (exp (gen) x))))
-  (label 58)
-  (parent 57)
-  (unrealized (0 1))
-  (dead)
-  (origs)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (rec x))) (x x))
-  (deflistener (gen))
-  (precedes ((0 0) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (operation nonce-test (contracted (h (exp (gen) (rec x)))) (gen)
-    (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (rec x))
-          (enc (enc (exp (gen) (rec x)) (exp (gen) x) (privk b))
-            (gen))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) (rec x)) (privk a)) (gen))))
-    ((recv (gen)) (send (gen))))
-  (label 59)
-  (parent 57)
-  (unrealized (0 1))
-  (dead)
-  (origs)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) x-0))) (x x))
-  (deflistener (exp (gen) x-0))
-  (defstrand init 1 (x x-0))
-  (precedes ((0 0) (1 0)) ((2 0) (0 1)) ((2 0) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (operation nonce-test (added-strand init 1) (exp (gen) x-0) (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) x-0))
-          (enc
-            (enc (exp (gen) (mul (rec x) x-0)) (exp (gen) x) (privk b))
-            (exp (gen) x-0))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) (mul (rec x) x-0)) (privk a))
-          (exp (gen) x-0))))
-    ((recv (exp (gen) x-0)) (send (exp (gen) x-0)))
-    ((send (exp (gen) x-0))))
-  (label 60)
-  (parent 57)
-  (unrealized (0 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (h base) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) y))) (x x))
-  (deflistener (exp (gen) y))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (precedes ((0 0) (1 0)) ((2 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation nonce-test (added-strand resp 2) (exp (gen) y) (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) y))
-          (enc (enc (exp (gen) (mul (rec x) y)) (exp (gen) x) (privk b))
-            (exp (gen) y))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) (mul (rec x) y)) (privk a))
-          (exp (gen) y)))) ((recv (exp (gen) y)) (send (exp (gen) y)))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y))))))
-  (label 61)
-  (parent 57)
-  (unrealized (0 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b name) (h base) (x rndx) (w expt))
-  (defstrand init 3 (a a) (b b) (h h) (x x))
-  (deflistener (exp h x))
-  (deflistener (cat (exp h (mul x (rec w))) w))
-  (precedes ((0 0) (2 0)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp h (mul x (rec w))) w))
-    (exp h x) (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x))))
-    ((recv (exp h x)) (send (exp h x)))
-    ((recv (cat (exp h (mul x (rec w))) w))
-      (send (cat (exp h (mul x (rec w))) w))))
-  (label 62)
-  (parent 57)
-  (unrealized (0 1) (2 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (w expt) (x rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) w)) (x x))
-  (deflistener (exp (gen) (mul w x)))
-  (deflistener (cat (exp (gen) x) w))
-  (precedes ((0 0) (2 0)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (precur (2 0))
-  (operation nonce-test (displaced 3 0 init 1) (exp (gen) x-0) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) w)
-          (enc (enc (exp (gen) w) (exp (gen) x) (privk b))
-            (exp (gen) (mul w x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) w) (privk a))
-          (exp (gen) (mul w x)))))
-    ((recv (exp (gen) (mul w x))) (send (exp (gen) (mul w x))))
-    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w))))
-  (label 63)
-  (parent 62)
-  (unrealized (0 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x rndx) (w expt))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w))) (x x))
-  (deflistener (exp (gen) w))
-  (deflistener (cat (gen) w))
-  (precedes ((0 0) (2 0)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (precur (2 0))
-  (operation nonce-test (contracted (h (exp (gen) (mul (rec x) w))))
-    (gen) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) w))
-          (enc (enc (exp (gen) (mul (rec x) w)) (exp (gen) x) (privk b))
-            (exp (gen) w))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) (mul (rec x) w)) (privk a))
-          (exp (gen) w)))) ((recv (exp (gen) w)) (send (exp (gen) w)))
-    ((recv (cat (gen) w)) (send (cat (gen) w))))
-  (label 64)
-  (parent 62)
-  (unrealized (0 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x rndx) (w expt) (x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w x-0)))
-    (x x))
-  (deflistener (exp (gen) (mul w x-0)))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 1 (x x-0))
-  (precedes ((0 0) (2 0)) ((2 1) (1 0)) ((3 0) (0 1)) ((3 0) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation nonce-test (added-strand init 1) (exp (gen) x-0) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) w x-0))
-          (enc
-            (enc (exp (gen) (mul (rec x) w x-0)) (exp (gen) x)
-              (privk b)) (exp (gen) (mul w x-0)))))
-      (send
-        (enc
-          (enc (exp (gen) x) (exp (gen) (mul (rec x) w x-0)) (privk a))
-          (exp (gen) (mul w x-0)))))
-    ((recv (exp (gen) (mul w x-0))) (send (exp (gen) (mul w x-0))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((send (exp (gen) x-0))))
-  (label 65)
-  (parent 62)
-  (unrealized (0 1))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (h base) (x rndx) (w expt) (y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w y))) (x x))
-  (deflistener (exp (gen) (mul w y)))
-  (deflistener (cat (exp (gen) y) w))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (precedes ((0 0) (2 0)) ((2 1) (1 0)) ((3 1) (0 1)) ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation nonce-test (added-strand resp 2) (exp (gen) y) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) w y))
-          (enc
-            (enc (exp (gen) (mul (rec x) w y)) (exp (gen) x) (privk b))
-            (exp (gen) (mul w y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) (mul (rec x) w y)) (privk a))
-          (exp (gen) (mul w y)))))
-    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y))))))
-  (label 66)
-  (parent 62)
-  (unrealized (0 1))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (precedes ((0 0) (2 0)) ((0 0) (3 1)) ((2 1) (1 0)) ((3 0) (2 0))
-    ((3 2) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation encryption-test (added-strand init 3)
-    (enc (exp (gen) x-0) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0))))))
-  (label 67)
-  (parent 63)
-  (unrealized (2 0) (3 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) x) y))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (3 0)) ((2 1) (1 0)) ((3 1) (0 1)) ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 68)
-  (parent 63)
-  (unrealized (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (gen) (mul x x-0)))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (precedes ((0 0) (2 0)) ((0 0) (3 1)) ((2 1) (1 0)) ((3 0) (2 0))
-    ((3 2) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation encryption-test (added-strand init 3)
-    (enc (exp (gen) x-0) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0))))))
-  (label 69)
-  (parent 64)
-  (unrealized (1 0) (2 0) (3 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (gen) (mul x y)))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (3 0)) ((2 1) (1 0)) ((3 1) (0 1)) ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (gen) (mul x y))) (send (cat (gen) (mul x y))))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 70)
-  (parent 64)
-  (unrealized (1 0) (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (precedes ((0 0) (2 0)) ((0 0) (3 1)) ((2 1) (1 0)) ((3 0) (2 0))
-    ((3 2) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation encryption-test (displaced 3 4 init 3)
-    (enc (exp (gen) x-1) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x)))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0))))))
-  (label 71)
-  (parent 65)
-  (unrealized (2 0) (3 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 x-1 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-1)) (x x))
-  (deflistener (exp (gen) (mul x x-1)))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))
-  (defstrand init 1 (x x-0))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-1))
-  (precedes ((0 0) (2 0)) ((0 0) (4 1)) ((2 1) (1 0)) ((3 0) (0 1))
-    ((3 0) (2 0)) ((4 0) (2 0)) ((4 2) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0 x-1)
-  (precur (2 0))
-  (operation encryption-test (added-strand init 3)
-    (enc (exp (gen) x-1) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-1)
-          (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-1)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-1) (privk a))
-          (exp (gen) (mul x x-1)))))
-    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) x-1))))
-    ((send (exp (gen) x-0)))
-    ((send (exp (gen) x-1))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-1) (privk b-0))
-            (exp (gen) (mul x x-1)))))
-      (send
-        (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-1))))))
-  (label 72)
-  (parent 65)
-  (unrealized (1 0) (2 0) (4 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x x-0 y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) y)))
-  (defstrand init 1 (x x-0))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (4 0)) ((2 1) (1 0)) ((3 0) (0 1)) ((3 0) (2 0))
-    ((4 1) (0 1)) ((4 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0 y)
-  (precur (2 0))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) y)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) y))))
-    ((send (exp (gen) x-0)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 73)
-  (parent 65)
-  (unrealized (1 0) (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 b-1 name) (h base) (x y x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) x-0)))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (defstrand init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))
-  (precedes ((0 0) (2 0)) ((0 0) (4 1)) ((2 1) (1 0)) ((3 1) (0 1))
-    ((3 1) (2 0)) ((4 0) (2 0)) ((4 2) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y x-0)
-  (precur (2 0))
-  (operation encryption-test (added-strand init 3)
-    (enc (exp (gen) x-0) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) x-0)))
-      (send (cat (exp (gen) y) (mul x (rec y) x-0))))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0))))))
-  (label 74)
-  (parent 66)
-  (unrealized (1 0) (2 0) (4 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (3 0)) ((2 1) (1 0)) ((3 1) (0 1)) ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation encryption-test (displaced 4 3 resp 2)
-    (enc (exp (gen) y-0) (exp (gen) x) (privk b-0)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 75)
-  (parent 66)
-  (unrealized (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (h base) (x y y-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y-0)) (x x))
-  (deflistener (exp (gen) (mul x y-0)))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) y-0)))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y-0))
-  (precedes ((0 0) (4 0)) ((2 1) (1 0)) ((3 1) (0 1)) ((3 1) (2 0))
-    ((4 1) (0 1)) ((4 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y y-0)
-  (precur (2 0))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y-0) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y-0)
-          (enc (enc (exp (gen) y-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y-0) (privk a))
-          (exp (gen) (mul x y-0)))))
-    ((recv (exp (gen) (mul x y-0))) (send (exp (gen) (mul x y-0))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) y-0)))
-      (send (cat (exp (gen) y) (mul x (rec y) y-0))))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y-0)
-          (enc (enc (exp (gen) y-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y-0)))))))
-  (label 76)
-  (parent 66)
-  (unrealized (1 0) (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (precedes ((0 0) (2 0)) ((0 0) (4 0)) ((2 1) (1 0)) ((3 0) (2 0))
-    ((3 0) (4 0)) ((3 2) (0 1)) ((4 1) (3 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))
-    (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-      (exp (gen) (mul x x-0))) (3 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))
-  (label 77)
-  (parent 67)
-  (unrealized (2 0) (4 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (gen) (mul x x-0)))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (precedes ((0 0) (2 0)) ((0 0) (4 0)) ((2 1) (1 0)) ((3 0) (2 0))
-    ((3 0) (4 0)) ((3 2) (0 1)) ((4 1) (3 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))
-    (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-      (exp (gen) (mul x x-0))) (3 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))
-  (label 78)
-  (parent 69)
-  (unrealized (1 0) (2 0) (4 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (precedes ((0 0) (2 0)) ((0 0) (4 0)) ((2 1) (1 0)) ((3 0) (2 0))
-    ((3 0) (4 0)) ((3 2) (0 1)) ((4 1) (3 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))
-    (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-      (exp (gen) (mul x x-0))) (3 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x)))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))
-  (label 79)
-  (parent 71)
-  (unrealized (2 0) (4 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 x-1 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-1)) (x x))
-  (deflistener (exp (gen) (mul x x-1)))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))
-  (defstrand init 1 (x x-0))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-1))
-  (deflistener (exp (gen) (mul x x-1)))
-  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((2 1) (1 0)) ((3 0) (0 1))
-    ((3 0) (2 0)) ((4 0) (2 0)) ((4 0) (5 0)) ((4 2) (0 1))
-    ((5 1) (4 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0 x-1)
-  (precur (2 0))
-  (operation encryption-test (added-listener (exp (gen) (mul x x-1)))
-    (enc (enc (exp (gen) x) (exp (gen) x-1) (privk b-0))
-      (exp (gen) (mul x x-1))) (4 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-1)
-          (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-1)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-1) (privk a))
-          (exp (gen) (mul x x-1)))))
-    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) x-1))))
-    ((send (exp (gen) x-0)))
-    ((send (exp (gen) x-1))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-1) (privk b-0))
-            (exp (gen) (mul x x-1)))))
-      (send
-        (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-1)))))
-    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1)))))
-  (label 80)
-  (parent 72)
-  (unrealized (1 0) (2 0) (5 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 b-1 name) (h base) (x y x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) x-0)))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (defstrand init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((2 1) (1 0)) ((3 1) (0 1))
-    ((3 1) (2 0)) ((4 0) (2 0)) ((4 0) (5 0)) ((4 2) (0 1))
-    ((5 1) (4 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y x-0)
-  (precur (2 0))
-  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))
-    (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))
-      (exp (gen) (mul x x-0))) (4 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) x-0)))
-      (send (cat (exp (gen) y) (mul x (rec y) x-0))))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))
-  (label 81)
-  (parent 74)
-  (unrealized (1 0) (2 0) (5 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((2 1) (1 0)) ((3 0) (2 0))
-    ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x) x-0))
-    (exp (gen) (mul x x-0)) (4 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0))))
-  (label 82)
-  (parent 77)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((2 1) (1 0)) ((3 0) (2 0))
-    ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x-0) x))
-    (exp (gen) (mul x x-0)) (4 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))
-  (label 83)
-  (parent 77)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (gen) (mul x x-0)))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((2 1) (1 0)) ((3 0) (2 0))
-    ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x) x-0))
-    (exp (gen) (mul x x-0)) (4 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0))))
-  (label 84)
-  (parent 78)
-  (unrealized (1 0) (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (gen) (mul x x-0)))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((2 1) (1 0)) ((3 0) (2 0))
-    ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x-0) x))
-    (exp (gen) (mul x x-0)) (4 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))
-  (label 85)
-  (parent 78)
-  (unrealized (1 0) (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((2 1) (1 0)) ((3 0) (2 0))
-    ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x) x-0))
-    (exp (gen) (mul x x-0)) (4 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x)))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0))))
-  (label 86)
-  (parent 79)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((2 1) (1 0)) ((3 0) (2 0))
-    ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x-0) x))
-    (exp (gen) (mul x x-0)) (4 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x)))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))
-  (label 87)
-  (parent 79)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 x-1 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-1)) (x x))
-  (deflistener (exp (gen) (mul x x-1)))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))
-  (defstrand init 1 (x x-0))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-1))
-  (deflistener (exp (gen) (mul x x-1)))
-  (deflistener (cat (exp (gen) x) x-1))
-  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((2 1) (1 0)) ((3 0) (0 1))
-    ((3 0) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))
-    ((5 1) (4 1)) ((6 1) (5 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0 x-1)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x) x-1))
-    (exp (gen) (mul x x-1)) (5 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-1)
-          (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-1)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-1) (privk a))
-          (exp (gen) (mul x x-1)))))
-    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) x-1))))
-    ((send (exp (gen) x-0)))
-    ((send (exp (gen) x-1))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-1) (privk b-0))
-            (exp (gen) (mul x x-1)))))
-      (send
-        (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-1)))))
-    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))
-    ((recv (cat (exp (gen) x) x-1)) (send (cat (exp (gen) x) x-1))))
-  (label 88)
-  (parent 80)
-  (unrealized (1 0) (2 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (x x-0 x-1 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-1)) (x x))
-  (deflistener (exp (gen) (mul x x-1)))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))
-  (defstrand init 1 (x x-0))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-1))
-  (deflistener (exp (gen) (mul x x-1)))
-  (deflistener (cat (exp (gen) x-1) x))
-  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((2 1) (1 0)) ((3 0) (0 1))
-    ((3 0) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))
-    ((5 1) (4 1)) ((6 1) (5 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0 x-1)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x-1) x))
-    (exp (gen) (mul x x-1)) (5 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-1)
-          (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-1)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-1) (privk a))
-          (exp (gen) (mul x x-1)))))
-    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) x-1))))
-    ((send (exp (gen) x-0)))
-    ((send (exp (gen) x-1))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-1) (privk b-0))
-            (exp (gen) (mul x x-1)))))
-      (send
-        (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-1)))))
-    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))
-    ((recv (cat (exp (gen) x-1) x)) (send (cat (exp (gen) x-1) x))))
-  (label 89)
-  (parent 80)
-  (unrealized (1 0) (2 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 b-1 name) (h base) (x y x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) x-0)))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (defstrand init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((2 1) (1 0)) ((3 1) (0 1))
-    ((3 1) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))
-    ((5 1) (4 1)) ((6 1) (5 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y x-0)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x) x-0))
-    (exp (gen) (mul x x-0)) (5 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) x-0)))
-      (send (cat (exp (gen) y) (mul x (rec y) x-0))))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0))))
-  (label 90)
-  (parent 81)
-  (unrealized (1 0) (2 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 b-1 name) (h base) (x y x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) x-0)))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (defstrand init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((2 1) (1 0)) ((3 1) (0 1))
-    ((3 1) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))
-    ((5 1) (4 1)) ((6 1) (5 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y x-0)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x-0) x))
-    (exp (gen) (mul x x-0)) (5 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) x-0)))
-      (send (cat (exp (gen) y) (mul x (rec y) x-0))))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))
-  (label 91)
-  (parent 81)
-  (unrealized (1 0) (2 0) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
-
-(defprotocol station-to-station diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))
-      (send (privk a)))
-    (uniq-gen x))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y)))
-      (send (privk b)))
-    (uniq-gen y))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-to-station
-  (vars (a b name) (h base) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h h) (y y))
-  (deflistener (exp h y))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y))))
-    ((recv (exp h y)) (send (exp h y))))
-  (label 92)
-  (unrealized (0 2) (1 0))
-  (preskeleton)
-  (origs)
-  (comment "Not a skeleton"))
-
-(defskeleton station-to-station
-  (vars (a b name) (h base) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h h) (y y))
-  (deflistener (exp h y))
-  (precedes ((0 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y))))
-    ((recv (exp h y)) (send (exp h y))))
-  (label 93)
-  (parent 92)
-  (unrealized (0 2) (1 0))
-  (origs)
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h (gen)) (y y))
-  (deflistener (exp (gen) y))
-  (precedes ((0 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (operation nonce-test (displaced 2 0 resp 2) (exp (gen) y-0) (1 0))
-  (traces
-    ((recv (gen))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (gen) (privk b)) (exp (gen) y))))
-      (recv (enc (enc (gen) (exp (gen) y) (privk a)) (exp (gen) y))))
-    ((recv (exp (gen) y)) (send (exp (gen) y))))
-  (label 94)
-  (parent 93)
-  (unrealized (0 2))
-  (dead)
-  (origs)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b name) (h base) (y rndx) (w expt))
-  (defstrand resp 3 (a a) (b b) (h h) (y y))
-  (deflistener (exp h y))
-  (deflistener (cat (exp h (mul y (rec w))) w))
-  (precedes ((0 1) (2 0)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp h (mul y (rec w))) w))
-    (exp h y) (1 0))
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y))))
-    ((recv (exp h y)) (send (exp h y)))
-    ((recv (cat (exp h (mul y (rec w))) w))
-      (send (cat (exp h (mul y (rec w))) w))))
-  (label 95)
-  (parent 93)
-  (unrealized (0 2) (2 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (w expt) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) w)) (y y))
-  (deflistener (exp (gen) (mul w y)))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 1) (2 0)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (precur (2 0))
-  (operation nonce-test (displaced 3 0 resp 2) (exp (gen) y-0) (2 0))
-  (traces
-    ((recv (exp (gen) w))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) w) (privk b))
-            (exp (gen) (mul w y)))))
-      (recv
-        (enc (enc (exp (gen) w) (exp (gen) y) (privk a))
-          (exp (gen) (mul w y)))))
-    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 96)
-  (parent 95)
-  (unrealized (0 2))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (2 0)) ((0 1) (3 1)) ((2 1) (1 0)) ((3 0) (0 0))
-    ((3 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (precur (2 0))
-  (operation encryption-test (added-strand init 3)
-    (enc (exp (gen) x) (exp (gen) y) (privk a)) (0 2))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x))))))
-  (label 97)
-  (parent 96)
-  (unrealized (2 0) (3 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (x y rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (2 0)) ((0 1) (3 1)) ((2 1) (1 0)) ((3 0) (0 0))
-    ((3 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation encryption-test (displaced 4 0 resp 2)
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul x y))) (3 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y))))))
-  (label 98)
-  (parent 97)
-  (unrealized (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (precedes ((0 1) (2 0)) ((0 1) (4 0)) ((2 1) (1 0)) ((3 0) (0 0))
-    ((3 2) (0 2)) ((4 1) (3 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (precur (2 0))
-  (operation encryption-test (added-listener (exp (gen) (mul y x)))
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul y x))) (3 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x)))))
-  (label 99)
-  (parent 97)
-  (unrealized (2 0) (4 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (precedes ((0 1) (2 0)) ((0 1) (5 0)) ((2 1) (1 0)) ((3 0) (0 0))
-    ((3 2) (0 2)) ((4 1) (3 1)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) y) x))
-    (exp (gen) (mul y x)) (4 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
-  (label 100)
-  (parent 99)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) x) y))
-  (precedes ((0 1) (2 0)) ((0 1) (5 0)) ((2 1) (1 0)) ((3 0) (0 0))
-    ((3 2) (0 2)) ((4 1) (3 1)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x) y))
-    (exp (gen) (mul y x)) (4 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
-  (label 101)
-  (parent 99)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
-
-(defprotocol station-to-station diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))
-      (send (privk a)))
-    (uniq-gen x))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y)))
-      (send (privk b)))
-    (uniq-gen y))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-to-station
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b))))
-  (label 102)
-  (unrealized (1 2))
-  (origs ((privk b) (1 3)) ((privk a) (0 3)))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b name) (y x rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a) (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (1 0)) ((0 2) (1 2)) ((1 1) (0 1)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (operation encryption-test (displaced 2 0 init 3)
-    (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
-      (exp (gen) (mul y x))) (1 2))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))) (send (privk b))))
-  (label 103)
-  (parent 102)
-  (realized)
-  (shape)
-  (maps ((0 1) ((a a) (b b) (x x) (y y) (a-0 a))))
-  (origs ((privk b) (1 3)) ((privk a) (0 3))))
-
-(defskeleton station-to-station
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (2 0)) ((2 1) (1 2)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation encryption-test (added-listener (exp (gen) (mul x y)))
-    (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
-      (exp (gen) (mul x y))) (1 2))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b)))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
-  (label 104)
-  (parent 102)
-  (unrealized (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) x) y))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((2 1) (1 2))
-    ((3 1) (2 0)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation nonce-test (added-listener (cat (exp (gen) x) y))
-    (exp (gen) (mul x y)) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b)))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
-  (label 105)
-  (parent 104)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) y) x))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((2 1) (1 2))
-    ((3 1) (2 0)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation nonce-test (added-listener (cat (exp (gen) y) x))
-    (exp (gen) (mul x y)) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b)))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
-  (label 106)
-  (parent 104)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
-
-(defprotocol station-to-station diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))
-      (send (privk a)))
-    (uniq-gen x))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y)))
-      (send (privk b)))
-    (uniq-gen y))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-to-station
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b)))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
-  (label 107)
-  (unrealized (1 2) (2 0))
-  (preskeleton)
-  (origs ((privk b) (1 3)) ((privk a) (0 3)))
-  (comment "Not a skeleton"))
-
-(defskeleton station-to-station
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (2 0)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b)))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
-  (label 108)
-  (parent 107)
-  (unrealized (1 2) (2 0))
-  (origs ((privk b) (1 3)) ((privk a) (0 3)))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) x) y))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((3 1) (2 0)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation nonce-test (added-listener (cat (exp (gen) x) y))
-    (exp (gen) (mul x y)) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b)))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
-  (label 109)
-  (parent 108)
-  (unrealized (1 2) (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) y) x))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((3 1) (2 0)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation nonce-test (added-listener (cat (exp (gen) y) x))
-    (exp (gen) (mul x y)) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b)))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
-  (label 110)
-  (parent 108)
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/sts.scm")
+(comment "Strand count bounded at 20")
+
+(defprotocol station-to-station diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a)))
+    (uniq-gen x))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b)))
+    (uniq-gen y)
+    (absent (y chi)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-to-station
+  (vars (a b name) (x rndx) (eta expt))
+  (defstrand init 3 (a a) (b b) (x x) (eta eta))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta))))))
+  (label 0)
+  (unrealized (0 1))
+  (origs)
+  (ugens (x (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station
+  (vars (a b b-0 name) (x x-0 rndx))
+  (defstrand init 3 (a a) (b b) (x x-0) (eta x))
+  (defstrand init 3 (a b) (b b-0) (x x) (eta x-0))
+  (precedes ((0 0) (1 1)) ((1 2) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x x-0)
+  (operation encryption-test (added-strand init 3)
+    (enc (exp (gen) x) (exp (gen) x-0) (privk b)) (0 1))
+  (strand-map 0)
+  (traces
+    ((send (exp (gen) x-0))
+      (recv
+        (cat (exp (gen) x)
+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))
+          (exp (gen) (mul x x-0)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) x-0)
+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+          (exp (gen) (mul x x-0))))))
+  (label 1)
+  (parent 0)
+  (unrealized (1 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton station-to-station
+  (vars (a b name) (y x rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (defstrand resp 2 (b b) (y y) (chi x))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation encryption-test (added-strand resp 2)
+    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
+  (strand-map 0)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (x x) (eta y))))
+  (origs)
+  (ugens (y (1 1)) (x (0 0))))
+
+(defskeleton station-to-station
+  (vars (a b b-0 name) (x x-0 rndx))
+  (defstrand init 3 (a a) (b b) (x x-0) (eta x))
+  (defstrand init 3 (a b) (b b-0) (x x) (eta x-0))
+  (deflistener (exp (gen) (mul x x-0)))
+  (precedes ((0 0) (2 0)) ((1 0) (2 0)) ((1 2) (0 1)) ((2 1) (1 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x x-0)
+  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))
+    (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+      (exp (gen) (mul x x-0))) (1 1))
+  (strand-map 0 1)
+  (traces
+    ((send (exp (gen) x-0))
+      (recv
+        (cat (exp (gen) x)
+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))
+          (exp (gen) (mul x x-0)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) x-0)
+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))
+  (label 3)
+  (parent 1)
+  (unrealized (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station
+  (vars (a b b-0 name) (x x-0 rndx))
+  (defstrand init 3 (a a) (b b) (x x-0) (eta x))
+  (defstrand init 3 (a b) (b b-0) (x x) (eta x-0))
+  (deflistener (exp (gen) (mul x x-0)))
+  (deflistener (cat (exp (gen) x) x-0))
+  (precedes ((0 0) (3 0)) ((1 0) (3 0)) ((1 2) (0 1)) ((2 1) (1 1))
+    ((3 1) (2 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x x-0)
+  (operation nonce-test (added-listener (cat (exp (gen) x) x-0))
+    (exp (gen) (mul x x-0)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x-0))
+      (recv
+        (cat (exp (gen) x)
+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))
+          (exp (gen) (mul x x-0)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) x-0)
+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
+    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0))))
+  (label 4)
+  (parent 3)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-to-station
+  (vars (a b b-0 name) (x x-0 rndx))
+  (defstrand init 3 (a a) (b b) (x x-0) (eta x))
+  (defstrand init 3 (a b) (b b-0) (x x) (eta x-0))
+  (deflistener (exp (gen) (mul x x-0)))
+  (deflistener (cat (exp (gen) x-0) x))
+  (precedes ((0 0) (3 0)) ((1 0) (3 0)) ((1 2) (0 1)) ((2 1) (1 1))
+    ((3 1) (2 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x x-0)
+  (operation nonce-test (added-listener (cat (exp (gen) x-0) x))
+    (exp (gen) (mul x x-0)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x-0))
+      (recv
+        (cat (exp (gen) x)
+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))
+          (exp (gen) (mul x x-0)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) x-0)
+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))
+  (label 5)
+  (parent 3)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol station-to-station diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a)))
+    (uniq-gen x))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b)))
+    (uniq-gen y)
+    (absent (y chi)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-to-station
+  (vars (a b name) (y rndx) (chi expt))
+  (defstrand resp 3 (a a) (b b) (y y) (chi chi))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y)
+  (absent (y chi))
+  (traces
+    ((recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi))))))
+  (label 6)
+  (unrealized (0 2))
+  (origs)
+  (ugens (y (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton station-to-station
+  (vars (a b b-0 name) (x y rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation encryption-test (added-strand init 3)
+    (enc (exp (gen) x) (exp (gen) y) (privk a)) (0 2))
+  (strand-map 0)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y))))))
+  (label 7)
+  (parent 6)
+  (unrealized (1 1))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station
+  (vars (a b name) (y x rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation encryption-test (displaced 2 0 resp 2)
+    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+      (exp (gen) (mul y x))) (1 1))
+  (strand-map 0 1)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x))))))
+  (label 8)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (y y) (chi x))))
+  (origs)
+  (ugens (y (0 1)) (x (1 0))))
+
+(defskeleton station-to-station
+  (vars (a b b-0 name) (x y rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (deflistener (exp (gen) (mul x y)))
+  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation encryption-test (added-listener (exp (gen) (mul x y)))
+    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+      (exp (gen) (mul x y))) (1 1))
+  (strand-map 0 1)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
+  (label 9)
+  (parent 7)
+  (unrealized (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station
+  (vars (a b b-0 name) (x y rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) x) y))
+  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))
+    ((3 1) (2 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) x) y))
+    (exp (gen) (mul x y)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
+  (label 10)
+  (parent 9)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-to-station
+  (vars (a b b-0 name) (x y rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) y) x))
+  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))
+    ((3 1) (2 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) y) x))
+    (exp (gen) (mul x y)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
+  (label 11)
+  (parent 9)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol station-to-station diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a)))
+    (uniq-gen x))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b)))
+    (uniq-gen y)
+    (absent (y chi)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-to-station
+  (vars (a b name) (x rndx) (eta expt))
+  (defstrand init 3 (a a) (b b) (x x) (eta eta))
+  (deflistener (exp (gen) (mul x eta)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta)))))
+    ((recv (exp (gen) (mul x eta))) (send (exp (gen) (mul x eta)))))
+  (label 12)
+  (unrealized (0 1) (1 0))
+  (preskeleton)
+  (origs)
+  (ugens (x (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton station-to-station
+  (vars (a b name) (x rndx) (eta expt))
+  (defstrand init 3 (a a) (b b) (x x) (eta eta))
+  (deflistener (exp (gen) (mul x eta)))
+  (precedes ((0 0) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta)))))
+    ((recv (exp (gen) (mul x eta))) (send (exp (gen) (mul x eta)))))
+  (label 13)
+  (parent 12)
+  (unrealized (0 1))
+  (origs)
+  (ugens (x (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station
+  (vars (a b b-0 name) (x x-0 rndx))
+  (defstrand init 3 (a a) (b b) (x x-0) (eta x))
+  (deflistener (exp (gen) (mul x x-0)))
+  (defstrand init 3 (a b) (b b-0) (x x) (eta x-0))
+  (precedes ((0 0) (1 0)) ((0 0) (2 1)) ((2 0) (1 0)) ((2 2) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x x-0)
+  (operation encryption-test (added-strand init 3)
+    (enc (exp (gen) x) (exp (gen) x-0) (privk b)) (0 1))
+  (strand-map 0 1)
+  (traces
+    ((send (exp (gen) x-0))
+      (recv
+        (cat (exp (gen) x)
+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) x-0)
+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+          (exp (gen) (mul x x-0))))))
+  (label 14)
+  (parent 13)
+  (unrealized (1 0) (2 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton station-to-station
+  (vars (a b name) (y x rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand resp 2 (b b) (y y) (chi x))
+  (precedes ((0 0) (2 0)) ((2 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation encryption-test (added-strand resp 2)
+    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
+  (strand-map 0 1)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))))
+  (label 15)
+  (parent 13)
+  (unrealized (1 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station
+  (vars (a b b-0 name) (x x-0 rndx))
+  (defstrand init 3 (a a) (b b) (x x-0) (eta x))
+  (deflistener (exp (gen) (mul x x-0)))
+  (defstrand init 3 (a b) (b b-0) (x x) (eta x-0))
+  (deflistener (exp (gen) (mul x x-0)))
+  (precedes ((0 0) (1 0)) ((0 0) (3 0)) ((2 0) (1 0)) ((2 0) (3 0))
+    ((2 2) (0 1)) ((3 1) (2 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x x-0)
+  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))
+    (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+      (exp (gen) (mul x x-0))) (2 1))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x-0))
+      (recv
+        (cat (exp (gen) x)
+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) x-0)
+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))
+  (label 16)
+  (parent 14)
+  (unrealized (1 0) (3 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station
+  (vars (a b name) (y x rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand resp 2 (b b) (y y) (chi x))
+  (deflistener (cat (exp (gen) y) x))
+  (precedes ((0 0) (2 0)) ((2 1) (0 1)) ((2 1) (3 0)) ((3 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) y) x))
+    (exp (gen) (mul y x)) (1 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x))))))
+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
+  (label 17)
+  (parent 15)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-to-station
+  (vars (a b name) (y x rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand resp 2 (b b) (y y) (chi x))
+  (deflistener (cat (exp (gen) x) y))
+  (precedes ((0 0) (2 0)) ((2 1) (0 1)) ((2 1) (3 0)) ((3 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) x) y))
+    (exp (gen) (mul y x)) (1 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x))))))
+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
+  (label 18)
+  (parent 15)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-to-station
+  (vars (a b b-0 name) (x x-0 rndx))
+  (defstrand init 3 (a a) (b b) (x x-0) (eta x))
+  (deflistener (exp (gen) (mul x x-0)))
+  (defstrand init 3 (a b) (b b-0) (x x) (eta x-0))
+  (deflistener (exp (gen) (mul x x-0)))
+  (deflistener (cat (exp (gen) x) x-0))
+  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((2 0) (1 0)) ((2 0) (4 0))
+    ((2 2) (0 1)) ((3 1) (2 1)) ((4 1) (3 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x x-0)
+  (operation nonce-test (added-listener (cat (exp (gen) x) x-0))
+    (exp (gen) (mul x x-0)) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (exp (gen) x-0))
+      (recv
+        (cat (exp (gen) x)
+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) x-0)
+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
+    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0))))
+  (label 19)
+  (parent 16)
+  (unrealized (1 0) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-to-station
+  (vars (a b b-0 name) (x x-0 rndx))
+  (defstrand init 3 (a a) (b b) (x x-0) (eta x))
+  (deflistener (exp (gen) (mul x x-0)))
+  (defstrand init 3 (a b) (b b-0) (x x) (eta x-0))
+  (deflistener (exp (gen) (mul x x-0)))
+  (deflistener (cat (exp (gen) x-0) x))
+  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((2 0) (1 0)) ((2 0) (4 0))
+    ((2 2) (0 1)) ((3 1) (2 1)) ((4 1) (3 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x x-0)
+  (operation nonce-test (added-listener (cat (exp (gen) x-0) x))
+    (exp (gen) (mul x x-0)) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (exp (gen) x-0))
+      (recv
+        (cat (exp (gen) x)
+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) x-0)
+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))
+  (label 20)
+  (parent 16)
+  (unrealized (1 0) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol station-to-station diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a)))
+    (uniq-gen x))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b)))
+    (uniq-gen y)
+    (absent (y chi)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-to-station
+  (vars (a b name) (y rndx) (chi expt))
+  (defstrand resp 3 (a a) (b b) (y y) (chi chi))
+  (deflistener (exp (gen) (mul y chi)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y)
+  (absent (y chi))
+  (traces
+    ((recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi)))))
+    ((recv (exp (gen) (mul y chi))) (send (exp (gen) (mul y chi)))))
+  (label 21)
+  (unrealized (0 2) (1 0))
+  (preskeleton)
+  (origs)
+  (ugens (y (0 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton station-to-station
+  (vars (a b name) (y rndx) (chi expt))
+  (defstrand resp 3 (a a) (b b) (y y) (chi chi))
+  (deflistener (exp (gen) (mul y chi)))
+  (precedes ((0 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y)
+  (absent (y chi))
+  (traces
+    ((recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi)))))
+    ((recv (exp (gen) (mul y chi))) (send (exp (gen) (mul y chi)))))
+  (label 22)
+  (parent 21)
+  (unrealized (0 2))
+  (origs)
+  (ugens (y (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton station-to-station
+  (vars (a b b-0 name) (x y rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (precedes ((0 1) (1 0)) ((0 1) (2 1)) ((2 0) (0 0)) ((2 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation encryption-test (added-strand init 3)
+    (enc (exp (gen) x) (exp (gen) y) (privk a)) (0 2))
+  (strand-map 0 1)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y))))))
+  (label 23)
+  (parent 22)
+  (unrealized (1 0) (2 1))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station
+  (vars (a b name) (y x rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (precedes ((0 1) (1 0)) ((0 1) (2 1)) ((2 0) (0 0)) ((2 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation encryption-test (displaced 3 0 resp 2)
+    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+      (exp (gen) (mul y x))) (2 1))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x))))))
+  (label 24)
+  (parent 23)
+  (unrealized (1 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station
+  (vars (a b b-0 name) (x y rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (deflistener (exp (gen) (mul x y)))
+  (precedes ((0 1) (1 0)) ((0 1) (3 0)) ((2 0) (0 0)) ((2 2) (0 2))
+    ((3 1) (2 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation encryption-test (added-listener (exp (gen) (mul x y)))
+    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+      (exp (gen) (mul x y))) (2 1))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
+  (label 25)
+  (parent 23)
+  (unrealized (1 0) (3 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station
+  (vars (a b name) (y x rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (deflistener (cat (exp (gen) y) x))
+  (precedes ((0 1) (2 1)) ((0 1) (3 0)) ((2 0) (0 0)) ((2 2) (0 2))
+    ((3 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) y) x))
+    (exp (gen) (mul y x)) (1 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
+  (label 26)
+  (parent 24)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-to-station
+  (vars (a b name) (y x rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (deflistener (cat (exp (gen) x) y))
+  (precedes ((0 1) (2 1)) ((0 1) (3 0)) ((2 0) (0 0)) ((2 2) (0 2))
+    ((3 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) x) y))
+    (exp (gen) (mul y x)) (1 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
+  (label 27)
+  (parent 24)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-to-station
+  (vars (a b b-0 name) (x y rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) x) y))
+  (precedes ((0 1) (1 0)) ((0 1) (4 0)) ((2 0) (0 0)) ((2 2) (0 2))
+    ((3 1) (2 1)) ((4 1) (3 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) x) y))
+    (exp (gen) (mul x y)) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
+  (label 28)
+  (parent 25)
+  (unrealized (1 0) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-to-station
+  (vars (a b b-0 name) (x y rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) y) x))
+  (precedes ((0 1) (1 0)) ((0 1) (4 0)) ((2 0) (0 0)) ((2 2) (0 2))
+    ((3 1) (2 1)) ((4 1) (3 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) y) x))
+    (exp (gen) (mul x y)) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
+  (label 29)
+  (parent 25)
+  (unrealized (1 0) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol station-to-station diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a)))
+    (uniq-gen x))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b)))
+    (uniq-gen y)
+    (absent (y chi)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-to-station
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b))))
+  (label 30)
+  (unrealized (1 2))
+  (origs ((privk b) (1 3)) ((privk a) (0 3)))
+  (ugens (y (1 1)) (x (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station
+  (vars (a b name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a) (b b) (y y) (chi x))
+  (precedes ((0 0) (1 0)) ((0 2) (1 2)) ((1 1) (0 1)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation encryption-test (displaced 2 0 init 3)
+    (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+      (exp (gen) (mul x y))) (1 2))
+  (strand-map 0 1)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk b))))
+  (label 31)
+  (parent 30)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (x x) (y y) (a-0 a))))
+  (origs ((privk b) (1 3)) ((privk a) (0 3)))
+  (ugens (x (0 0)) (y (1 1))))
+
+(defskeleton station-to-station
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (2 0)) ((2 1) (1 2)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation encryption-test (added-listener (exp (gen) (mul x y)))
+    (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+      (exp (gen) (mul x y))) (1 2))
+  (strand-map 0 1)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
+  (label 32)
+  (parent 30)
+  (unrealized (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) x) y))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((2 1) (1 2))
+    ((3 1) (2 0)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) x) y))
+    (exp (gen) (mul x y)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
+  (label 33)
+  (parent 32)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-to-station
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) y) x))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((2 1) (1 2))
+    ((3 1) (2 0)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) y) x))
+    (exp (gen) (mul x y)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
+  (label 34)
+  (parent 32)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol station-to-station diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a)))
+    (uniq-gen x))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b)))
+    (uniq-gen y)
+    (absent (y chi)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-to-station
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
+  (label 35)
+  (unrealized (1 2) (2 0))
+  (preskeleton)
+  (origs ((privk b) (1 3)) ((privk a) (0 3)))
+  (ugens (y (1 1)) (x (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton station-to-station
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (2 0)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
+  (label 36)
+  (parent 35)
+  (unrealized (1 2) (2 0))
+  (origs ((privk b) (1 3)) ((privk a) (0 3)))
+  (ugens (y (1 1)) (x (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) x) y))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((3 1) (2 0)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) x) y))
+    (exp (gen) (mul x y)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
+  (label 37)
+  (parent 36)
+  (unrealized (1 2) (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-to-station
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) y) x))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((3 1) (2 0)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) y) x))
+    (exp (gen) (mul x y)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
+  (label 38)
+  (parent 36)
   (unrealized (1 2) (3 0))
   (dead)
   (comment "empty cohort"))
diff --git a/tst/sts_non_role.scm b/tst/sts_non_role.scm
new file mode 100644
--- /dev/null
+++ b/tst/sts_non_role.scm
@@ -0,0 +1,98 @@
+;;; Station-to-station
+
+;;; This is an authenticated form of a Diffie-Hellman key exchange.
+
+;;; The file contains one model of the station-to-station protocol.
+;;; An assumption is made that *any* initiator or responder properly
+;;; picks a fresh random exponent and does not allow it to be obtained
+;;; by the adversary.
+
+(herald "Station-to-station protocol:  Weakened version"
+	(bound 20)
+	(algebra diffie-hellman))
+
+(defprotocol station-weak diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace
+     (send (exp (gen) x))
+     (recv (cat (exp (gen) eta)
+		(enc (enc (exp (gen) eta)
+			  (exp (gen) x) (privk b))
+		     (exp (exp (gen) eta) x))))
+     (send (enc (enc (exp (gen) x)
+		     (exp (gen) eta) (privk a))
+		(exp (exp (gen) eta) x)))
+     (send (privk a)))
+    ;; (uniq-gen x)
+    )
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace
+     (recv (exp (gen) chi))
+     (send (cat (exp (gen) y)
+		(enc (enc (exp (gen) y)
+			  (exp (gen) chi) (privk b))
+		     (exp (exp (gen) chi) y))))
+     (recv (enc (enc (exp (gen) chi)
+		     (exp (gen) y) (privk a))
+		(exp (exp (gen) chi) y)))
+     (send (privk b)))
+    ;; (uniq-gen y)
+    ))
+
+(defskeleton station-weak
+  (vars (a b name) (x y rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (uniq-gen x y)
+  (non-orig (privk b) (privk a))
+)
+
+(defskeleton station-weak
+  (vars (a b name) (x y rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (uniq-gen x y)
+  (non-orig (privk a) (privk b))
+  )
+
+(defskeleton station-weak
+  (vars (a b name) (x y rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (deflistener (exp (exp (gen) y) x))
+  (uniq-gen x y)
+  (non-orig (privk b) (privk a)))
+
+(defskeleton station-weak
+  (vars (a b name) (x rndx) (eta expt))
+  (defstrand init 3 (a a) (b b) (x x) (eta eta))
+  (deflistener (exp (exp (gen) eta) x))
+  (uniq-gen x)
+  (non-orig (privk b) (privk a)))
+
+
+(defskeleton station-weak
+  (vars (a b name) (y rndx) (chi expt))
+  (defstrand resp 3 (a a) (b b) (y y) (chi chi))
+  (deflistener (exp (exp (gen) chi) y))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y)
+)
+
+(defskeleton station-weak
+  (vars (a b name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (eta y) (x x))
+  (defstrand resp 4 (b b) (chi x) (y y))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-gen x y)
+  (uniq-orig (privk b) (privk a))
+  )
+
+(defskeleton station-weak 
+  (vars (a b name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (eta y) (x x))
+  (defstrand resp 4 (b b) (chi x) (y y))
+  (deflistener (exp (gen) (mul x y)))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-gen x y)
+  (uniq-orig (privk b) (privk a))
+  )
diff --git a/tst/sts_non_role.tst b/tst/sts_non_role.tst
new file mode 100644
--- /dev/null
+++ b/tst/sts_non_role.tst
@@ -0,0 +1,1461 @@
+(herald "Station-to-station protocol:  Weakened version" (bound 20)
+  (algebra diffie-hellman))
+
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/sts_non_role.scm")
+(comment "Strand count bounded at 20")
+
+(defprotocol station-weak diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a))))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-weak
+  (vars (a b name) (x y rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y))))))
+  (label 0)
+  (unrealized (0 1))
+  (origs)
+  (ugens (x (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-weak
+  (vars (a b b-0 name) (x x-0 rndx))
+  (defstrand init 3 (a a) (b b) (x x-0) (eta x))
+  (defstrand init 3 (a b) (b b-0) (x x) (eta x-0))
+  (precedes ((0 0) (1 1)) ((1 2) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x x-0)
+  (operation encryption-test (added-strand init 3)
+    (enc (exp (gen) x) (exp (gen) x-0) (privk b)) (0 1))
+  (strand-map 0)
+  (traces
+    ((send (exp (gen) x-0))
+      (recv
+        (cat (exp (gen) x)
+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))
+          (exp (gen) (mul x x-0)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) x-0)
+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+          (exp (gen) (mul x x-0))))))
+  (label 1)
+  (parent 0)
+  (unrealized (1 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton station-weak
+  (vars (a b name) (y x rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (defstrand resp 2 (b b) (y y) (chi x))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (operation encryption-test (added-strand resp 2)
+    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
+  (strand-map 0)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (x x) (y y))))
+  (origs)
+  (ugens (x (0 0)) (y (1 1))))
+
+(defskeleton station-weak
+  (vars (a b b-0 name) (x x-0 rndx))
+  (defstrand init 3 (a a) (b b) (x x-0) (eta x))
+  (defstrand init 3 (a b) (b b-0) (x x) (eta x-0))
+  (deflistener (exp (gen) (mul x x-0)))
+  (precedes ((0 0) (2 0)) ((1 0) (2 0)) ((1 2) (0 1)) ((2 1) (1 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x x-0)
+  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))
+    (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+      (exp (gen) (mul x x-0))) (1 1))
+  (strand-map 0 1)
+  (traces
+    ((send (exp (gen) x-0))
+      (recv
+        (cat (exp (gen) x)
+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))
+          (exp (gen) (mul x x-0)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) x-0)
+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))
+  (label 3)
+  (parent 1)
+  (unrealized (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-weak
+  (vars (a b b-0 name) (x x-0 rndx))
+  (defstrand init 3 (a a) (b b) (x x-0) (eta x))
+  (defstrand init 3 (a b) (b b-0) (x x) (eta x-0))
+  (deflistener (exp (gen) (mul x x-0)))
+  (deflistener (cat (exp (gen) x) x-0))
+  (precedes ((0 0) (3 0)) ((1 0) (3 0)) ((1 2) (0 1)) ((2 1) (1 1))
+    ((3 1) (2 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x x-0)
+  (operation nonce-test (added-listener (cat (exp (gen) x) x-0))
+    (exp (gen) (mul x x-0)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x-0))
+      (recv
+        (cat (exp (gen) x)
+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))
+          (exp (gen) (mul x x-0)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) x-0)
+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
+    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0))))
+  (label 4)
+  (parent 3)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-weak
+  (vars (a b b-0 name) (x x-0 rndx))
+  (defstrand init 3 (a a) (b b) (x x-0) (eta x))
+  (defstrand init 3 (a b) (b b-0) (x x) (eta x-0))
+  (deflistener (exp (gen) (mul x x-0)))
+  (deflistener (cat (exp (gen) x-0) x))
+  (precedes ((0 0) (3 0)) ((1 0) (3 0)) ((1 2) (0 1)) ((2 1) (1 1))
+    ((3 1) (2 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x x-0)
+  (operation nonce-test (added-listener (cat (exp (gen) x-0) x))
+    (exp (gen) (mul x x-0)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x-0))
+      (recv
+        (cat (exp (gen) x)
+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))
+          (exp (gen) (mul x x-0)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) x-0)
+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))
+  (label 5)
+  (parent 3)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol station-weak diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a))))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-weak
+  (vars (a b name) (x y rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y))))))
+  (label 6)
+  (unrealized (0 2))
+  (origs)
+  (ugens (y (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton station-weak
+  (vars (a b b-0 name) (x y rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (operation encryption-test (added-strand init 3)
+    (enc (exp (gen) x) (exp (gen) y) (privk a)) (0 2))
+  (strand-map 0)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y))))))
+  (label 7)
+  (parent 6)
+  (unrealized (1 1))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-weak
+  (vars (a b name) (y x rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (operation encryption-test (displaced 2 0 resp 2)
+    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+      (exp (gen) (mul y x))) (1 1))
+  (strand-map 0 1)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x))))))
+  (label 8)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (x x) (y y))))
+  (origs)
+  (ugens (x (1 0)) (y (0 1))))
+
+(defskeleton station-weak
+  (vars (a b b-0 name) (x y rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (deflistener (exp (gen) (mul x y)))
+  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (operation encryption-test (added-listener (exp (gen) (mul x y)))
+    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+      (exp (gen) (mul x y))) (1 1))
+  (strand-map 0 1)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
+  (label 9)
+  (parent 7)
+  (unrealized (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-weak
+  (vars (a b b-0 name) (x y rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) x) y))
+  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))
+    ((3 1) (2 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (operation nonce-test (added-listener (cat (exp (gen) x) y))
+    (exp (gen) (mul x y)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
+  (label 10)
+  (parent 9)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-weak
+  (vars (a b b-0 name) (x y rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) y) x))
+  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))
+    ((3 1) (2 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (operation nonce-test (added-listener (cat (exp (gen) y) x))
+    (exp (gen) (mul x y)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
+  (label 11)
+  (parent 9)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol station-weak diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a))))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-weak
+  (vars (a b name) (x y rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (deflistener (exp (gen) (mul x y)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
+  (label 12)
+  (unrealized (0 1) (1 0))
+  (preskeleton)
+  (origs)
+  (ugens (x (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton station-weak
+  (vars (a b name) (x y rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (deflistener (exp (gen) (mul x y)))
+  (precedes ((0 0) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
+  (label 13)
+  (parent 12)
+  (unrealized (0 1))
+  (origs)
+  (ugens (x (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-weak
+  (vars (a b b-0 name) (x x-0 rndx))
+  (defstrand init 3 (a a) (b b) (x x-0) (eta x))
+  (deflistener (exp (gen) (mul x x-0)))
+  (defstrand init 3 (a b) (b b-0) (x x) (eta x-0))
+  (precedes ((0 0) (1 0)) ((0 0) (2 1)) ((2 0) (1 0)) ((2 2) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x x-0)
+  (operation encryption-test (added-strand init 3)
+    (enc (exp (gen) x) (exp (gen) x-0) (privk b)) (0 1))
+  (strand-map 0 1)
+  (traces
+    ((send (exp (gen) x-0))
+      (recv
+        (cat (exp (gen) x)
+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) x-0)
+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+          (exp (gen) (mul x x-0))))))
+  (label 14)
+  (parent 13)
+  (unrealized (1 0) (2 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton station-weak
+  (vars (a b name) (y x rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand resp 2 (b b) (y y) (chi x))
+  (precedes ((0 0) (2 0)) ((2 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (operation encryption-test (added-strand resp 2)
+    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
+  (strand-map 0 1)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))))
+  (label 15)
+  (parent 13)
+  (unrealized (1 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-weak
+  (vars (a b b-0 name) (x x-0 rndx))
+  (defstrand init 3 (a a) (b b) (x x-0) (eta x))
+  (deflistener (exp (gen) (mul x x-0)))
+  (defstrand init 3 (a b) (b b-0) (x x) (eta x-0))
+  (deflistener (exp (gen) (mul x x-0)))
+  (precedes ((0 0) (1 0)) ((0 0) (3 0)) ((2 0) (1 0)) ((2 0) (3 0))
+    ((2 2) (0 1)) ((3 1) (2 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x x-0)
+  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))
+    (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+      (exp (gen) (mul x x-0))) (2 1))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x-0))
+      (recv
+        (cat (exp (gen) x)
+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) x-0)
+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))
+  (label 16)
+  (parent 14)
+  (unrealized (1 0) (3 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-weak
+  (vars (a b name) (y x rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand resp 2 (b b) (y y) (chi x))
+  (deflistener (cat (exp (gen) y) x))
+  (precedes ((0 0) (2 0)) ((2 1) (0 1)) ((2 1) (3 0)) ((3 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (operation nonce-test (added-listener (cat (exp (gen) y) x))
+    (exp (gen) (mul y x)) (1 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x))))))
+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
+  (label 17)
+  (parent 15)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-weak
+  (vars (a b name) (y x rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand resp 2 (b b) (y y) (chi x))
+  (deflistener (cat (exp (gen) x) y))
+  (precedes ((0 0) (2 0)) ((2 1) (0 1)) ((2 1) (3 0)) ((3 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (operation nonce-test (added-listener (cat (exp (gen) x) y))
+    (exp (gen) (mul y x)) (1 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x))))))
+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
+  (label 18)
+  (parent 15)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-weak
+  (vars (a b b-0 name) (x x-0 rndx))
+  (defstrand init 3 (a a) (b b) (x x-0) (eta x))
+  (deflistener (exp (gen) (mul x x-0)))
+  (defstrand init 3 (a b) (b b-0) (x x) (eta x-0))
+  (deflistener (exp (gen) (mul x x-0)))
+  (deflistener (cat (exp (gen) x) x-0))
+  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((2 0) (1 0)) ((2 0) (4 0))
+    ((2 2) (0 1)) ((3 1) (2 1)) ((4 1) (3 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x x-0)
+  (operation nonce-test (added-listener (cat (exp (gen) x) x-0))
+    (exp (gen) (mul x x-0)) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (exp (gen) x-0))
+      (recv
+        (cat (exp (gen) x)
+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) x-0)
+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
+    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0))))
+  (label 19)
+  (parent 16)
+  (unrealized (1 0) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-weak
+  (vars (a b b-0 name) (x x-0 rndx))
+  (defstrand init 3 (a a) (b b) (x x-0) (eta x))
+  (deflistener (exp (gen) (mul x x-0)))
+  (defstrand init 3 (a b) (b b-0) (x x) (eta x-0))
+  (deflistener (exp (gen) (mul x x-0)))
+  (deflistener (cat (exp (gen) x-0) x))
+  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((2 0) (1 0)) ((2 0) (4 0))
+    ((2 2) (0 1)) ((3 1) (2 1)) ((4 1) (3 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x x-0)
+  (operation nonce-test (added-listener (cat (exp (gen) x-0) x))
+    (exp (gen) (mul x x-0)) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (exp (gen) x-0))
+      (recv
+        (cat (exp (gen) x)
+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) x-0)
+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))
+  (label 20)
+  (parent 16)
+  (unrealized (1 0) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol station-weak diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a))))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-weak
+  (vars (a b name) (x rndx) (eta expt))
+  (defstrand init 3 (a a) (b b) (x x) (eta eta))
+  (deflistener (exp (gen) (mul x eta)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta)))))
+    ((recv (exp (gen) (mul x eta))) (send (exp (gen) (mul x eta)))))
+  (label 21)
+  (unrealized (0 1) (1 0))
+  (preskeleton)
+  (origs)
+  (ugens (x (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton station-weak
+  (vars (a b name) (x rndx) (eta expt))
+  (defstrand init 3 (a a) (b b) (x x) (eta eta))
+  (deflistener (exp (gen) (mul x eta)))
+  (precedes ((0 0) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta)))))
+    ((recv (exp (gen) (mul x eta))) (send (exp (gen) (mul x eta)))))
+  (label 22)
+  (parent 21)
+  (unrealized (0 1))
+  (origs)
+  (ugens (x (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-weak
+  (vars (a b b-0 name) (x x-0 rndx))
+  (defstrand init 3 (a a) (b b) (x x-0) (eta x))
+  (deflistener (exp (gen) (mul x x-0)))
+  (defstrand init 3 (a b) (b b-0) (x x) (eta x-0))
+  (precedes ((0 0) (1 0)) ((0 0) (2 1)) ((2 2) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x-0)
+  (operation encryption-test (added-strand init 3)
+    (enc (exp (gen) x) (exp (gen) x-0) (privk b)) (0 1))
+  (strand-map 0 1)
+  (traces
+    ((send (exp (gen) x-0))
+      (recv
+        (cat (exp (gen) x)
+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))
+          (exp (gen) (mul x x-0)))))
+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) x-0)
+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x x-0)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))
+          (exp (gen) (mul x x-0))))))
+  (label 23)
+  (parent 22)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (x x-0) (eta x))))
+  (origs)
+  (ugens (x-0 (0 0))))
+
+(defskeleton station-weak
+  (vars (a b name) (y x rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand resp 2 (b b) (y y) (chi x))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((2 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x)
+  (operation encryption-test (added-strand resp 2)
+    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
+  (strand-map 0 1)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))))
+  (label 24)
+  (parent 22)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (x x) (eta y))))
+  (origs)
+  (ugens (x (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol station-weak diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a))))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-weak
+  (vars (a b name) (y rndx) (chi expt))
+  (defstrand resp 3 (a a) (b b) (y y) (chi chi))
+  (deflistener (exp (gen) (mul y chi)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y)
+  (traces
+    ((recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi)))))
+    ((recv (exp (gen) (mul y chi))) (send (exp (gen) (mul y chi)))))
+  (label 25)
+  (unrealized (0 2) (1 0))
+  (preskeleton)
+  (origs)
+  (ugens (y (0 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton station-weak
+  (vars (a b name) (y rndx) (chi expt))
+  (defstrand resp 3 (a a) (b b) (y y) (chi chi))
+  (deflistener (exp (gen) (mul y chi)))
+  (precedes ((0 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y)
+  (traces
+    ((recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi)))))
+    ((recv (exp (gen) (mul y chi))) (send (exp (gen) (mul y chi)))))
+  (label 26)
+  (parent 25)
+  (unrealized (0 2))
+  (origs)
+  (ugens (y (0 1)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-weak
+  (vars (a b b-0 name) (x y rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (precedes ((0 1) (1 0)) ((0 1) (2 1)) ((2 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y)
+  (operation encryption-test (added-strand init 3)
+    (enc (exp (gen) x) (exp (gen) y) (privk a)) (0 2))
+  (strand-map 0 1)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y))))))
+  (label 27)
+  (parent 26)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (y y) (chi x))))
+  (origs)
+  (ugens (y (0 1))))
+
+(defskeleton station-weak
+  (vars (a b name) (y y-0 rndx))
+  (defstrand resp 3 (a a) (b b) (y y-0) (chi y))
+  (deflistener (exp (gen) (mul y y-0)))
+  (defstrand resp 2 (b a) (y y) (chi y-0))
+  (precedes ((0 1) (1 0)) ((0 1) (2 0)) ((2 1) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y-0)
+  (operation encryption-test (added-strand resp 2)
+    (enc (exp (gen) y) (exp (gen) y-0) (privk a)) (0 2))
+  (strand-map 0 1)
+  (traces
+    ((recv (exp (gen) y))
+      (send
+        (cat (exp (gen) y-0)
+          (enc (enc (exp (gen) y-0) (exp (gen) y) (privk b))
+            (exp (gen) (mul y y-0)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) y-0) (privk a))
+          (exp (gen) (mul y y-0)))))
+    ((recv (exp (gen) (mul y y-0))) (send (exp (gen) (mul y y-0))))
+    ((recv (exp (gen) y-0))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) y-0) (privk a))
+            (exp (gen) (mul y y-0)))))))
+  (label 28)
+  (parent 26)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (y y-0) (chi y))))
+  (origs)
+  (ugens (y-0 (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol station-weak diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a))))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-weak
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b))))
+  (label 29)
+  (unrealized (1 2))
+  (origs ((privk b) (1 3)) ((privk a) (0 3)))
+  (ugens (x (0 0)) (y (1 1)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-weak
+  (vars (a b name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a) (b b) (y y) (chi x))
+  (precedes ((0 0) (1 0)) ((0 2) (1 2)) ((1 1) (0 1)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (operation encryption-test (displaced 2 0 init 3)
+    (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+      (exp (gen) (mul x y))) (1 2))
+  (strand-map 0 1)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk b))))
+  (label 30)
+  (parent 29)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (x x) (y y) (a-0 a))))
+  (origs ((privk b) (1 3)) ((privk a) (0 3)))
+  (ugens (x (0 0)) (y (1 1))))
+
+(defskeleton station-weak
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (2 0)) ((2 1) (1 2)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (operation encryption-test (added-listener (exp (gen) (mul x y)))
+    (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+      (exp (gen) (mul x y))) (1 2))
+  (strand-map 0 1)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
+  (label 31)
+  (parent 29)
+  (unrealized (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-weak
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) x) y))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((2 1) (1 2))
+    ((3 1) (2 0)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (operation nonce-test (added-listener (cat (exp (gen) x) y))
+    (exp (gen) (mul x y)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
+  (label 32)
+  (parent 31)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-weak
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) y) x))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((2 1) (1 2))
+    ((3 1) (2 0)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (operation nonce-test (added-listener (cat (exp (gen) y) x))
+    (exp (gen) (mul x y)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
+  (label 33)
+  (parent 31)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol station-weak diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) eta) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a))))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) chi) (exp (gen) y) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-weak
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
+  (label 34)
+  (unrealized (1 2) (2 0))
+  (preskeleton)
+  (origs ((privk b) (1 3)) ((privk a) (0 3)))
+  (ugens (x (0 0)) (y (1 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton station-weak
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (2 0)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
+  (label 35)
+  (parent 34)
+  (unrealized (1 2) (2 0))
+  (origs ((privk b) (1 3)) ((privk a) (0 3)))
+  (ugens (x (0 0)) (y (1 1)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-weak
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) x) y))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((3 1) (2 0)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (operation nonce-test (added-listener (cat (exp (gen) x) y))
+    (exp (gen) (mul x y)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
+  (label 36)
+  (parent 35)
+  (unrealized (1 2) (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-weak
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) y) x))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((3 1) (2 0)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (operation nonce-test (added-listener (cat (exp (gen) y) x))
+    (exp (gen) (mul x y)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
+  (label 37)
+  (parent 35)
+  (unrealized (1 2) (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
diff --git a/tst/sts_unflip.scm b/tst/sts_unflip.scm
deleted file mode 100644
--- a/tst/sts_unflip.scm
+++ /dev/null
@@ -1,81 +0,0 @@
-;;; Station-to-station
-
-;;; This is an authenticated form of a Diffie-Hellman key exchange.
-
-;;; The file contains a model of the station-to-station protocol.  An
-;;; assumption is made that *any* initiator or responder properly
-;;; picks a fresh random exponent and does not allow it to be obtained
-;;; by the adversary.
-
-;;; This version is weakened by not flipping the second signed msg.
-
-(herald "Station-to-station protocol unflipped" (algebra diffie-hellman))
-
-(defprotocol station-to-station-unflip diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace
-     (send (exp (gen) x))
-     (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-     (send (enc (enc h (exp (gen) x) (privk a)) (exp h x)))
-     (send (privk a)))
-    (uniq-gen x))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace
-     (recv h)
-     (send (cat (exp (gen) y) (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-     (recv (enc (enc (exp (gen) y) h (privk a)) (exp h y)))
-     (send (privk b)))
-    (uniq-gen y))
-)
-
-(defskeleton station-to-station-unflip
-  (vars (a b name))
-  (defstrand init 3 (a a) (b b))
-  (non-orig (privk b))
-)
-
-(defskeleton station-to-station-unflip
-  (vars (a b name))
-  (defstrand resp 3 (a a) (b b))
-  (non-orig (privk a))
-  )
-
-(defskeleton station-to-station-unflip
-  (vars (a b name))
-  (defstrand resp 3 (a a) (b b))
-  (non-orig (privk a))
-  (facts (neq a b))
-  )
-
-(defskeleton station-to-station-unflip
-  (vars (a b name)(x y rndx) (h base))
-  (defstrand init 3 (a a) (b b) (x x) (h h))
-  (deflistener (exp h x))
-  (non-orig (privk b) (privk a))
-)
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x y rndx)(h base))
-  (defstrand resp 3 (a a) (b b) (y y) (h h))
-  (deflistener (exp h y))
-  (non-orig (privk a) (privk b))
-)
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (uniq-orig (privk b) (privk a))
-  )
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (uniq-orig (privk b) (privk a))
-  )
diff --git a/tst/sts_unflip.tst b/tst/sts_unflip.tst
deleted file mode 100644
--- a/tst/sts_unflip.tst
+++ /dev/null
@@ -1,2966 +0,0 @@
-(herald "Station-to-station protocol unflipped"
-  (algebra diffie-hellman))
-
-(comment "CPSA 4.4.3")
-(comment "All input read from tst/sts_unflip.scm")
-
-(defprotocol station-to-station-unflip diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc h (exp (gen) x) (privk a)) (exp h x)))
-      (send (privk a)))
-    (uniq-gen x))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc (exp (gen) y) h (privk a)) (exp h y)))
-      (send (privk b)))
-    (uniq-gen y))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (h base) (x rndx))
-  (defstrand init 3 (a a) (b b) (h h) (x x))
-  (non-orig (privk b))
-  (uniq-gen x)
-  (traces
-    ((send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc h (exp (gen) x) (privk a)) (exp h x)))))
-  (label 0)
-  (unrealized (0 1))
-  (origs)
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk b))
-  (uniq-gen x y)
-  (operation encryption-test (added-strand resp 2)
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-      (exp (gen) (mul x y))) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 1)
-  (parent 0)
-  (realized)
-  (shape)
-  (maps ((0) ((a a) (b b) (x x) (h (exp (gen) y)))))
-  (origs))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (h base) (x rndx))
-  (defstrand init 3 (a a) (b b) (h h) (x x))
-  (deflistener (exp h x))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk b))
-  (uniq-gen x)
-  (operation encryption-test (added-listener (exp h x))
-    (enc (enc h (exp (gen) x) (privk b)) (exp h x)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc h (exp (gen) x) (privk a)) (exp h x))))
-    ((recv (exp h x)) (send (exp h x))))
-  (label 2)
-  (parent 0)
-  (unrealized (0 1) (1 0))
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x rndx))
-  (defstrand init 3 (a a) (b b) (h (gen)) (x x))
-  (deflistener (exp (gen) x))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk b))
-  (uniq-gen x)
-  (operation nonce-test (displaced 2 0 init 1) (exp (gen) x-0) (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (gen)
-          (enc (enc (gen) (exp (gen) x) (privk b)) (exp (gen) x))))
-      (send (enc (enc (gen) (exp (gen) x) (privk a)) (exp (gen) x))))
-    ((recv (exp (gen) x)) (send (exp (gen) x))))
-  (label 3)
-  (parent 2)
-  (unrealized (0 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (rec x))) (x x))
-  (deflistener (gen))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk b))
-  (uniq-gen x)
-  (operation nonce-test (contracted (h (exp (gen) (rec x)))) (gen)
-    (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (rec x))
-          (enc (enc (exp (gen) (rec x)) (exp (gen) x) (privk b))
-            (gen))))
-      (send
-        (enc (enc (exp (gen) (rec x)) (exp (gen) x) (privk a)) (gen))))
-    ((recv (gen)) (send (gen))))
-  (label 4)
-  (parent 2)
-  (unrealized (0 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) x-0))) (x x))
-  (deflistener (exp (gen) x-0))
-  (defstrand init 1 (x x-0))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((2 0) (1 0)))
-  (non-orig (privk b))
-  (uniq-gen x x-0)
-  (operation nonce-test (added-strand init 1) (exp (gen) x-0) (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) x-0))
-          (enc
-            (enc (exp (gen) (mul (rec x) x-0)) (exp (gen) x) (privk b))
-            (exp (gen) x-0))))
-      (send
-        (enc (enc (exp (gen) (mul (rec x) x-0)) (exp (gen) x) (privk a))
-          (exp (gen) x-0))))
-    ((recv (exp (gen) x-0)) (send (exp (gen) x-0)))
-    ((send (exp (gen) x-0))))
-  (label 5)
-  (parent 2)
-  (unrealized (0 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (h base) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) y))) (x x))
-  (deflistener (exp (gen) y))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk b))
-  (uniq-gen x y)
-  (operation nonce-test (added-strand resp 2) (exp (gen) y) (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) y))
-          (enc (enc (exp (gen) (mul (rec x) y)) (exp (gen) x) (privk b))
-            (exp (gen) y))))
-      (send
-        (enc (enc (exp (gen) (mul (rec x) y)) (exp (gen) x) (privk a))
-          (exp (gen) y)))) ((recv (exp (gen) y)) (send (exp (gen) y)))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y))))))
-  (label 6)
-  (parent 2)
-  (unrealized (0 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (h base) (x rndx) (w expt))
-  (defstrand init 3 (a a) (b b) (h h) (x x))
-  (deflistener (exp h x))
-  (deflistener (cat (exp h (mul x (rec w))) w))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk b))
-  (uniq-gen x)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp h (mul x (rec w))) w))
-    (exp h x) (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc h (exp (gen) x) (privk a)) (exp h x))))
-    ((recv (exp h x)) (send (exp h x)))
-    ((recv (cat (exp h (mul x (rec w))) w))
-      (send (cat (exp h (mul x (rec w))) w))))
-  (label 7)
-  (parent 2)
-  (unrealized (0 1) (2 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (w expt) (x rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) w)) (x x))
-  (deflistener (exp (gen) (mul w x)))
-  (deflistener (cat (exp (gen) x) w))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk b))
-  (uniq-gen x)
-  (precur (2 0))
-  (operation nonce-test (displaced 3 0 init 1) (exp (gen) x-0) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) w)
-          (enc (enc (exp (gen) w) (exp (gen) x) (privk b))
-            (exp (gen) (mul w x)))))
-      (send
-        (enc (enc (exp (gen) w) (exp (gen) x) (privk a))
-          (exp (gen) (mul w x)))))
-    ((recv (exp (gen) (mul w x))) (send (exp (gen) (mul w x))))
-    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w))))
-  (label 8)
-  (parent 7)
-  (unrealized (0 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x rndx) (w expt))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w))) (x x))
-  (deflistener (exp (gen) w))
-  (deflistener (cat (gen) w))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk b))
-  (uniq-gen x)
-  (precur (2 0))
-  (operation nonce-test (contracted (h (exp (gen) (mul (rec x) w))))
-    (gen) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) w))
-          (enc (enc (exp (gen) (mul (rec x) w)) (exp (gen) x) (privk b))
-            (exp (gen) w))))
-      (send
-        (enc (enc (exp (gen) (mul (rec x) w)) (exp (gen) x) (privk a))
-          (exp (gen) w)))) ((recv (exp (gen) w)) (send (exp (gen) w)))
-    ((recv (cat (gen) w)) (send (cat (gen) w))))
-  (label 9)
-  (parent 7)
-  (unrealized (0 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x rndx) (w expt) (x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w x-0)))
-    (x x))
-  (deflistener (exp (gen) (mul w x-0)))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 1 (x x-0))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 0) (2 0)))
-  (non-orig (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation nonce-test (added-strand init 1) (exp (gen) x-0) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) w x-0))
-          (enc
-            (enc (exp (gen) (mul (rec x) w x-0)) (exp (gen) x)
-              (privk b)) (exp (gen) (mul w x-0)))))
-      (send
-        (enc
-          (enc (exp (gen) (mul (rec x) w x-0)) (exp (gen) x) (privk a))
-          (exp (gen) (mul w x-0)))))
-    ((recv (exp (gen) (mul w x-0))) (send (exp (gen) (mul w x-0))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((send (exp (gen) x-0))))
-  (label 10)
-  (parent 7)
-  (unrealized (0 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (h base) (x rndx) (w expt) (y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w y))) (x x))
-  (deflistener (exp (gen) (mul w y)))
-  (deflistener (cat (exp (gen) y) w))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0)))
-  (non-orig (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation nonce-test (added-strand resp 2) (exp (gen) y) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) w y))
-          (enc
-            (enc (exp (gen) (mul (rec x) w y)) (exp (gen) x) (privk b))
-            (exp (gen) (mul w y)))))
-      (send
-        (enc (enc (exp (gen) (mul (rec x) w y)) (exp (gen) x) (privk a))
-          (exp (gen) (mul w y)))))
-    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y))))))
-  (label 11)
-  (parent 7)
-  (unrealized (0 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) x) y))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0)))
-  (non-orig (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 12)
-  (parent 8)
-  (unrealized (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (gen) (mul x y)))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0)))
-  (non-orig (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (gen) (mul x y))) (send (cat (gen) (mul x y))))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 13)
-  (parent 9)
-  (unrealized (1 0) (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x x-0 y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) y)))
-  (defstrand init 1 (x x-0))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 0) (2 0))
-    ((4 1) (2 0)))
-  (non-orig (privk b))
-  (uniq-gen x x-0 y)
-  (precur (2 0))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) y)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) y))))
-    ((send (exp (gen) x-0)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 14)
-  (parent 10)
-  (unrealized (1 0) (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0)))
-  (non-orig (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation encryption-test (displaced 4 3 resp 2)
-    (enc (exp (gen) y-0) (exp (gen) x) (privk b-0)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 15)
-  (parent 11)
-  (unrealized (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (h base) (x y y-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y-0)) (x x))
-  (deflistener (exp (gen) (mul x y-0)))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) y-0)))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y-0))
-  (precedes ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0))
-    ((4 1) (2 0)))
-  (non-orig (privk b))
-  (uniq-gen x y y-0)
-  (precur (2 0))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y-0) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y-0)
-          (enc (enc (exp (gen) y-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y-0)))))
-      (send
-        (enc (enc (exp (gen) y-0) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y-0)))))
-    ((recv (exp (gen) (mul x y-0))) (send (exp (gen) (mul x y-0))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) y-0)))
-      (send (cat (exp (gen) y) (mul x (rec y) y-0))))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y-0)
-          (enc (enc (exp (gen) y-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y-0)))))))
-  (label 16)
-  (parent 11)
-  (unrealized (1 0) (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
-
-(defprotocol station-to-station-unflip diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc h (exp (gen) x) (privk a)) (exp h x)))
-      (send (privk a)))
-    (uniq-gen x))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc (exp (gen) y) h (privk a)) (exp h y)))
-      (send (privk b)))
-    (uniq-gen y))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (h base) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h h) (y y))
-  (non-orig (privk a))
-  (uniq-gen y)
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc (exp (gen) y) h (privk a)) (exp h y)))))
-  (label 17)
-  (unrealized (0 2))
-  (origs)
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
-  (non-orig (privk a))
-  (uniq-gen y x)
-  (operation encryption-test (added-strand init 3)
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-      (exp (gen) (mul y x))) (0 2))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x))))))
-  (label 18)
-  (parent 17)
-  (unrealized (1 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (b name) (h base) (y rndx))
-  (defstrand resp 3 (a b) (b b) (h h) (y y))
-  (non-orig (privk b))
-  (uniq-gen y)
-  (operation encryption-test (displaced 1 0 resp 2)
-    (enc (enc (exp (gen) y) h (privk a)) (exp h y)) (0 2))
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc (exp (gen) y) h (privk b)) (exp h y)))))
-  (label 19)
-  (parent 17)
-  (realized)
-  (shape)
-  (maps ((0) ((a b) (b b) (y y) (h h))))
-  (origs))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (h base) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h h) (y y))
-  (deflistener (exp h y))
-  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
-  (non-orig (privk a))
-  (uniq-gen y)
-  (operation encryption-test (added-listener (exp h y))
-    (enc (enc (exp (gen) y) h (privk a)) (exp h y)) (0 2))
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc (exp (gen) y) h (privk a)) (exp h y))))
-    ((recv (exp h y)) (send (exp h y))))
-  (label 20)
-  (parent 17)
-  (unrealized (0 2) (1 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x y rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
-  (non-orig (privk a))
-  (uniq-gen x y)
-  (operation encryption-test (displaced 2 0 resp 2)
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul x y))) (1 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y))))))
-  (label 21)
-  (parent 18)
-  (realized)
-  (shape)
-  (maps ((0) ((a a) (b b) (y y) (h (exp (gen) x)))))
-  (origs))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1)))
-  (non-orig (privk a))
-  (uniq-gen y x)
-  (operation encryption-test (added-listener (exp (gen) (mul y x)))
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul y x))) (1 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x)))))
-  (label 22)
-  (parent 18)
-  (unrealized (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h (gen)) (y y))
-  (deflistener (exp (gen) y))
-  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
-  (non-orig (privk a))
-  (uniq-gen y)
-  (operation nonce-test (displaced 2 0 resp 2) (exp (gen) y-0) (1 0))
-  (traces
-    ((recv (gen))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (gen) (privk b)) (exp (gen) y))))
-      (recv (enc (enc (exp (gen) y) (gen) (privk a)) (exp (gen) y))))
-    ((recv (exp (gen) y)) (send (exp (gen) y))))
-  (label 23)
-  (parent 20)
-  (unrealized (0 2))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (h base) (y rndx) (w expt))
-  (defstrand resp 3 (a a) (b b) (h h) (y y))
-  (deflistener (exp h y))
-  (deflistener (cat (exp h (mul y (rec w))) w))
-  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-gen y)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp h (mul y (rec w))) w))
-    (exp h y) (1 0))
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc (exp (gen) y) h (privk a)) (exp h y))))
-    ((recv (exp h y)) (send (exp h y)))
-    ((recv (cat (exp h (mul y (rec w))) w))
-      (send (cat (exp h (mul y (rec w))) w))))
-  (label 24)
-  (parent 20)
-  (unrealized (0 2) (2 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))
-    ((3 1) (2 0)))
-  (non-orig (privk a))
-  (uniq-gen y x)
-  (operation nonce-test (added-listener (cat (exp (gen) y) x))
-    (exp (gen) (mul y x)) (2 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
-  (label 25)
-  (parent 22)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) x) y))
-  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))
-    ((3 1) (2 0)))
-  (non-orig (privk a))
-  (uniq-gen y x)
-  (operation nonce-test (added-listener (cat (exp (gen) x) y))
-    (exp (gen) (mul y x)) (2 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
-  (label 26)
-  (parent 22)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (b name) (y rndx))
-  (defstrand resp 3 (a b) (b b) (h (gen)) (y y))
-  (deflistener (exp (gen) y))
-  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
-  (non-orig (privk b))
-  (uniq-gen y)
-  (operation encryption-test (displaced 2 0 resp 2)
-    (enc (exp (gen) y) (gen) (privk a)) (0 2))
-  (traces
-    ((recv (gen))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (gen) (privk b)) (exp (gen) y))))
-      (recv (enc (enc (exp (gen) y) (gen) (privk b)) (exp (gen) y))))
-    ((recv (exp (gen) y)) (send (exp (gen) y))))
-  (label 27)
-  (parent 23)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (w expt) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) w)) (y y))
-  (deflistener (exp (gen) (mul w y)))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-gen y)
-  (precur (2 0))
-  (operation nonce-test (displaced 3 0 resp 2) (exp (gen) y-0) (2 0))
-  (traces
-    ((recv (exp (gen) w))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) w) (privk b))
-            (exp (gen) (mul w y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) w) (privk a))
-          (exp (gen) (mul w y)))))
-    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 28)
-  (parent 24)
-  (unrealized (0 2))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (b name) (y rndx))
-  (defstrand resp 3 (a b) (b b) (h (gen)) (y y))
-  (non-orig (privk b))
-  (uniq-gen y)
-  (operation generalization deleted (1 0))
-  (traces
-    ((recv (gen))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (gen) (privk b)) (exp (gen) y))))
-      (recv (enc (enc (exp (gen) y) (gen) (privk b)) (exp (gen) y)))))
-  (label 29)
-  (parent 27)
-  (realized)
-  (shape)
-  (maps ((0) ((a b) (b b) (y y) (h (gen)))))
-  (origs))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (2 0)) ((0 1) (3 1)) ((1 1) (0 2)) ((2 1) (1 0))
-    ((3 0) (0 0)) ((3 2) (0 2)))
-  (non-orig (privk a))
-  (uniq-gen y x)
-  (precur (2 0))
-  (operation encryption-test (added-strand init 3)
-    (enc (exp (gen) y) (exp (gen) x) (privk a)) (0 2))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x))))))
-  (label 30)
-  (parent 28)
-  (unrealized (2 0) (3 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (b name) (w expt) (y rndx))
-  (defstrand resp 3 (a b) (b b) (h (exp (gen) w)) (y y))
-  (deflistener (exp (gen) (mul w y)))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (1 0)))
-  (non-orig (privk b))
-  (uniq-gen y)
-  (precur (2 0))
-  (operation encryption-test (displaced 3 0 resp 2)
-    (enc (exp (gen) y) (exp (gen) w) (privk a)) (0 2))
-  (traces
-    ((recv (exp (gen) w))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) w) (privk b))
-            (exp (gen) (mul w y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) w) (privk b))
-          (exp (gen) (mul w y)))))
-    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 31)
-  (parent 28)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x y rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (2 0)) ((0 1) (3 1)) ((1 1) (0 2)) ((2 1) (1 0))
-    ((3 0) (0 0)) ((3 2) (0 2)))
-  (non-orig (privk a))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation encryption-test (displaced 4 0 resp 2)
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul x y))) (3 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y))))))
-  (label 32)
-  (parent 30)
-  (unrealized (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (precedes ((0 1) (2 0)) ((0 1) (4 0)) ((1 1) (0 2)) ((2 1) (1 0))
-    ((3 0) (0 0)) ((3 2) (0 2)) ((4 1) (3 1)))
-  (non-orig (privk a))
-  (uniq-gen y x)
-  (precur (2 0))
-  (operation encryption-test (added-listener (exp (gen) (mul y x)))
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul y x))) (3 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x)))))
-  (label 33)
-  (parent 30)
-  (unrealized (2 0) (4 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (b name) (w expt) (y rndx))
-  (defstrand resp 3 (a b) (b b) (h (exp (gen) w)) (y y))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
-  (non-orig (privk b))
-  (uniq-gen y)
-  (precur (1 0))
-  (operation generalization deleted (1 0))
-  (traces
-    ((recv (exp (gen) w))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) w) (privk b))
-            (exp (gen) (mul w y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) w) (privk b))
-          (exp (gen) (mul w y)))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 34)
-  (parent 31)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (precedes ((0 1) (2 0)) ((0 1) (5 0)) ((1 1) (0 2)) ((2 1) (1 0))
-    ((3 0) (0 0)) ((3 2) (0 2)) ((4 1) (3 1)) ((5 1) (4 0)))
-  (non-orig (privk a))
-  (uniq-gen y x)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) y) x))
-    (exp (gen) (mul y x)) (4 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
-  (label 35)
-  (parent 33)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) x) y))
-  (precedes ((0 1) (2 0)) ((0 1) (5 0)) ((1 1) (0 2)) ((2 1) (1 0))
-    ((3 0) (0 0)) ((3 2) (0 2)) ((4 1) (3 1)) ((5 1) (4 0)))
-  (non-orig (privk a))
-  (uniq-gen y x)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x) y))
-    (exp (gen) (mul y x)) (4 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
-  (label 36)
-  (parent 33)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (b name) (w expt) (y rndx))
-  (defstrand resp 3 (a b) (b b) (h (exp (gen) w)) (y y))
-  (non-orig (privk b))
-  (uniq-gen y)
-  (operation generalization deleted (1 0))
-  (traces
-    ((recv (exp (gen) w))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) w) (privk b))
-            (exp (gen) (mul w y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) w) (privk b))
-          (exp (gen) (mul w y))))))
-  (label 37)
-  (parent 34)
-  (realized)
-  (shape)
-  (maps ((0) ((a b) (b b) (y y) (h (exp (gen) w)))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol station-to-station-unflip diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc h (exp (gen) x) (privk a)) (exp h x)))
-      (send (privk a)))
-    (uniq-gen x))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc (exp (gen) y) h (privk a)) (exp h y)))
-      (send (privk b)))
-    (uniq-gen y))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (h base) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h h) (y y))
-  (non-orig (privk a))
-  (uniq-gen y)
-  (facts (neq a b))
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc (exp (gen) y) h (privk a)) (exp h y)))))
-  (label 38)
-  (unrealized (0 2))
-  (origs)
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
-  (non-orig (privk a))
-  (uniq-gen y x)
-  (facts (neq a b))
-  (operation encryption-test (added-strand init 3)
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-      (exp (gen) (mul y x))) (0 2))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x))))))
-  (label 39)
-  (parent 38)
-  (unrealized (1 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (h base) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h h) (y y))
-  (deflistener (exp h y))
-  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
-  (non-orig (privk a))
-  (uniq-gen y)
-  (facts (neq a b))
-  (operation encryption-test (added-listener (exp h y))
-    (enc (enc (exp (gen) y) h (privk a)) (exp h y)) (0 2))
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc (exp (gen) y) h (privk a)) (exp h y))))
-    ((recv (exp h y)) (send (exp h y))))
-  (label 40)
-  (parent 38)
-  (unrealized (0 2) (1 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x y rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
-  (non-orig (privk a))
-  (uniq-gen x y)
-  (facts (neq a b))
-  (operation encryption-test (displaced 2 0 resp 2)
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul x y))) (1 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y))))))
-  (label 41)
-  (parent 39)
-  (realized)
-  (shape)
-  (maps ((0) ((a a) (b b) (y y) (h (exp (gen) x)))))
-  (origs))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1)))
-  (non-orig (privk a))
-  (uniq-gen y x)
-  (facts (neq a b))
-  (operation encryption-test (added-listener (exp (gen) (mul y x)))
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul y x))) (1 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x)))))
-  (label 42)
-  (parent 39)
-  (unrealized (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h (gen)) (y y))
-  (deflistener (exp (gen) y))
-  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
-  (non-orig (privk a))
-  (uniq-gen y)
-  (facts (neq a b))
-  (operation nonce-test (displaced 2 0 resp 2) (exp (gen) y-0) (1 0))
-  (traces
-    ((recv (gen))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (gen) (privk b)) (exp (gen) y))))
-      (recv (enc (enc (exp (gen) y) (gen) (privk a)) (exp (gen) y))))
-    ((recv (exp (gen) y)) (send (exp (gen) y))))
-  (label 43)
-  (parent 40)
-  (unrealized (0 2))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (h base) (y rndx) (w expt))
-  (defstrand resp 3 (a a) (b b) (h h) (y y))
-  (deflistener (exp h y))
-  (deflistener (cat (exp h (mul y (rec w))) w))
-  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-gen y)
-  (precur (2 0))
-  (facts (neq a b))
-  (operation nonce-test (added-listener (cat (exp h (mul y (rec w))) w))
-    (exp h y) (1 0))
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc (exp (gen) y) h (privk a)) (exp h y))))
-    ((recv (exp h y)) (send (exp h y)))
-    ((recv (cat (exp h (mul y (rec w))) w))
-      (send (cat (exp h (mul y (rec w))) w))))
-  (label 44)
-  (parent 40)
-  (unrealized (0 2) (2 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))
-    ((3 1) (2 0)))
-  (non-orig (privk a))
-  (uniq-gen y x)
-  (facts (neq a b))
-  (operation nonce-test (added-listener (cat (exp (gen) y) x))
-    (exp (gen) (mul y x)) (2 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
-  (label 45)
-  (parent 42)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) x) y))
-  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))
-    ((3 1) (2 0)))
-  (non-orig (privk a))
-  (uniq-gen y x)
-  (facts (neq a b))
-  (operation nonce-test (added-listener (cat (exp (gen) x) y))
-    (exp (gen) (mul y x)) (2 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
-  (label 46)
-  (parent 42)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (w expt) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) w)) (y y))
-  (deflistener (exp (gen) (mul w y)))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-gen y)
-  (precur (2 0))
-  (facts (neq a b))
-  (operation nonce-test (displaced 3 0 resp 2) (exp (gen) y-0) (2 0))
-  (traces
-    ((recv (exp (gen) w))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) w) (privk b))
-            (exp (gen) (mul w y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) w) (privk a))
-          (exp (gen) (mul w y)))))
-    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 47)
-  (parent 44)
-  (unrealized (0 2))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (2 0)) ((0 1) (3 1)) ((1 1) (0 2)) ((2 1) (1 0))
-    ((3 0) (0 0)) ((3 2) (0 2)))
-  (non-orig (privk a))
-  (uniq-gen y x)
-  (precur (2 0))
-  (facts (neq a b))
-  (operation encryption-test (added-strand init 3)
-    (enc (exp (gen) y) (exp (gen) x) (privk a)) (0 2))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x))))))
-  (label 48)
-  (parent 47)
-  (unrealized (2 0) (3 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x y rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (2 0)) ((0 1) (3 1)) ((1 1) (0 2)) ((2 1) (1 0))
-    ((3 0) (0 0)) ((3 2) (0 2)))
-  (non-orig (privk a))
-  (uniq-gen x y)
-  (precur (2 0))
-  (facts (neq a b))
-  (operation encryption-test (displaced 4 0 resp 2)
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul x y))) (3 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y))))))
-  (label 49)
-  (parent 48)
-  (unrealized (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (precedes ((0 1) (2 0)) ((0 1) (4 0)) ((1 1) (0 2)) ((2 1) (1 0))
-    ((3 0) (0 0)) ((3 2) (0 2)) ((4 1) (3 1)))
-  (non-orig (privk a))
-  (uniq-gen y x)
-  (precur (2 0))
-  (facts (neq a b))
-  (operation encryption-test (added-listener (exp (gen) (mul y x)))
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul y x))) (3 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x)))))
-  (label 50)
-  (parent 48)
-  (unrealized (2 0) (4 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (precedes ((0 1) (2 0)) ((0 1) (5 0)) ((1 1) (0 2)) ((2 1) (1 0))
-    ((3 0) (0 0)) ((3 2) (0 2)) ((4 1) (3 1)) ((5 1) (4 0)))
-  (non-orig (privk a))
-  (uniq-gen y x)
-  (precur (2 0))
-  (facts (neq a b))
-  (operation nonce-test (added-listener (cat (exp (gen) y) x))
-    (exp (gen) (mul y x)) (4 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
-  (label 51)
-  (parent 50)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) x) y))
-  (precedes ((0 1) (2 0)) ((0 1) (5 0)) ((1 1) (0 2)) ((2 1) (1 0))
-    ((3 0) (0 0)) ((3 2) (0 2)) ((4 1) (3 1)) ((5 1) (4 0)))
-  (non-orig (privk a))
-  (uniq-gen y x)
-  (precur (2 0))
-  (facts (neq a b))
-  (operation nonce-test (added-listener (cat (exp (gen) x) y))
-    (exp (gen) (mul y x)) (4 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
-  (label 52)
-  (parent 50)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
-
-(defprotocol station-to-station-unflip diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc h (exp (gen) x) (privk a)) (exp h x)))
-      (send (privk a)))
-    (uniq-gen x))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc (exp (gen) y) h (privk a)) (exp h y)))
-      (send (privk b)))
-    (uniq-gen y))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (h base) (x rndx))
-  (defstrand init 3 (a a) (b b) (h h) (x x))
-  (deflistener (exp h x))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (traces
-    ((send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc h (exp (gen) x) (privk a)) (exp h x))))
-    ((recv (exp h x)) (send (exp h x))))
-  (label 53)
-  (unrealized (0 1) (1 0))
-  (preskeleton)
-  (origs)
-  (comment "Not a skeleton"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (h base) (x rndx))
-  (defstrand init 3 (a a) (b b) (h h) (x x))
-  (deflistener (exp h x))
-  (precedes ((0 0) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (traces
-    ((send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc h (exp (gen) x) (privk a)) (exp h x))))
-    ((recv (exp h x)) (send (exp h x))))
-  (label 54)
-  (parent 53)
-  (unrealized (0 1) (1 0))
-  (origs)
-  (comment "5 in cohort - 5 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x rndx))
-  (defstrand init 3 (a a) (b b) (h (gen)) (x x))
-  (deflistener (exp (gen) x))
-  (precedes ((0 0) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (operation nonce-test (displaced 2 0 init 1) (exp (gen) x-0) (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (gen)
-          (enc (enc (gen) (exp (gen) x) (privk b)) (exp (gen) x))))
-      (send (enc (enc (gen) (exp (gen) x) (privk a)) (exp (gen) x))))
-    ((recv (exp (gen) x)) (send (exp (gen) x))))
-  (label 55)
-  (parent 54)
-  (unrealized (0 1))
-  (dead)
-  (origs)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (rec x))) (x x))
-  (deflistener (gen))
-  (precedes ((0 0) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (operation nonce-test (contracted (h (exp (gen) (rec x)))) (gen)
-    (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (rec x))
-          (enc (enc (exp (gen) (rec x)) (exp (gen) x) (privk b))
-            (gen))))
-      (send
-        (enc (enc (exp (gen) (rec x)) (exp (gen) x) (privk a)) (gen))))
-    ((recv (gen)) (send (gen))))
-  (label 56)
-  (parent 54)
-  (unrealized (0 1))
-  (dead)
-  (origs)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) x-0))) (x x))
-  (deflistener (exp (gen) x-0))
-  (defstrand init 1 (x x-0))
-  (precedes ((0 0) (1 0)) ((2 0) (0 1)) ((2 0) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (operation nonce-test (added-strand init 1) (exp (gen) x-0) (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) x-0))
-          (enc
-            (enc (exp (gen) (mul (rec x) x-0)) (exp (gen) x) (privk b))
-            (exp (gen) x-0))))
-      (send
-        (enc (enc (exp (gen) (mul (rec x) x-0)) (exp (gen) x) (privk a))
-          (exp (gen) x-0))))
-    ((recv (exp (gen) x-0)) (send (exp (gen) x-0)))
-    ((send (exp (gen) x-0))))
-  (label 57)
-  (parent 54)
-  (unrealized (0 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (h base) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) y))) (x x))
-  (deflistener (exp (gen) y))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (precedes ((0 0) (1 0)) ((2 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation nonce-test (added-strand resp 2) (exp (gen) y) (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) y))
-          (enc (enc (exp (gen) (mul (rec x) y)) (exp (gen) x) (privk b))
-            (exp (gen) y))))
-      (send
-        (enc (enc (exp (gen) (mul (rec x) y)) (exp (gen) x) (privk a))
-          (exp (gen) y)))) ((recv (exp (gen) y)) (send (exp (gen) y)))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y))))))
-  (label 58)
-  (parent 54)
-  (unrealized (0 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (h base) (x rndx) (w expt))
-  (defstrand init 3 (a a) (b b) (h h) (x x))
-  (deflistener (exp h x))
-  (deflistener (cat (exp h (mul x (rec w))) w))
-  (precedes ((0 0) (2 0)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp h (mul x (rec w))) w))
-    (exp h x) (1 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc h (exp (gen) x) (privk a)) (exp h x))))
-    ((recv (exp h x)) (send (exp h x)))
-    ((recv (cat (exp h (mul x (rec w))) w))
-      (send (cat (exp h (mul x (rec w))) w))))
-  (label 59)
-  (parent 54)
-  (unrealized (0 1) (2 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (w expt) (x rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) w)) (x x))
-  (deflistener (exp (gen) (mul w x)))
-  (deflistener (cat (exp (gen) x) w))
-  (precedes ((0 0) (2 0)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (precur (2 0))
-  (operation nonce-test (displaced 3 0 init 1) (exp (gen) x-0) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) w)
-          (enc (enc (exp (gen) w) (exp (gen) x) (privk b))
-            (exp (gen) (mul w x)))))
-      (send
-        (enc (enc (exp (gen) w) (exp (gen) x) (privk a))
-          (exp (gen) (mul w x)))))
-    ((recv (exp (gen) (mul w x))) (send (exp (gen) (mul w x))))
-    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w))))
-  (label 60)
-  (parent 59)
-  (unrealized (0 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x rndx) (w expt))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w))) (x x))
-  (deflistener (exp (gen) w))
-  (deflistener (cat (gen) w))
-  (precedes ((0 0) (2 0)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x)
-  (precur (2 0))
-  (operation nonce-test (contracted (h (exp (gen) (mul (rec x) w))))
-    (gen) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) w))
-          (enc (enc (exp (gen) (mul (rec x) w)) (exp (gen) x) (privk b))
-            (exp (gen) w))))
-      (send
-        (enc (enc (exp (gen) (mul (rec x) w)) (exp (gen) x) (privk a))
-          (exp (gen) w)))) ((recv (exp (gen) w)) (send (exp (gen) w)))
-    ((recv (cat (gen) w)) (send (cat (gen) w))))
-  (label 61)
-  (parent 59)
-  (unrealized (0 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x rndx) (w expt) (x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w x-0)))
-    (x x))
-  (deflistener (exp (gen) (mul w x-0)))
-  (deflistener (cat (exp (gen) x-0) w))
-  (defstrand init 1 (x x-0))
-  (precedes ((0 0) (2 0)) ((2 1) (1 0)) ((3 0) (0 1)) ((3 0) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (precur (2 0))
-  (operation nonce-test (added-strand init 1) (exp (gen) x-0) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) w x-0))
-          (enc
-            (enc (exp (gen) (mul (rec x) w x-0)) (exp (gen) x)
-              (privk b)) (exp (gen) (mul w x-0)))))
-      (send
-        (enc
-          (enc (exp (gen) (mul (rec x) w x-0)) (exp (gen) x) (privk a))
-          (exp (gen) (mul w x-0)))))
-    ((recv (exp (gen) (mul w x-0))) (send (exp (gen) (mul w x-0))))
-    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))
-    ((send (exp (gen) x-0))))
-  (label 62)
-  (parent 59)
-  (unrealized (0 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (h base) (x rndx) (w expt) (y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w y))) (x x))
-  (deflistener (exp (gen) (mul w y)))
-  (deflistener (cat (exp (gen) y) w))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (precedes ((0 0) (2 0)) ((2 1) (1 0)) ((3 1) (0 1)) ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation nonce-test (added-strand resp 2) (exp (gen) y) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) (mul (rec x) w y))
-          (enc
-            (enc (exp (gen) (mul (rec x) w y)) (exp (gen) x) (privk b))
-            (exp (gen) (mul w y)))))
-      (send
-        (enc (enc (exp (gen) (mul (rec x) w y)) (exp (gen) x) (privk a))
-          (exp (gen) (mul w y)))))
-    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y))))))
-  (label 63)
-  (parent 59)
-  (unrealized (0 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) x) y))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (3 0)) ((2 1) (1 0)) ((3 1) (0 1)) ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 64)
-  (parent 60)
-  (unrealized (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (gen) (mul x y)))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (3 0)) ((2 1) (1 0)) ((3 1) (0 1)) ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (gen) (mul x y))) (send (cat (gen) (mul x y))))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 65)
-  (parent 61)
-  (unrealized (1 0) (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x x-0 y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) y)))
-  (defstrand init 1 (x x-0))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (4 0)) ((2 1) (1 0)) ((3 0) (0 1)) ((3 0) (2 0))
-    ((4 1) (0 1)) ((4 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0 y)
-  (precur (2 0))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) y)))
-      (send (cat (exp (gen) x-0) (mul x (rec x-0) y))))
-    ((send (exp (gen) x-0)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 66)
-  (parent 62)
-  (unrealized (1 0) (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (3 0)) ((2 1) (1 0)) ((3 1) (0 1)) ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation encryption-test (displaced 4 3 resp 2)
-    (enc (exp (gen) y-0) (exp (gen) x) (privk b-0)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 67)
-  (parent 63)
-  (unrealized (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (h base) (x y y-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y-0)) (x x))
-  (deflistener (exp (gen) (mul x y-0)))
-  (deflistener (cat (exp (gen) y) (mul x (rec y) y-0)))
-  (defstrand resp 2 (b b-0) (h h) (y y))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y-0))
-  (precedes ((0 0) (4 0)) ((2 1) (1 0)) ((3 1) (0 1)) ((3 1) (2 0))
-    ((4 1) (0 1)) ((4 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y y-0)
-  (precur (2 0))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y-0) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y-0)
-          (enc (enc (exp (gen) y-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y-0)))))
-      (send
-        (enc (enc (exp (gen) y-0) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y-0)))))
-    ((recv (exp (gen) (mul x y-0))) (send (exp (gen) (mul x y-0))))
-    ((recv (cat (exp (gen) y) (mul x (rec y) y-0)))
-      (send (cat (exp (gen) y) (mul x (rec y) y-0))))
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y-0)
-          (enc (enc (exp (gen) y-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y-0)))))))
-  (label 68)
-  (parent 63)
-  (unrealized (1 0) (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
-
-(defprotocol station-to-station-unflip diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc h (exp (gen) x) (privk a)) (exp h x)))
-      (send (privk a)))
-    (uniq-gen x))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc (exp (gen) y) h (privk a)) (exp h y)))
-      (send (privk b)))
-    (uniq-gen y))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (h base) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h h) (y y))
-  (deflistener (exp h y))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc (exp (gen) y) h (privk a)) (exp h y))))
-    ((recv (exp h y)) (send (exp h y))))
-  (label 69)
-  (unrealized (0 2) (1 0))
-  (preskeleton)
-  (origs)
-  (comment "Not a skeleton"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (h base) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h h) (y y))
-  (deflistener (exp h y))
-  (precedes ((0 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc (exp (gen) y) h (privk a)) (exp h y))))
-    ((recv (exp h y)) (send (exp h y))))
-  (label 70)
-  (parent 69)
-  (unrealized (0 2) (1 0))
-  (origs)
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h (gen)) (y y))
-  (deflistener (exp (gen) y))
-  (precedes ((0 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (operation nonce-test (displaced 2 0 resp 2) (exp (gen) y-0) (1 0))
-  (traces
-    ((recv (gen))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (gen) (privk b)) (exp (gen) y))))
-      (recv (enc (enc (exp (gen) y) (gen) (privk a)) (exp (gen) y))))
-    ((recv (exp (gen) y)) (send (exp (gen) y))))
-  (label 71)
-  (parent 70)
-  (unrealized (0 2))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (h base) (y rndx) (w expt))
-  (defstrand resp 3 (a a) (b b) (h h) (y y))
-  (deflistener (exp h y))
-  (deflistener (cat (exp h (mul y (rec w))) w))
-  (precedes ((0 1) (2 0)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp h (mul y (rec w))) w))
-    (exp h y) (1 0))
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc (exp (gen) y) h (privk a)) (exp h y))))
-    ((recv (exp h y)) (send (exp h y)))
-    ((recv (cat (exp h (mul y (rec w))) w))
-      (send (cat (exp h (mul y (rec w))) w))))
-  (label 72)
-  (parent 70)
-  (unrealized (0 2) (2 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (b name) (y rndx))
-  (defstrand resp 3 (a b) (b b) (h (gen)) (y y))
-  (deflistener (exp (gen) y))
-  (precedes ((0 1) (1 0)))
-  (non-orig (privk b))
-  (uniq-gen y)
-  (operation encryption-test (displaced 2 0 resp 2)
-    (enc (exp (gen) y) (gen) (privk a)) (0 2))
-  (traces
-    ((recv (gen))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (gen) (privk b)) (exp (gen) y))))
-      (recv (enc (enc (exp (gen) y) (gen) (privk b)) (exp (gen) y))))
-    ((recv (exp (gen) y)) (send (exp (gen) y))))
-  (label 73)
-  (parent 71)
-  (realized)
-  (shape)
-  (maps ((0 1) ((a b) (b b) (y y) (h (gen)))))
-  (origs))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (w expt) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) w)) (y y))
-  (deflistener (exp (gen) (mul w y)))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 1) (2 0)) ((2 1) (1 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y)
-  (precur (2 0))
-  (operation nonce-test (displaced 3 0 resp 2) (exp (gen) y-0) (2 0))
-  (traces
-    ((recv (exp (gen) w))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) w) (privk b))
-            (exp (gen) (mul w y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) w) (privk a))
-          (exp (gen) (mul w y)))))
-    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 74)
-  (parent 72)
-  (unrealized (0 2))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (2 0)) ((0 1) (3 1)) ((2 1) (1 0)) ((3 0) (0 0))
-    ((3 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (precur (2 0))
-  (operation encryption-test (added-strand init 3)
-    (enc (exp (gen) y) (exp (gen) x) (privk a)) (0 2))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x))))))
-  (label 75)
-  (parent 74)
-  (unrealized (2 0) (3 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (b name) (w expt) (y rndx))
-  (defstrand resp 3 (a b) (b b) (h (exp (gen) w)) (y y))
-  (deflistener (exp (gen) (mul w y)))
-  (deflistener (cat (exp (gen) y) w))
-  (precedes ((0 1) (2 0)) ((2 1) (1 0)))
-  (non-orig (privk b))
-  (uniq-gen y)
-  (precur (2 0))
-  (operation encryption-test (displaced 3 0 resp 2)
-    (enc (exp (gen) y) (exp (gen) w) (privk a)) (0 2))
-  (traces
-    ((recv (exp (gen) w))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) w) (privk b))
-            (exp (gen) (mul w y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) w) (privk b))
-          (exp (gen) (mul w y)))))
-    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))
-    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))
-  (label 76)
-  (parent 74)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x y rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (2 0)) ((0 1) (3 1)) ((2 1) (1 0)) ((3 0) (0 0))
-    ((3 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (precur (2 0))
-  (operation encryption-test (displaced 4 0 resp 2)
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul x y))) (3 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y))))))
-  (label 77)
-  (parent 75)
-  (unrealized (2 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (precedes ((0 1) (2 0)) ((0 1) (4 0)) ((2 1) (1 0)) ((3 0) (0 0))
-    ((3 2) (0 2)) ((4 1) (3 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (precur (2 0))
-  (operation encryption-test (added-listener (exp (gen) (mul y x)))
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul y x))) (3 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x)))))
-  (label 78)
-  (parent 75)
-  (unrealized (2 0) (4 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (b name) (w expt) (y rndx))
-  (defstrand resp 3 (a b) (b b) (h (exp (gen) w)) (y y))
-  (deflistener (exp (gen) (mul w y)))
-  (precedes ((0 1) (1 0)))
-  (non-orig (privk b))
-  (uniq-gen y)
-  (operation generalization deleted (2 0))
-  (traces
-    ((recv (exp (gen) w))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) w) (privk b))
-            (exp (gen) (mul w y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) w) (privk b))
-          (exp (gen) (mul w y)))))
-    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y)))))
-  (label 79)
-  (parent 76)
-  (realized)
-  (shape)
-  (maps ((0 1) ((a b) (b b) (y y) (h (exp (gen) w)))))
-  (origs))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (precedes ((0 1) (2 0)) ((0 1) (5 0)) ((2 1) (1 0)) ((3 0) (0 0))
-    ((3 2) (0 2)) ((4 1) (3 1)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) y) x))
-    (exp (gen) (mul y x)) (4 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
-  (label 80)
-  (parent 78)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) x) y))
-  (precedes ((0 1) (2 0)) ((0 1) (5 0)) ((2 1) (1 0)) ((3 0) (0 0))
-    ((3 2) (0 2)) ((4 1) (3 1)) ((5 1) (4 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (precur (2 0))
-  (operation nonce-test (added-listener (cat (exp (gen) x) y))
-    (exp (gen) (mul y x)) (4 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
-  (label 81)
-  (parent 78)
-  (unrealized (2 0) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
-
-(defprotocol station-to-station-unflip diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc h (exp (gen) x) (privk a)) (exp h x)))
-      (send (privk a)))
-    (uniq-gen x))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc (exp (gen) y) h (privk a)) (exp h y)))
-      (send (privk b)))
-    (uniq-gen y))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-to-station-unflip
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b))))
-  (label 82)
-  (unrealized (1 2))
-  (origs ((privk b) (1 3)) ((privk a) (0 3)))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (y x rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a) (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (1 0)) ((0 2) (1 2)) ((1 1) (0 1)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (operation encryption-test (displaced 2 0 init 3)
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
-      (exp (gen) (mul y x))) (1 2))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul y x)))) (send (privk b))))
-  (label 83)
-  (parent 82)
-  (realized)
-  (shape)
-  (maps ((0 1) ((a a) (b b) (x x) (y y) (a-0 a))))
-  (origs ((privk b) (1 3)) ((privk a) (0 3))))
-
-(defskeleton station-to-station-unflip
-  (vars (a b name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a b) (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation encryption-test (displaced 2 1 resp 2)
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
-      (exp (gen) (mul x y))) (1 2))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-          (exp (gen) (mul x y)))) (send (privk b))))
-  (label 84)
-  (parent 82)
-  (realized)
-  (shape)
-  (maps ((0 1) ((a a) (b b) (x x) (y y) (a-0 b))))
-  (origs ((privk b) (1 3)) ((privk a) (0 3))))
-
-(defskeleton station-to-station-unflip
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (2 0)) ((2 1) (1 2)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation encryption-test (added-listener (exp (gen) (mul x y)))
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
-      (exp (gen) (mul x y))) (1 2))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b)))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
-  (label 85)
-  (parent 82)
-  (unrealized (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) x) y))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((2 1) (1 2))
-    ((3 1) (2 0)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation nonce-test (added-listener (cat (exp (gen) x) y))
-    (exp (gen) (mul x y)) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b)))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
-  (label 86)
-  (parent 85)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) y) x))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((2 1) (1 2))
-    ((3 1) (2 0)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation nonce-test (added-listener (cat (exp (gen) y) x))
-    (exp (gen) (mul x y)) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b)))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
-  (label 87)
-  (parent 85)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
-
-(defprotocol station-to-station-unflip diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc h (exp (gen) x) (privk a)) (exp h x)))
-      (send (privk a)))
-    (uniq-gen x))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc (exp (gen) y) h (privk a)) (exp h y)))
-      (send (privk b)))
-    (uniq-gen y))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-to-station-unflip
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b)))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
-  (label 88)
-  (unrealized (1 2) (2 0))
-  (preskeleton)
-  (origs ((privk b) (1 3)) ((privk a) (0 3)))
-  (comment "Not a skeleton"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (2 0)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b)))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
-  (label 89)
-  (parent 88)
-  (unrealized (1 2) (2 0))
-  (origs ((privk b) (1 3)) ((privk a) (0 3)))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) x) y))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((3 1) (2 0)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation nonce-test (added-listener (cat (exp (gen) x) y))
-    (exp (gen) (mul x y)) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b)))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
-  (label 90)
-  (parent 89)
-  (unrealized (1 2) (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-to-station-unflip
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (deflistener (cat (exp (gen) y) x))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((3 1) (2 0)))
-  (uniq-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation nonce-test (added-listener (cat (exp (gen) y) x))
-    (exp (gen) (mul x y)) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b)))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
-  (label 91)
-  (parent 89)
-  (unrealized (1 2) (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
diff --git a/tst/sts_weak.scm b/tst/sts_weak.scm
deleted file mode 100644
--- a/tst/sts_weak.scm
+++ /dev/null
@@ -1,76 +0,0 @@
-;;; Station-to-station weak
-
-;;; This is an authenticated form of a Diffie-Hellman key exchange.
-
-;;; The file contains one model of the station-to-station protocol.
-;;; It weakens the previous model by omitting an assumption.
-
-;;; Namely, we do not assume that *every* initiator or responder
-;;; properly picks a fresh random exponent and does not allow it to be
-;;; obtained by the adversary.
-
-(herald "Station-to-station protocol:  Weakened version" (algebra diffie-hellman))
-
-(defprotocol station-weak diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace
-     (send (exp (gen) x))
-     (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-     (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))
-     (send (privk a)))
-  )
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace
-     (recv h)
-     (send (cat (exp (gen) y) (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-     (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y)))
-     (send (privk b)))
-    ;;    (absent (y h)
-    ))
-
-(defskeleton station-weak
-  (vars (a b name) (x y rndx) (h base))
-  (defstrand init 3 (a a) (b b) (x x) (h (exp (gen) y)))
-  (uniq-gen x y)
-  (non-orig (privk b) (privk a))
-)
-
-(defskeleton station-weak
-  (vars (a b name) (y x rndx) (h base))
-  (defstrand resp 3 (a a) (b b) (y y) (h (exp (gen) x)))
-  (uniq-gen y x)
-  (non-orig (privk a) (privk b))
-)
-
-(defskeleton station-weak
-  (vars (a b name)(x y rndx) (h base))
-  (defstrand init 3 (a a) (b b) (x x) (h h))
-  (deflistener (exp h x))
-  (non-orig (privk b) (privk a))
-)
-
-(defskeleton station-weak
-  (vars (a b name) (x y rndx)(h base))
-  (defstrand resp 3 (a a) (b b) (y y) (h h))
-  (deflistener (exp h y))
-  (non-orig (privk a) (privk b))
-)
-
-(defskeleton station-weak
-  (vars (a b name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (uniq-orig (privk b) (privk a))
-  )
-
-(defskeleton station-weak
-  (vars (a b name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (uniq-orig (privk b) (privk a))
-  )
diff --git a/tst/sts_weak.tst b/tst/sts_weak.tst
deleted file mode 100644
--- a/tst/sts_weak.tst
+++ /dev/null
@@ -1,794 +0,0 @@
-(herald "Station-to-station protocol:  Weakened version"
-  (algebra diffie-hellman))
-
-(comment "CPSA 4.4.3")
-(comment "All input read from tst/sts_weak.scm")
-
-(defprotocol station-weak diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))
-      (send (privk a))))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y)))
-      (send (privk b))))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-weak
-  (vars (a b name) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y))))))
-  (label 0)
-  (unrealized (0 1))
-  (origs)
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-weak
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (precedes ((0 0) (1 1)) ((1 2) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (operation encryption-test (added-strand init 3)
-    (enc (exp (gen) x-0) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0))))))
-  (label 1)
-  (parent 0)
-  (unrealized (1 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-weak
-  (vars (a b name) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 2)
-  (parent 0)
-  (realized)
-  (shape)
-  (maps ((0) ((a a) (b b) (x x) (y y))))
-  (origs))
-
-(defskeleton station-weak
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (precedes ((0 0) (2 0)) ((1 0) (2 0)) ((1 2) (0 1)) ((2 1) (1 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))
-    (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-      (exp (gen) (mul x x-0))) (1 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))
-  (label 3)
-  (parent 1)
-  (unrealized (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-weak
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x) x-0))
-  (precedes ((0 0) (3 0)) ((1 0) (3 0)) ((1 2) (0 1)) ((2 1) (1 1))
-    ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (operation nonce-test (added-listener (cat (exp (gen) x) x-0))
-    (exp (gen) (mul x x-0)) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0))))
-  (label 4)
-  (parent 3)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-weak
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (deflistener (exp (gen) (mul x x-0)))
-  (deflistener (cat (exp (gen) x-0) x))
-  (precedes ((0 0) (3 0)) ((1 0) (3 0)) ((1 2) (0 1)) ((2 1) (1 1))
-    ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x x-0)
-  (operation nonce-test (added-listener (cat (exp (gen) x-0) x))
-    (exp (gen) (mul x x-0)) (2 0))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))
-  (label 5)
-  (parent 3)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
-
-(defprotocol station-weak diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))
-      (send (privk a))))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y)))
-      (send (privk b))))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-weak
-  (vars (a b name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x))))))
-  (label 6)
-  (unrealized (0 2))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton station-weak
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (operation encryption-test (added-strand init 3)
-    (enc (exp (gen) x) (exp (gen) y) (privk a)) (0 2))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x))))))
-  (label 7)
-  (parent 6)
-  (unrealized (1 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-weak
-  (vars (a b name) (x y rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen x y)
-  (operation encryption-test (displaced 2 0 resp 2)
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul x y))) (1 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y))))))
-  (label 8)
-  (parent 7)
-  (realized)
-  (shape)
-  (maps ((0) ((a a) (b b) (y y) (x x))))
-  (origs))
-
-(defskeleton station-weak
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (operation encryption-test (added-listener (exp (gen) (mul y x)))
-    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-      (exp (gen) (mul y x))) (1 1))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x)))))
-  (label 9)
-  (parent 7)
-  (unrealized (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-weak
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) y) x))
-  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))
-    ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (operation nonce-test (added-listener (cat (exp (gen) y) x))
-    (exp (gen) (mul y x)) (2 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
-  (label 10)
-  (parent 9)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton station-weak
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul y x)))
-  (deflistener (cat (exp (gen) x) y))
-  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))
-    ((3 1) (2 0)))
-  (non-orig (privk a) (privk b))
-  (uniq-gen y x)
-  (operation nonce-test (added-listener (cat (exp (gen) x) y))
-    (exp (gen) (mul y x)) (2 0))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
-  (label 11)
-  (parent 9)
-  (unrealized (3 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
-
-(defprotocol station-weak diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))
-      (send (privk a))))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y)))
-      (send (privk b))))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-weak
-  (vars (a b name) (h base) (x rndx))
-  (defstrand init 3 (a a) (b b) (h h) (x x))
-  (deflistener (exp h x))
-  (non-orig (privk a) (privk b))
-  (traces
-    ((send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x))))
-    ((recv (exp h x)) (send (exp h x))))
-  (label 12)
-  (unrealized (0 1))
-  (origs)
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton station-weak
-  (vars (a b b-0 name) (x x-0 rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))
-  (deflistener (exp (gen) (mul x x-0)))
-  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))
-  (precedes ((2 2) (0 1)))
-  (non-orig (privk a) (privk b))
-  (operation encryption-test (added-strand init 3)
-    (enc (exp (gen) x-0) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) x-0)
-          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))
-          (exp (gen) (mul x x-0)))))
-    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))
-    ((send (exp (gen) x-0))
-      (recv
-        (cat (exp (gen) x)
-          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))
-            (exp (gen) (mul x x-0)))))
-      (send
-        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))
-          (exp (gen) (mul x x-0))))))
-  (label 13)
-  (parent 12)
-  (realized)
-  (shape)
-  (maps ((0 1) ((a a) (b b) (x x) (h (exp (gen) x-0)))))
-  (origs))
-
-(defskeleton station-weak
-  (vars (a b name) (x y rndx))
-  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))
-  (deflistener (exp (gen) (mul x y)))
-  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))
-  (precedes ((2 1) (0 1)))
-  (non-orig (privk a) (privk b))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))))
-  (label 14)
-  (parent 12)
-  (realized)
-  (shape)
-  (maps ((0 1) ((a a) (b b) (x x) (h (exp (gen) y)))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol station-weak diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))
-      (send (privk a))))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y)))
-      (send (privk b))))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-weak
-  (vars (a b name) (h base) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h h) (y y))
-  (deflistener (exp h y))
-  (non-orig (privk a) (privk b))
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y))))
-    ((recv (exp h y)) (send (exp h y))))
-  (label 15)
-  (unrealized (0 2))
-  (preskeleton)
-  (origs)
-  (comment "Not a skeleton"))
-
-(defskeleton station-weak
-  (vars (a b name) (h base) (y rndx))
-  (defstrand resp 3 (a a) (b b) (h h) (y y))
-  (deflistener (exp h y))
-  (non-orig (privk a) (privk b))
-  (traces
-    ((recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y))))
-    ((recv (exp h y)) (send (exp h y))))
-  (label 16)
-  (parent 15)
-  (unrealized (0 2))
-  (origs)
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton station-weak
-  (vars (a b b-0 name) (y x rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul y x)))
-  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))
-  (precedes ((2 2) (0 2)))
-  (non-orig (privk a) (privk b))
-  (operation encryption-test (added-strand init 3)
-    (enc (exp (gen) x) (exp (gen) y) (privk a)) (0 2))
-  (traces
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul y x)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x)))))
-    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
-            (exp (gen) (mul y x)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul y x))))))
-  (label 17)
-  (parent 16)
-  (realized)
-  (shape)
-  (maps ((0 1) ((a a) (b b) (y y) (h (exp (gen) x)))))
-  (origs))
-
-(defskeleton station-weak
-  (vars (b name) (y rndx))
-  (defstrand resp 3 (a b) (b b) (h (exp (gen) y)) (y y))
-  (deflistener (exp (gen) (mul y y)))
-  (non-orig (privk b))
-  (operation encryption-test (displaced 2 0 resp 2)
-    (enc (exp (gen) y-0) (exp (gen) y-1) (privk a)) (0 2))
-  (traces
-    ((recv (exp (gen) y))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) y) (privk b))
-            (exp (gen) (mul y y)))))
-      (recv
-        (enc (enc (exp (gen) y) (exp (gen) y) (privk b))
-          (exp (gen) (mul y y)))))
-    ((recv (exp (gen) (mul y y))) (send (exp (gen) (mul y y)))))
-  (label 18)
-  (parent 16)
-  (realized)
-  (shape)
-  (maps ((0 1) ((a b) (b b) (y y) (h (exp (gen) y)))))
-  (origs))
-
-(defskeleton station-weak
-  (vars (a b name) (y y-0 rndx))
-  (defstrand resp 3 (a a) (b b) (h (exp (gen) y-0)) (y y))
-  (deflistener (exp (gen) (mul y y-0)))
-  (defstrand resp 2 (b a) (h (exp (gen) y)) (y y-0))
-  (precedes ((2 1) (0 2)))
-  (non-orig (privk a) (privk b))
-  (operation encryption-test (added-strand resp 2)
-    (enc (exp (gen) y-0) (exp (gen) y) (privk a)) (0 2))
-  (traces
-    ((recv (exp (gen) y-0))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) y-0) (privk b))
-            (exp (gen) (mul y y-0)))))
-      (recv
-        (enc (enc (exp (gen) y-0) (exp (gen) y) (privk a))
-          (exp (gen) (mul y y-0)))))
-    ((recv (exp (gen) (mul y y-0))) (send (exp (gen) (mul y y-0))))
-    ((recv (exp (gen) y))
-      (send
-        (cat (exp (gen) y-0)
-          (enc (enc (exp (gen) y-0) (exp (gen) y) (privk a))
-            (exp (gen) (mul y y-0)))))))
-  (label 19)
-  (parent 16)
-  (realized)
-  (shape)
-  (maps ((0 1) ((a a) (b b) (y y) (h (exp (gen) y-0)))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol station-weak diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))
-      (send (privk a))))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y)))
-      (send (privk b))))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-weak
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (uniq-orig (privk a) (privk b))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b))))
-  (label 20)
-  (realized)
-  (shape)
-  (maps ((0 1) ((a a) (b b) (x x) (y y) (a-0 a-0))))
-  (origs ((privk b) (1 3)) ((privk a) (0 3))))
-
-(comment "Nothing left to do")
-
-(defprotocol station-weak diffie-hellman
-  (defrole init
-    (vars (x rndx) (h base) (a b name))
-    (trace (send (exp (gen) x))
-      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))
-      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))
-      (send (privk a))))
-  (defrole resp
-    (vars (y rndx) (h base) (a b name))
-    (trace (recv h)
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))
-      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y)))
-      (send (privk b))))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton station-weak
-  (vars (a b a-0 name) (x y rndx))
-  (defstrand init 4 (a a) (b b) (h (exp (gen) y)) (x x))
-  (defstrand resp 4 (a a-0) (b b) (h (exp (gen) x)) (y y))
-  (deflistener (exp (gen) (mul x y)))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (uniq-orig (privk a) (privk b))
-  (traces
-    ((send (exp (gen) x))
-      (recv
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (send
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))
-          (exp (gen) (mul x y)))) (send (privk a)))
-    ((recv (exp (gen) x))
-      (send
-        (cat (exp (gen) y)
-          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
-            (exp (gen) (mul x y)))))
-      (recv
-        (enc (enc (exp (gen) x) (exp (gen) y) (privk a-0))
-          (exp (gen) (mul x y)))) (send (privk b)))
-    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
-  (label 21)
-  (realized)
-  (shape)
-  (maps ((0 1 2) ((a a) (b b) (x x) (y y) (a-0 a-0))))
-  (origs ((privk b) (1 3)) ((privk a) (0 3))))
-
-(comment "Nothing left to do")
diff --git a/tst/sts_weakened_reflect.scm b/tst/sts_weakened_reflect.scm
new file mode 100644
--- /dev/null
+++ b/tst/sts_weakened_reflect.scm
@@ -0,0 +1,80 @@
+;;; Station-to-station
+
+;;; This is an authenticated form of a Diffie-Hellman key exchange.
+
+;;; The file contains one model of the station-to-station protocol.
+;;; We weaken it here by omitting the flip in the order of components
+;;; in the second and third msgs.
+
+(herald "station-to-station-reflect protocol" (bound 20) (algebra diffie-hellman))
+
+(defprotocol station-to-station-reflect diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace
+     (send (exp (gen) x))
+     (recv (cat (exp (gen) eta)
+		(enc (enc (exp (gen) eta)
+			  (exp (gen) x) (privk b))
+		     (exp (exp (gen) eta) x))))
+     (send (enc (enc (exp (gen) eta)
+		     (exp (gen) x) (privk a))
+		(exp (exp (gen) eta) x)))
+     (send (privk a)))
+    (uniq-gen x))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace
+     (recv (exp (gen) chi))
+     (send (cat (exp (gen) y)
+		(enc (enc (exp (gen) y)
+			  (exp (gen) chi) (privk b))
+		     (exp (exp (gen) chi) y))))
+     (recv (enc (enc (exp (gen) y)
+		     (exp (gen) chi) (privk a))
+		(exp (exp (gen) chi) y)))
+     (send (privk b)))
+    (uniq-gen y)))
+
+(defskeleton station-to-station-reflect
+  (vars (a b name))
+  (defstrand init 3 (a a) (b b))
+  (non-orig (privk b) (privk a))
+)
+
+(defskeleton station-to-station-reflect
+  (vars (a b name))
+  (defstrand resp 3 (a a) (b b))
+  (non-orig (privk a) (privk b))
+  )
+
+(defskeleton station-to-station-reflect
+  (vars (a b name)(x y rndx) (eta expt))
+  (defstrand init 3 (a a) (b b) (x x) (eta eta))
+  (deflistener (exp (exp (gen) eta) x))
+  (non-orig (privk b) (privk a))
+)
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (x y rndx)(chi expt))
+  (defstrand resp 3 (a a) (b b) (y y) (chi chi))
+  (deflistener (exp (exp (gen) chi) y))
+  (non-orig (privk a) (privk b))
+)
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (eta y) (x x))
+  (defstrand resp 4 (b b) (chi x) (y y))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-orig (privk b) (privk a))
+  )
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (eta y) (x x))
+  (defstrand resp 4 (b b) (chi x) (y y))
+  (deflistener (exp (gen) (mul x y)))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-orig (privk b) (privk a))
+  )
diff --git a/tst/sts_weakened_reflect.tst b/tst/sts_weakened_reflect.tst
new file mode 100644
--- /dev/null
+++ b/tst/sts_weakened_reflect.tst
@@ -0,0 +1,1348 @@
+(herald "station-to-station-reflect protocol" (bound 20)
+  (algebra diffie-hellman))
+
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/sts_weakened_reflect.scm")
+(comment "Strand count bounded at 20")
+
+(defprotocol station-to-station-reflect diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) eta) (exp (gen) x) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a)))
+    (uniq-gen x))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) chi) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b)))
+    (uniq-gen y)
+    (absent (y chi)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (x rndx) (eta expt))
+  (defstrand init 3 (a a) (b b) (x x) (eta eta))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) eta) (exp (gen) x) (privk a))
+          (exp (gen) (mul x eta))))))
+  (label 0)
+  (unrealized (0 1))
+  (origs)
+  (ugens (x (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (y x rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (defstrand resp 2 (b b) (y y) (chi x))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation encryption-test (added-strand resp 2)
+    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
+  (strand-map 0)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (x x) (eta y))))
+  (origs)
+  (ugens (y (1 1)) (x (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol station-to-station-reflect diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) eta) (exp (gen) x) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a)))
+    (uniq-gen x))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) chi) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b)))
+    (uniq-gen y)
+    (absent (y chi)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (y rndx) (chi expt))
+  (defstrand resp 3 (a a) (b b) (y y) (chi chi))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y)
+  (absent (y chi))
+  (traces
+    ((recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) chi) (privk a))
+          (exp (gen) (mul y chi))))))
+  (label 2)
+  (unrealized (0 2))
+  (origs)
+  (ugens (y (0 1)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b b-0 name) (y x rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation encryption-test (added-strand init 3)
+    (enc (exp (gen) y) (exp (gen) x) (privk a)) (0 2))
+  (strand-map 0)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x))))))
+  (label 3)
+  (parent 2)
+  (unrealized (1 1))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station-reflect
+  (vars (b name) (y rndx) (chi expt))
+  (defstrand resp 3 (a b) (b b) (y y) (chi chi))
+  (non-orig (privk b))
+  (uniq-gen y)
+  (absent (y chi))
+  (operation encryption-test (displaced 1 0 resp 2)
+    (enc (exp (gen) y) (exp (gen) chi) (privk a)) (0 2))
+  (strand-map 0)
+  (traces
+    ((recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+          (exp (gen) (mul y chi))))))
+  (label 4)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((a b) (b b) (y y) (chi chi))))
+  (origs)
+  (ugens (y (0 1))))
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (y x rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation encryption-test (displaced 2 0 resp 2)
+    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+      (exp (gen) (mul y x))) (1 1))
+  (strand-map 0 1)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x))))))
+  (label 5)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (y y) (chi x))))
+  (origs)
+  (ugens (y (0 1)) (x (1 0))))
+
+(defskeleton station-to-station-reflect
+  (vars (a b b-0 name) (y x rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (deflistener (exp (gen) (mul y x)))
+  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation encryption-test (added-listener (exp (gen) (mul y x)))
+    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+      (exp (gen) (mul y x))) (1 1))
+  (strand-map 0 1)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x)))))
+  (label 6)
+  (parent 3)
+  (unrealized (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b b-0 name) (y x rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (deflistener (exp (gen) (mul y x)))
+  (deflistener (cat (exp (gen) y) x))
+  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))
+    ((3 1) (2 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) y) x))
+    (exp (gen) (mul y x)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
+  (label 7)
+  (parent 6)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b b-0 name) (y x rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (deflistener (exp (gen) (mul y x)))
+  (deflistener (cat (exp (gen) x) y))
+  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))
+    ((3 1) (2 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) x) y))
+    (exp (gen) (mul y x)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
+  (label 8)
+  (parent 6)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol station-to-station-reflect diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) eta) (exp (gen) x) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a)))
+    (uniq-gen x))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) chi) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b)))
+    (uniq-gen y)
+    (absent (y chi)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (x rndx) (eta expt))
+  (defstrand init 3 (a a) (b b) (x x) (eta eta))
+  (deflistener (exp (gen) (mul x eta)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) eta) (exp (gen) x) (privk a))
+          (exp (gen) (mul x eta)))))
+    ((recv (exp (gen) (mul x eta))) (send (exp (gen) (mul x eta)))))
+  (label 9)
+  (unrealized (0 1) (1 0))
+  (preskeleton)
+  (origs)
+  (ugens (x (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (x rndx) (eta expt))
+  (defstrand init 3 (a a) (b b) (x x) (eta eta))
+  (deflistener (exp (gen) (mul x eta)))
+  (precedes ((0 0) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen x)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) eta) (exp (gen) x) (privk a))
+          (exp (gen) (mul x eta)))))
+    ((recv (exp (gen) (mul x eta))) (send (exp (gen) (mul x eta)))))
+  (label 10)
+  (parent 9)
+  (unrealized (0 1))
+  (origs)
+  (ugens (x (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (y x rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand resp 2 (b b) (y y) (chi x))
+  (precedes ((0 0) (2 0)) ((2 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation encryption-test (added-strand resp 2)
+    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))
+  (strand-map 0 1)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))))
+  (label 11)
+  (parent 10)
+  (unrealized (1 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (y x rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand resp 2 (b b) (y y) (chi x))
+  (deflistener (cat (exp (gen) y) x))
+  (precedes ((0 0) (2 0)) ((2 1) (0 1)) ((2 1) (3 0)) ((3 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) y) x))
+    (exp (gen) (mul y x)) (1 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x))))))
+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
+  (label 12)
+  (parent 11)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (y x rndx))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand resp 2 (b b) (y y) (chi x))
+  (deflistener (cat (exp (gen) x) y))
+  (precedes ((0 0) (2 0)) ((2 1) (0 1)) ((2 1) (3 0)) ((3 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) x) y))
+    (exp (gen) (mul y x)) (1 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x))))))
+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
+  (label 13)
+  (parent 11)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol station-to-station-reflect diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) eta) (exp (gen) x) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a)))
+    (uniq-gen x))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) chi) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b)))
+    (uniq-gen y)
+    (absent (y chi)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (y rndx) (chi expt))
+  (defstrand resp 3 (a a) (b b) (y y) (chi chi))
+  (deflistener (exp (gen) (mul y chi)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y)
+  (absent (y chi))
+  (traces
+    ((recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) chi) (privk a))
+          (exp (gen) (mul y chi)))))
+    ((recv (exp (gen) (mul y chi))) (send (exp (gen) (mul y chi)))))
+  (label 14)
+  (unrealized (0 2) (1 0))
+  (preskeleton)
+  (origs)
+  (ugens (y (0 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (y rndx) (chi expt))
+  (defstrand resp 3 (a a) (b b) (y y) (chi chi))
+  (deflistener (exp (gen) (mul y chi)))
+  (precedes ((0 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y)
+  (absent (y chi))
+  (traces
+    ((recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) chi) (privk a))
+          (exp (gen) (mul y chi)))))
+    ((recv (exp (gen) (mul y chi))) (send (exp (gen) (mul y chi)))))
+  (label 15)
+  (parent 14)
+  (unrealized (0 2))
+  (origs)
+  (ugens (y (0 1)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b b-0 name) (y x rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (precedes ((0 1) (1 0)) ((0 1) (2 1)) ((2 0) (0 0)) ((2 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation encryption-test (added-strand init 3)
+    (enc (exp (gen) y) (exp (gen) x) (privk a)) (0 2))
+  (strand-map 0 1)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x))))))
+  (label 16)
+  (parent 15)
+  (unrealized (1 0) (2 1))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station-reflect
+  (vars (b name) (y rndx) (chi expt))
+  (defstrand resp 3 (a b) (b b) (y y) (chi chi))
+  (deflistener (exp (gen) (mul y chi)))
+  (precedes ((0 1) (1 0)))
+  (non-orig (privk b))
+  (uniq-gen y)
+  (absent (y chi))
+  (operation encryption-test (displaced 2 0 resp 2)
+    (enc (exp (gen) y) (exp (gen) chi) (privk a)) (0 2))
+  (strand-map 0 1)
+  (traces
+    ((recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+          (exp (gen) (mul y chi)))))
+    ((recv (exp (gen) (mul y chi))) (send (exp (gen) (mul y chi)))))
+  (label 17)
+  (parent 15)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a b) (b b) (y y) (chi chi))))
+  (origs)
+  (ugens (y (0 1))))
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (y x rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (precedes ((0 1) (1 0)) ((0 1) (2 1)) ((2 0) (0 0)) ((2 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation encryption-test (displaced 3 0 resp 2)
+    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+      (exp (gen) (mul y x))) (2 1))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x))))))
+  (label 18)
+  (parent 16)
+  (unrealized (1 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b b-0 name) (y x rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (deflistener (exp (gen) (mul y x)))
+  (precedes ((0 1) (1 0)) ((0 1) (3 0)) ((2 0) (0 0)) ((2 2) (0 2))
+    ((3 1) (2 1)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation encryption-test (added-listener (exp (gen) (mul y x)))
+    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+      (exp (gen) (mul y x))) (2 1))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x)))))
+  (label 19)
+  (parent 16)
+  (unrealized (1 0) (3 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (y x rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (deflistener (cat (exp (gen) y) x))
+  (precedes ((0 1) (2 1)) ((0 1) (3 0)) ((2 0) (0 0)) ((2 2) (0 2))
+    ((3 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) y) x))
+    (exp (gen) (mul y x)) (1 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
+  (label 20)
+  (parent 18)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (y x rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand init 3 (a a) (b b) (x x) (eta y))
+  (deflistener (cat (exp (gen) x) y))
+  (precedes ((0 1) (2 1)) ((0 1) (3 0)) ((2 0) (0 0)) ((2 2) (0 2))
+    ((3 1) (1 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) x) y))
+    (exp (gen) (mul y x)) (1 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
+  (label 21)
+  (parent 18)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b b-0 name) (y x rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (deflistener (exp (gen) (mul y x)))
+  (deflistener (cat (exp (gen) y) x))
+  (precedes ((0 1) (1 0)) ((0 1) (4 0)) ((2 0) (0 0)) ((2 2) (0 2))
+    ((3 1) (2 1)) ((4 1) (3 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) y) x))
+    (exp (gen) (mul y x)) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
+  (label 22)
+  (parent 19)
+  (unrealized (1 0) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b b-0 name) (y x rndx))
+  (defstrand resp 3 (a a) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul y x)))
+  (defstrand init 3 (a a) (b b-0) (x x) (eta y))
+  (deflistener (exp (gen) (mul y x)))
+  (deflistener (cat (exp (gen) x) y))
+  (precedes ((0 1) (1 0)) ((0 1) (4 0)) ((2 0) (0 0)) ((2 2) (0 2))
+    ((3 1) (2 1)) ((4 1) (3 0)))
+  (non-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) x) y))
+    (exp (gen) (mul y x)) (3 0))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))))
+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))
+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
+  (label 23)
+  (parent 19)
+  (unrealized (1 0) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol station-to-station-reflect diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) eta) (exp (gen) x) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a)))
+    (uniq-gen x))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) chi) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b)))
+    (uniq-gen y)
+    (absent (y chi)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-to-station-reflect
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b))))
+  (label 24)
+  (unrealized (1 2))
+  (origs ((privk b) (1 3)) ((privk a) (0 3)))
+  (ugens (y (1 1)) (x (0 0)))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (y x rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a) (b b) (y y) (chi x))
+  (precedes ((0 0) (1 0)) ((0 2) (1 2)) ((1 1) (0 1)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation encryption-test (displaced 2 0 init 3)
+    (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
+      (exp (gen) (mul y x))) (1 2))
+  (strand-map 0 1)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))) (send (privk b))))
+  (label 25)
+  (parent 24)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (x x) (y y) (a-0 a))))
+  (origs ((privk b) (1 3)) ((privk a) (0 3)))
+  (ugens (x (0 0)) (y (1 1))))
+
+(defskeleton station-to-station-reflect
+  (vars (a b name) (y x rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a b) (b b) (y y) (chi x))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen y x)
+  (absent (y x))
+  (operation encryption-test (displaced 2 1 resp 2)
+    (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
+      (exp (gen) (mul y x))) (1 2))
+  (strand-map 0 1)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul y x)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul y x)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+          (exp (gen) (mul y x)))) (send (privk b))))
+  (label 26)
+  (parent 24)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (b b) (x x) (y y) (a-0 b))))
+  (origs ((privk b) (1 3)) ((privk a) (0 3)))
+  (ugens (y (1 1)) (x (0 0))))
+
+(defskeleton station-to-station-reflect
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (2 0)) ((2 1) (1 2)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation encryption-test (added-listener (exp (gen) (mul x y)))
+    (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
+      (exp (gen) (mul x y))) (1 2))
+  (strand-map 0 1)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
+  (label 27)
+  (parent 24)
+  (unrealized (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) x) y))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((2 1) (1 2))
+    ((3 1) (2 0)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) x) y))
+    (exp (gen) (mul x y)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
+  (label 28)
+  (parent 27)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) y) x))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((2 1) (1 2))
+    ((3 1) (2 0)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) y) x))
+    (exp (gen) (mul x y)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
+  (label 29)
+  (parent 27)
+  (unrealized (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol station-to-station-reflect diffie-hellman
+  (defrole init
+    (vars (x rndx) (eta expt) (a b name))
+    (trace (send (exp (gen) x))
+      (recv
+        (cat (exp (gen) eta)
+          (enc (enc (exp (gen) eta) (exp (gen) x) (privk b))
+            (exp (gen) (mul x eta)))))
+      (send
+        (enc (enc (exp (gen) eta) (exp (gen) x) (privk a))
+          (exp (gen) (mul x eta)))) (send (privk a)))
+    (uniq-gen x))
+  (defrole resp
+    (vars (y rndx) (chi expt) (a b name))
+    (trace (recv (exp (gen) chi))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) chi) (privk b))
+            (exp (gen) (mul y chi)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) chi) (privk a))
+          (exp (gen) (mul y chi)))) (send (privk b)))
+    (uniq-gen y)
+    (absent (y chi)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton station-to-station-reflect
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
+  (label 30)
+  (unrealized (1 2) (2 0))
+  (preskeleton)
+  (origs ((privk b) (1 3)) ((privk a) (0 3)))
+  (ugens (y (1 1)) (x (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (2 0)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y)))))
+  (label 31)
+  (parent 30)
+  (unrealized (1 2) (2 0))
+  (origs ((privk b) (1 3)) ((privk a) (0 3)))
+  (ugens (y (1 1)) (x (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) x) y))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((3 1) (2 0)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) x) y))
+    (exp (gen) (mul x y)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))
+  (label 32)
+  (parent 31)
+  (unrealized (1 2) (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton station-to-station-reflect
+  (vars (a b a-0 name) (x y rndx))
+  (defstrand init 4 (a a) (b b) (x x) (eta y))
+  (defstrand resp 4 (a a-0) (b b) (y y) (chi x))
+  (deflistener (exp (gen) (mul x y)))
+  (deflistener (cat (exp (gen) y) x))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 0)) ((3 1) (2 0)))
+  (uniq-orig (privk a) (privk b))
+  (uniq-gen x y)
+  (absent (y x))
+  (operation nonce-test (added-listener (cat (exp (gen) y) x))
+    (exp (gen) (mul x y)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (exp (gen) x))
+      (recv
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (send
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a))
+          (exp (gen) (mul x y)))) (send (privk a)))
+    ((recv (exp (gen) x))
+      (send
+        (cat (exp (gen) y)
+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))
+            (exp (gen) (mul x y)))))
+      (recv
+        (enc (enc (exp (gen) y) (exp (gen) x) (privk a-0))
+          (exp (gen) (mul x y)))) (send (privk b)))
+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))
+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))
+  (label 33)
+  (parent 31)
+  (unrealized (1 2) (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
diff --git a/tst/subatomic-open-closed-dist.scm b/tst/subatomic-open-closed-dist.scm
new file mode 100644
--- /dev/null
+++ b/tst/subatomic-open-closed-dist.scm
@@ -0,0 +1,144 @@
+(herald subatomic-open-closed
+	;; (try-old-strands)
+	;; 	(check-nonces)
+	;; 	(reverse-nodes)
+	(bound 40))
+
+(defmacro (dev-key-state d o k)
+  (cat "st-k" d o k))
+
+(defmacro (opened o)
+  (cat o o))
+
+(defmacro (closed o) o)
+
+(defmacro (dev-state-opened d o)
+  (cat "st" d (opened o)))
+
+(defmacro (dev-state-closed d o)
+  (cat "st" d (closed o)))
+
+(defmacro (dev-state-any d o any)
+  (cat "st" d any))
+
+(defprotocol subatomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan) (lk ls locn))
+    (trace
+     (recv start-ch (cat "power-up" d o k))
+     (load lk old)
+     (load ls old1)
+     (stor lk (dev-key-state d o k))
+     (stor ls (dev-state-closed d o))
+     (send (enc "up" k)))
+    (auth start-ch)
+    (critical-sections (1 4))
+    (facts (same-dev ls lk)))
+
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch dist-ch chan))
+    (trace
+     (send start-ch (cat "power-up" d o k))
+     (recv (enc "up" k))
+     (send dist-ch (enc "dist" d o k)))
+    (conf start-ch dist-ch))
+
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name) (dist-ch chan))
+    (trace
+     (recv dist-ch (enc "dist" d o k))
+     (send (enc "open" d o n k))
+     (recv n)))
+
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name) (dist-ch chan))
+    (trace
+     (recv dist-ch (enc "dist" d o k))
+     (send (enc "close" d o n k))
+     (recv n)))
+
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace
+     (recv (enc "open" d o n k))
+     (load ls (dev-state-any d o any))
+     (load lk (dev-key-state d o k))
+     (stor ls (dev-state-opened d o))
+     (send n))
+    (critical-sections (1 3))
+    (gen-st (dev-key-state d o k) (dev-state-opened d o))
+    (facts (same-dev ls lk)))
+
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace
+     (recv (enc "close" d o n k))
+     (load lk (dev-key-state d o k))
+     (load ls (dev-state-any d o any))
+     (stor ls (dev-state-closed d o))
+     (send n))
+    (gen-st (dev-key-state d o k))
+    (critical-sections (1 3))
+    (facts (same-dev ls lk)))
+
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace
+     (load lk (dev-key-state d o k))
+     (load ls (dev-state-opened d o))
+     (recv (enc "may I pass" k))
+     (send (enc "you may pass" n k)))
+    (uniq-orig n)
+    (gen-st (dev-key-state d o k) (dev-state-opened d o))
+    (critical-sections (0 1))
+    (facts (same-dev ls lk)))
+
+  (defrole user-pass
+    (vars (k skey) (n text) (d o name) (l locn) (dist-ch chan))
+    (trace
+     (recv dist-ch (enc "dist" d o k))
+     (send (enc "may I pass" k))
+     (recv (enc "you may pass" k))))
+
+   (defrule power-deliver-once
+     (forall
+      ((z1 z2 strd) (k skey))
+      (implies
+       (and (p "dev-up" z1 2)
+ 	   (p "dev-up" z2 2)
+ 	   (p "dev-up" "k" z1 k)
+ 	   (p "dev-up" "k" z2 k))
+       (= z1 z2))))
+
+   (defrule same-dev-ls-lk
+     (forall ((ls lk lk-0 locn))
+  	     (implies
+  	      (and (fact same-dev ls lk)
+  		   (fact same-dev ls lk-0))
+  	      (= lk lk-0))))
+
+   (defrule same-dev-lk-ls
+     (forall ((lk ls ls-0 locn))
+  	     (implies
+  	      (and (fact same-dev ls lk)
+  		   (fact same-dev ls-0 lk))
+     	      (= ls ls-0)))))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (d o name) (n text) (start-ch chan))
+  (defstrand owner-power-dev 2 (k k))
+  (deflistener k)
+  (uniq-orig k)
+  (facts (no-state-split)))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (d o name) (n text) (start-ch chan))
+  (defstrand dev-pass 4 (k k))
+  (facts (no-state-split)))
+	
+(defskeleton subatomic-open-closed
+	   (vars (k skey) (d o name) (n text) (start-ch chan))
+	   (defstrand owner-power-dev 2 (k k))
+	   (defstrand dev-pass 4 (k k))
+	   (uniq-orig k)
+	   (facts (no-state-split)))
diff --git a/tst/subatomic-open-closed-dist.tst b/tst/subatomic-open-closed-dist.tst
new file mode 100644
--- /dev/null
+++ b/tst/subatomic-open-closed-dist.tst
@@ -0,0 +1,2109 @@
+(herald subatomic-open-closed (bound 40))
+
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/subatomic-open-closed-dist.scm")
+(comment "Strand count bounded at 40")
+
+(defprotocol subatomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (load ls old1) (stor lk (cat "st-k" d o k))
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch)
+    (critical-sections (1 4))
+    (facts (same-dev ls lk)))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch dist-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch (enc "dist" d o k)))
+    (conf start-ch dist-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name) (dist-ch chan))
+    (trace (recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n k))
+      (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name) (dist-ch chan))
+    (trace (recv dist-ch (enc "dist" d o k))
+      (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "open" d o n k)) (load ls (cat "st" d any))
+      (load lk (cat "st-k" d o k)) (stor ls (cat "st" d o o)) (send n))
+    (critical-sections (1 3))
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (facts (same-dev ls lk)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n))
+    (gen-st (cat "st-k" d o k))
+    (critical-sections (1 3))
+    (facts (same-dev ls lk)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (load ls (cat "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    (uniq-orig n)
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (critical-sections (0 1))
+    (facts (same-dev ls lk)))
+  (defrole user-pass
+    (vars (k skey) (d o name) (dist-ch chan))
+    (trace (recv dist-ch (enc "dist" d o k)) (send (enc "may I pass" k))
+      (recv (enc "you may pass" k))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 (idx 2)) (p "dev-up" z2 (idx 2))
+          (p "dev-up" "k" z1 k) (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defrule same-dev-ls-lk
+    (forall ((ls lk lk-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
+        (= lk lk-0))))
+  (defrule same-dev-lk-ls
+    (forall ((lk ls ls-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
+        (= ls ls-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-dev-up-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-up" z (idx 3)) (p "dev-up" "ls" z ls)
+          (p "dev-up" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-open-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-open" z (idx 3)) (p "dev-open" "ls" z ls)
+          (p "dev-open" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-close-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-close" z (idx 3)) (p "dev-close" "ls" z ls)
+          (p "dev-close" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-pass-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-pass" z (idx 2)) (p "dev-pass" "ls" z ls)
+          (p "dev-pass" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 5)) (trans z (idx 4)))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 5)) (trans z (idx 2)))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 4)) (trans z (idx 1)))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd))
+      (implies (p "dev-open" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-open-at-1
+    (forall ((z strd))
+      (implies (p "dev-open" z (idx 4)) (trans z (idx 1)))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd))
+      (implies (p "dev-close" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd))
+      (implies (p "dev-close" z (idx 4)) (trans z (idx 2)))))
+  (defgenrule eff-dev-up-3
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-up" z (idx 4)) (prec z (idx 3) z1 i))
+        (or (= z z1)
+          (and (p "dev-up" z (idx 5)) (prec z (idx 4) z1 i))))))
+  (defgenrule cau-dev-up-2
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-up" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-open-2
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-open" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-close-2
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-close" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-pass-1
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-pass" z (idx 2)) (prec z1 i z (idx 1)))
+        (or (= z z1) (prec z1 i z (idx 0))))))
+  (defgenrule gen-st-dev-open-1
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-open" z (idx 1)) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-open-0
+    (forall ((z strd) (d o name))
+      (implies
+        (and (p "dev-open" z (idx 1)) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-close-0
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-close" z (idx 1)) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-1
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-pass" z (idx 1)) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-0
+    (forall ((z strd) (d o name))
+      (implies
+        (and (p "dev-pass" z (idx 1)) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d)) (gen-st (cat "st" d o o))))))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (d o name) (start-ch chan))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (deflistener k)
+  (uniq-orig k)
+  (conf start-ch)
+  (facts (no-state-split))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv k) (send k)))
+  (label 0)
+  (unrealized (0 1) (1 0))
+  (preskeleton)
+  (origs (k (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (d o name) (start-ch chan))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (deflistener k)
+  (precedes ((0 0) (1 0)))
+  (uniq-orig k)
+  (conf start-ch)
+  (facts (no-state-split))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv k) (send k)))
+  (label 1)
+  (parent 0)
+  (unrealized (0 1) (1 0))
+  (origs (k (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 mesg) (k skey) (d o name) (pt pt-0 pt-1 pt-2 pval)
+    (start-ch chan) (lk ls locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (deflistener k)
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (precedes ((0 0) (2 0)) ((2 4) (1 0)))
+  (uniq-orig k)
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (rule eff-dev-up-3 fact-dev-up-same-dev0 trRl_dev-up-at-1
+    trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation nonce-test (added-strand dev-up 4) k (1 0)
+    (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv k) (send k))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt old))
+      (load ls (cat pt-0 old1)) (stor lk (cat pt-1 "st-k" d o k))
+      (stor ls (cat pt-2 "st" d o))))
+  (label 2)
+  (parent 1)
+  (unrealized (0 1) (1 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol subatomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (load ls old1) (stor lk (cat "st-k" d o k))
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch)
+    (critical-sections (1 4))
+    (facts (same-dev ls lk)))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch dist-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch (enc "dist" d o k)))
+    (conf start-ch dist-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name) (dist-ch chan))
+    (trace (recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n k))
+      (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name) (dist-ch chan))
+    (trace (recv dist-ch (enc "dist" d o k))
+      (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "open" d o n k)) (load ls (cat "st" d any))
+      (load lk (cat "st-k" d o k)) (stor ls (cat "st" d o o)) (send n))
+    (critical-sections (1 3))
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (facts (same-dev ls lk)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n))
+    (gen-st (cat "st-k" d o k))
+    (critical-sections (1 3))
+    (facts (same-dev ls lk)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (load ls (cat "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    (uniq-orig n)
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (critical-sections (0 1))
+    (facts (same-dev ls lk)))
+  (defrole user-pass
+    (vars (k skey) (d o name) (dist-ch chan))
+    (trace (recv dist-ch (enc "dist" d o k)) (send (enc "may I pass" k))
+      (recv (enc "you may pass" k))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 (idx 2)) (p "dev-up" z2 (idx 2))
+          (p "dev-up" "k" z1 k) (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defrule same-dev-ls-lk
+    (forall ((ls lk lk-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
+        (= lk lk-0))))
+  (defrule same-dev-lk-ls
+    (forall ((lk ls ls-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
+        (= ls ls-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-dev-up-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-up" z (idx 3)) (p "dev-up" "ls" z ls)
+          (p "dev-up" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-open-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-open" z (idx 3)) (p "dev-open" "ls" z ls)
+          (p "dev-open" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-close-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-close" z (idx 3)) (p "dev-close" "ls" z ls)
+          (p "dev-close" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-pass-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-pass" z (idx 2)) (p "dev-pass" "ls" z ls)
+          (p "dev-pass" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 5)) (trans z (idx 4)))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 5)) (trans z (idx 2)))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 4)) (trans z (idx 1)))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd))
+      (implies (p "dev-open" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-open-at-1
+    (forall ((z strd))
+      (implies (p "dev-open" z (idx 4)) (trans z (idx 1)))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd))
+      (implies (p "dev-close" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd))
+      (implies (p "dev-close" z (idx 4)) (trans z (idx 2)))))
+  (defgenrule eff-dev-up-3
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-up" z (idx 4)) (prec z (idx 3) z1 i))
+        (or (= z z1)
+          (and (p "dev-up" z (idx 5)) (prec z (idx 4) z1 i))))))
+  (defgenrule cau-dev-up-2
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-up" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-open-2
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-open" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-close-2
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-close" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-pass-1
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-pass" z (idx 2)) (prec z1 i z (idx 1)))
+        (or (= z z1) (prec z1 i z (idx 0))))))
+  (defgenrule gen-st-dev-open-1
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-open" z (idx 1)) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-open-0
+    (forall ((z strd) (d o name))
+      (implies
+        (and (p "dev-open" z (idx 1)) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-close-0
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-close" z (idx 1)) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-1
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-pass" z (idx 1)) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-0
+    (forall ((z strd) (d o name))
+      (implies
+        (and (p "dev-pass" z (idx 1)) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d)) (gen-st (cat "st" d o o))))))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (n text) (d o name) (pt pt-0 pval) (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (uniq-orig n)
+  (facts (no-state-split))
+  (traces
+    ((load lk (cat pt "st-k" d o k)) (load ls (cat pt-0 "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k))))
+  (label 3)
+  (realized)
+  (origs (n (0 3)))
+  (comment "Not closed under rules"))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (n text) (d o name) (pt pt-0 pval) (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (uniq-orig n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (facts (same-dev ls lk) (no-state-split))
+  (rule fact-dev-pass-same-dev0 gen-st-dev-pass-0 gen-st-dev-pass-1)
+  (traces
+    ((load lk (cat pt "st-k" d o k)) (load ls (cat pt-0 "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k))))
+  (label 4)
+  (parent 3)
+  (seen 5 5 5)
+  (seen-ops
+    (5
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d o k)) (0 0)) (strand-map 0))
+    (5
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d o k)) (0 0)) (strand-map 0))
+    (5
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d o k)) (0 0)) (strand-map 0)))
+  (unrealized (0 0) (0 1))
+  (origs (n (0 3)))
+  (comment "4 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 mesg) (k skey) (n text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (start-ch chan) (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (precedes ((1 4) (0 0)))
+  (uniq-orig n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 0)))
+  (rule cau-dev-pass-1 eff-dev-up-3 fact-dev-pass-same-dev0
+    fact-dev-up-same-dev0 same-dev-lk-ls trRl_dev-up-at-1
+    trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation channel-test (added-strand dev-up 4)
+    (ch-msg lk (cat pt-2 "st-k" d o k)) (0 0))
+  (strand-map 0)
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o))))
+  (label 5)
+  (parent 4)
+  (unrealized (0 1) (1 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 mesg) (k skey) (n text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (start-ch chan) (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand owner-power-dev 1 (k k) (d d) (o o) (start-ch start-ch))
+  (precedes ((1 4) (0 0)) ((2 0) (1 0)))
+  (uniq-orig n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 0)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-up-at-1 trRl_dev-up-at-2
+    trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation channel-test (added-strand owner-power-dev 1)
+    (ch-msg start-ch (cat "power-up" d o k)) (1 0))
+  (strand-map 0 1)
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((send start-ch (cat "power-up" d o k))))
+  (label 6)
+  (parent 5)
+  (seen 7 7 7 7)
+  (seen-ops
+    (7
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (0 1)) (strand-map 0 1 2))
+    (7
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (0 1)) (strand-map 0 1 2))
+    (7
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (0 1)) (strand-map 0 1 2))
+    (7
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (0 1)) (strand-map 0 1 2)))
+  (unrealized (0 1))
+  (comment "5 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k k-0 skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval) (start-ch chan)
+    (ls lk locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand owner-power-dev 1 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-open 4 (any any) (k k-0) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (precedes ((1 4) (3 1)) ((2 0) (1 0)) ((3 3) (0 0)))
+  (uniq-orig n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 0)) ((3 3) (0 1)))
+  (rule cau-dev-open-2 cau-dev-pass-1 fact-dev-open-same-dev0
+    fact-dev-pass-same-dev0 gen-st-dev-open-1 invShearsRule
+    same-dev-ls-lk trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation channel-test (added-strand dev-open 4)
+    (ch-msg ls (cat pt "st" d o o)) (0 1))
+  (strand-map 0 1 2)
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((send start-ch (cat "power-up" d o k)))
+    ((recv (enc "open" d o n-0 k-0)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-5 "st-k" d o k-0))
+      (stor ls (cat pt "st" d o o))))
+  (label 7)
+  (parent 6)
+  (seen 8 8)
+  (seen-ops
+    (8
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-3 "st-k" d o k)) (3 2)) (strand-map 0 2 3 1))
+    (8
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-3 "st-k" d o k)) (3 2))
+      (strand-map 0 2 3 1)))
+  (unrealized (3 2))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan) (ls lk locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand owner-power-dev 1 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (precedes ((1 4) (3 1)) ((2 0) (1 0)) ((3 3) (0 0)))
+  (uniq-orig n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 0)) ((1 3) (3 2)) ((3 3) (0 1)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation channel-test (displaced 4 1 dev-up 4)
+    (ch-msg lk (cat pt-5 "st-k" d o k-0)) (3 2))
+  (strand-map 0 1 2 3)
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((send start-ch (cat "power-up" d o k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o))))
+  (label 8)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((0) ((k k) (n n) (d d) (o o) (lk lk) (ls ls))))
+  (origs (pt-2 (1 3)) (pt (3 3)) (pt-3 (1 4)) (n (0 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol subatomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (load ls old1) (stor lk (cat "st-k" d o k))
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch)
+    (critical-sections (1 4))
+    (facts (same-dev ls lk)))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch dist-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch (enc "dist" d o k)))
+    (conf start-ch dist-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name) (dist-ch chan))
+    (trace (recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n k))
+      (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name) (dist-ch chan))
+    (trace (recv dist-ch (enc "dist" d o k))
+      (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "open" d o n k)) (load ls (cat "st" d any))
+      (load lk (cat "st-k" d o k)) (stor ls (cat "st" d o o)) (send n))
+    (critical-sections (1 3))
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (facts (same-dev ls lk)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n))
+    (gen-st (cat "st-k" d o k))
+    (critical-sections (1 3))
+    (facts (same-dev ls lk)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (load ls (cat "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    (uniq-orig n)
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (critical-sections (0 1))
+    (facts (same-dev ls lk)))
+  (defrole user-pass
+    (vars (k skey) (d o name) (dist-ch chan))
+    (trace (recv dist-ch (enc "dist" d o k)) (send (enc "may I pass" k))
+      (recv (enc "you may pass" k))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 (idx 2)) (p "dev-up" z2 (idx 2))
+          (p "dev-up" "k" z1 k) (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defrule same-dev-ls-lk
+    (forall ((ls lk lk-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
+        (= lk lk-0))))
+  (defrule same-dev-lk-ls
+    (forall ((lk ls ls-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
+        (= ls ls-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-dev-up-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-up" z (idx 3)) (p "dev-up" "ls" z ls)
+          (p "dev-up" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-open-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-open" z (idx 3)) (p "dev-open" "ls" z ls)
+          (p "dev-open" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-close-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-close" z (idx 3)) (p "dev-close" "ls" z ls)
+          (p "dev-close" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-pass-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-pass" z (idx 2)) (p "dev-pass" "ls" z ls)
+          (p "dev-pass" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 5)) (trans z (idx 4)))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 5)) (trans z (idx 2)))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd))
+      (implies (p "dev-up" z (idx 4)) (trans z (idx 1)))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd))
+      (implies (p "dev-open" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-open-at-1
+    (forall ((z strd))
+      (implies (p "dev-open" z (idx 4)) (trans z (idx 1)))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd))
+      (implies (p "dev-close" z (idx 4)) (trans z (idx 3)))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd))
+      (implies (p "dev-close" z (idx 4)) (trans z (idx 2)))))
+  (defgenrule eff-dev-up-3
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-up" z (idx 4)) (prec z (idx 3) z1 i))
+        (or (= z z1)
+          (and (p "dev-up" z (idx 5)) (prec z (idx 4) z1 i))))))
+  (defgenrule cau-dev-up-2
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-up" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-open-2
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-open" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-close-2
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-close" z (idx 3)) (prec z1 i z (idx 2)))
+        (or (= z z1) (prec z1 i z (idx 1))))))
+  (defgenrule cau-dev-pass-1
+    (forall ((i indx) (z1 z strd))
+      (implies (and (p "dev-pass" z (idx 2)) (prec z1 i z (idx 1)))
+        (or (= z z1) (prec z1 i z (idx 0))))))
+  (defgenrule gen-st-dev-open-1
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-open" z (idx 1)) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-open-0
+    (forall ((z strd) (d o name))
+      (implies
+        (and (p "dev-open" z (idx 1)) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-close-0
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-close" z (idx 1)) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-1
+    (forall ((z strd) (d o name) (k skey))
+      (implies
+        (and (p "dev-pass" z (idx 1)) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-0
+    (forall ((z strd) (d o name))
+      (implies
+        (and (p "dev-pass" z (idx 1)) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d)) (gen-st (cat "st" d o o))))))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (n text) (d o d-0 o-0 name) (pt pt-0 pval)
+    (start-ch chan) (lk ls locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d-0) (o o-0) (lk lk) (ls ls))
+  (uniq-orig k n)
+  (conf start-ch)
+  (facts (no-state-split))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt "st-k" d-0 o-0 k))
+      (load ls (cat pt-0 "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
+      (send (enc "you may pass" n k))))
+  (label 9)
+  (unrealized (0 1) (1 0) (1 2))
+  (preskeleton)
+  (origs (n (1 3)) (k (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (n text) (d o d-0 o-0 name) (pt pt-0 pval)
+    (start-ch chan) (lk ls locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d-0) (o o-0) (lk lk) (ls ls))
+  (precedes ((0 0) (1 0)))
+  (uniq-orig k n)
+  (conf start-ch)
+  (facts (no-state-split))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt "st-k" d-0 o-0 k))
+      (load ls (cat pt-0 "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
+      (send (enc "you may pass" n k))))
+  (label 10)
+  (parent 9)
+  (unrealized (0 1) (1 0) (1 2))
+  (origs (n (1 3)) (k (0 0)))
+  (comment "Not closed under rules"))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (n text) (d o d-0 o-0 name) (pt pt-0 pval)
+    (start-ch chan) (lk ls locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d-0) (o o-0) (lk lk) (ls ls))
+  (precedes ((0 0) (1 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d-0 o-0 o-0) (cat "st-k" d-0 o-0 k))
+  (conf start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (rule fact-dev-pass-same-dev0 gen-st-dev-pass-0 gen-st-dev-pass-1)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt "st-k" d-0 o-0 k))
+      (load ls (cat pt-0 "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
+      (send (enc "you may pass" n k))))
+  (label 11)
+  (parent 10)
+  (seen 12 12 12)
+  (seen-ops
+    (12
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d-0 o-0 k)) (1 0)) (strand-map 0 1))
+    (12
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d-0 o-0 k)) (1 0)) (strand-map 0 1))
+    (12
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d-0 o-0 k)) (1 0))
+      (strand-map 0 1)))
+  (unrealized (0 1) (1 0) (1 1) (1 2))
+  (origs (n (1 3)) (k (0 0)))
+  (comment "4 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 mesg) (k skey) (n text) (d o d-0 o-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (start-ch start-ch-0 chan)
+    (lk ls locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d-0) (o o-0) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d-0) (o o-0)
+    (start-ch start-ch-0) (lk lk) (ls ls))
+  (precedes ((0 0) (2 0)) ((2 4) (1 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d-0 o-0 o-0) (cat "st-k" d-0 o-0 k))
+  (conf start-ch)
+  (auth start-ch-0)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (1 0)))
+  (rule cau-dev-pass-1 eff-dev-up-3 fact-dev-pass-same-dev0
+    fact-dev-up-same-dev0 same-dev-lk-ls trRl_dev-up-at-1
+    trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation channel-test (added-strand dev-up 4)
+    (ch-msg lk (cat pt-2 "st-k" d-0 o-0 k)) (1 0))
+  (strand-map 0 1)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt-2 "st-k" d-0 o-0 k))
+      (load ls (cat pt "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
+      (send (enc "you may pass" n k)))
+    ((recv start-ch-0 (cat "power-up" d-0 o-0 k))
+      (load lk (cat pt-0 old)) (load ls (cat pt-1 old1))
+      (stor lk (cat pt-2 "st-k" d-0 o-0 k))
+      (stor ls (cat pt-3 "st" d-0 o-0))))
+  (label 12)
+  (parent 11)
+  (unrealized (0 1) (1 1) (1 2) (2 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 mesg) (k skey) (n text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pval) (start-ch chan) (lk ls locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (precedes ((0 0) (2 0)) ((2 4) (1 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (1 0)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-up-at-1 trRl_dev-up-at-2
+    trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation channel-test (displaced 3 0 owner-power-dev 1)
+    (ch-msg start-ch-0 (cat "power-up" d-0 o-0 k)) (2 0))
+  (strand-map 0 1 2)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o))))
+  (label 13)
+  (parent 12)
+  (seen 14 14 14 14)
+  (seen-ops
+    (14
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (1 1)) (strand-map 0 1 2))
+    (14
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (1 1)) (strand-map 0 1 2))
+    (14
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (1 1)) (strand-map 0 1 2))
+    (14
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (1 1)) (strand-map 0 1 2)))
+  (unrealized (0 1) (1 1) (1 2))
+  (comment "5 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k k-0 skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval) (start-ch chan)
+    (ls lk locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k-0) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (precedes ((0 0) (2 0)) ((2 4) (3 1)) ((3 3) (1 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (1 0)) ((3 3) (1 1)))
+  (rule cau-dev-open-2 cau-dev-pass-1 fact-dev-open-same-dev0
+    fact-dev-pass-same-dev0 gen-st-dev-open-1 invShearsRule
+    same-dev-ls-lk trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation channel-test (added-strand dev-open 4)
+    (ch-msg ls (cat pt "st" d o o)) (1 1))
+  (strand-map 0 1 2)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((recv (enc "open" d o n-0 k-0)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-5 "st-k" d o k-0))
+      (stor ls (cat pt "st" d o o))))
+  (label 14)
+  (parent 13)
+  (seen 15 15)
+  (seen-ops
+    (15
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-3 "st-k" d o k)) (3 2)) (strand-map 0 1 3 2))
+    (15
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-3 "st-k" d o k)) (3 2))
+      (strand-map 0 1 3 2)))
+  (unrealized (0 1) (1 2) (3 2))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan) (ls lk locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (precedes ((0 0) (2 0)) ((2 4) (3 1)) ((3 3) (1 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (1 0)) ((2 3) (3 2)) ((3 3) (1 1)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation channel-test (displaced 4 2 dev-up 4)
+    (ch-msg lk (cat pt-5 "st-k" d o k-0)) (3 2))
+  (strand-map 0 1 2 3)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o))))
+  (label 15)
+  (parent 14)
+  (unrealized (0 1) (1 2) (3 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch dist-ch chan)
+    (ls lk locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (precedes ((0 0) (2 0)) ((2 4) (3 1)) ((3 3) (1 0)) ((4 1) (3 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (1 0)) ((2 3) (3 2)) ((3 3) (1 1)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (added-strand owner-open 2)
+    (enc "open" d o n-0 k) (3 0))
+  (strand-map 0 1 2 3)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k))))
+  (label 16)
+  (parent 15)
+  (unrealized (0 1) (1 2) (4 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan) (ls lk locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (deflistener k)
+  (precedes ((0 0) (2 0)) ((0 0) (4 0)) ((2 4) (3 1)) ((3 3) (1 0))
+    ((4 1) (3 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (1 0)) ((2 3) (3 2)) ((3 3) (1 1)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (added-listener k) (enc "open" d o n-0 k)
+    (3 0))
+  (strand-map 0 1 2 3)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv k) (send k)))
+  (label 17)
+  (parent 15)
+  (seen 20 20 20)
+  (seen-ops
+    (20
+      (operation nonce-test (displaced 5 2 dev-up 4) k (4 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4))
+    (20
+      (operation nonce-test (added-strand dev-up 4) k (4 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4))
+    (20
+      (operation nonce-test (added-strand dev-up 4) k (4 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4)))
+  (unrealized (0 1) (4 0))
+  (comment "4 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (dist-ch start-ch dist-ch-0 chan)
+    (ls lk locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (defstrand owner-power-dev 3 (k k) (d d) (o o) (start-ch start-ch)
+    (dist-ch dist-ch-0))
+  (precedes ((1 4) (2 1)) ((2 3) (0 0)) ((3 1) (2 0)) ((4 0) (1 0))
+    ((4 2) (3 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch dist-ch-0)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 0)) ((1 3) (2 2)) ((2 3) (0 1)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (displaced 0 5 owner-power-dev 3)
+    (enc "dist" d o k) (4 0))
+  (strand-map 4 0 1 2 3)
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch-0 (enc "dist" d o k))))
+  (label 18)
+  (parent 16)
+  (seen 21)
+  (seen-ops
+    (21
+      (operation encryption-test (added-strand dev-up 6) (enc "up" k)
+        (4 1)) (strand-map 0 1 2 3 4)))
+  (unrealized (0 2) (3 0) (4 1))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch dist-ch chan)
+    (ls lk locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (deflistener k)
+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((2 4) (3 1)) ((3 3) (1 0))
+    ((4 1) (3 0)) ((5 1) (4 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (1 0)) ((2 3) (3 2)) ((3 3) (1 1)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (added-listener k) (enc "dist" d o k)
+    (4 0))
+  (strand-map 0 1 2 3 4)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((recv k) (send k)))
+  (label 19)
+  (parent 16)
+  (seen 23 23 23 23 23 23 23)
+  (seen-ops
+    (23
+      (operation nonce-test (displaced 6 2 dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5))
+    (23
+      (operation nonce-test (displaced 6 2 dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5))
+    (23
+      (operation nonce-test (displaced 6 2 dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5))
+    (23
+      (operation nonce-test (added-strand dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5))
+    (23
+      (operation nonce-test (added-strand dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5))
+    (23
+      (operation nonce-test (added-strand dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5))
+    (23
+      (operation nonce-test (added-strand dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5)))
+  (unrealized (0 1) (5 0))
+  (comment "8 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan) (ls lk locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (deflistener k)
+  (precedes ((0 0) (2 0)) ((2 4) (4 0)) ((3 3) (1 0)) ((4 1) (3 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (1 0)) ((2 3) (3 2)) ((3 3) (1 1)))
+  (rule eff-dev-up-3 fact-dev-pass-same-dev0 trRl_dev-open-at-1
+    trRl_dev-open-at-3 trRl_dev-up-at-1 trRl_dev-up-at-2
+    trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation nonce-test (displaced 5 2 dev-up 4) k (4 0)
+    (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv k) (send k)))
+  (label 20)
+  (parent 17)
+  (unrealized (0 1) (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton subatomic-open-closed
+  (vars (any old old1 mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (dist-ch dist-ch-0 start-ch chan)
+    (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (defstrand owner-power-dev 3 (k k) (d d) (o o) (start-ch start-ch)
+    (dist-ch dist-ch-0))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (precedes ((1 3) (0 0)) ((2 1) (1 0)) ((3 0) (4 0)) ((3 2) (2 0))
+    ((4 5) (3 1)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf dist-ch-0 start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 1)) ((4 3) (0 0)) ((4 3) (1 2)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (displaced 1 5 dev-up 6) (enc "up" k)
+    (4 1))
+  (strand-map 0 4 1 2 3)
+  (traces
+    ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-0 "st" d any))
+      (load lk (cat pt-3 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch-0 (enc "dist" d o k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k))
+      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k))))
+  (label 21)
+  (parent 18)
+  (unrealized (0 2) (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (dist-ch start-ch dist-ch-0 chan)
+    (ls lk locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (defstrand owner-power-dev 3 (k k) (d d) (o o) (start-ch start-ch)
+    (dist-ch dist-ch-0))
+  (deflistener k)
+  (precedes ((1 4) (2 1)) ((2 3) (0 0)) ((3 1) (2 0)) ((4 0) (1 0))
+    ((4 0) (5 0)) ((4 2) (3 0)) ((5 1) (4 1)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch dist-ch-0)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 0)) ((1 3) (2 2)) ((2 3) (0 1)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (added-listener k) (enc "up" k) (4 1))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch-0 (enc "dist" d o k))) ((recv k) (send k)))
+  (label 22)
+  (parent 18)
+  (seen 26 26 26 26 26 26 26 26 26 26 26)
+  (seen-ops
+    (26
+      (operation nonce-test (displaced 6 1 dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5))
+    (26
+      (operation nonce-test (displaced 6 1 dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5))
+    (26
+      (operation nonce-test (displaced 6 1 dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5))
+    (26
+      (operation nonce-test (displaced 6 1 dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5))
+    (26
+      (operation nonce-test (displaced 6 1 dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5))
+    (26
+      (operation nonce-test (added-strand dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5))
+    (26
+      (operation nonce-test (added-strand dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5))
+    (26
+      (operation nonce-test (added-strand dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5))
+    (26
+      (operation nonce-test (added-strand dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5))
+    (26
+      (operation nonce-test (added-strand dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5))
+    (26
+      (operation nonce-test (added-strand dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5)))
+  (unrealized (5 0))
+  (comment "12 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch dist-ch chan)
+    (ls lk locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (deflistener k)
+  (precedes ((0 0) (2 0)) ((2 4) (5 0)) ((3 3) (1 0)) ((4 1) (3 0))
+    ((5 1) (4 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((2 3) (1 0)) ((2 3) (3 2)) ((3 3) (1 1)))
+  (rule eff-dev-up-3 fact-dev-pass-same-dev0 trRl_dev-open-at-1
+    trRl_dev-open-at-3 trRl_dev-up-at-1 trRl_dev-up-at-2
+    trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation nonce-test (displaced 6 2 dev-up 4) k (5 0)
+    (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4 5)
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((recv k) (send k)))
+  (label 23)
+  (parent 19)
+  (unrealized (0 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton subatomic-open-closed
+  (vars (any old old1 mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (dist-ch start-ch chan)
+    (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (defstrand owner-power-dev 3 (k k) (d d) (o o) (start-ch start-ch)
+    (dist-ch dist-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (precedes ((1 3) (0 0)) ((2 1) (1 0)) ((3 0) (4 0)) ((3 2) (2 0))
+    ((4 5) (3 1)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf dist-ch start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 1)) ((4 3) (0 0)) ((4 3) (1 2)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (contracted (dist-ch-0 dist-ch))
+    (enc "dist" d o k) (2 0) (ch-msg dist-ch (enc "dist" d o k)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-0 "st" d any))
+      (load lk (cat pt-3 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch (enc "dist" d o k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k))
+      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k))))
+  (label 24)
+  (parent 21)
+  (unrealized (0 2))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (any old old1 mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (dist-ch dist-ch-0 start-ch chan)
+    (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (defstrand owner-power-dev 3 (k k) (d d) (o o) (start-ch start-ch)
+    (dist-ch dist-ch-0))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (deflistener k)
+  (precedes ((1 3) (0 0)) ((2 1) (1 0)) ((3 0) (4 0)) ((3 0) (5 0))
+    ((3 2) (2 0)) ((4 5) (3 1)) ((5 1) (2 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf dist-ch-0 start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 1)) ((4 3) (0 0)) ((4 3) (1 2)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (added-listener k) (enc "dist" d o k) (2 0)
+    (ch-msg dist-ch-0 (enc "dist" d o k)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-0 "st" d any))
+      (load lk (cat pt-3 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch-0 (enc "dist" d o k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k))
+      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k)))
+    ((recv k) (send k)))
+  (label 25)
+  (parent 21)
+  (seen 29)
+  (seen-ops
+    (29
+      (operation nonce-test (added-strand dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5)))
+  (unrealized (5 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (dist-ch start-ch dist-ch-0 chan)
+    (ls lk locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (defstrand owner-power-dev 3 (k k) (d d) (o o) (start-ch start-ch)
+    (dist-ch dist-ch-0))
+  (deflistener k)
+  (precedes ((1 4) (5 0)) ((2 3) (0 0)) ((3 1) (2 0)) ((4 0) (1 0))
+    ((4 2) (3 0)) ((5 1) (4 1)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch dist-ch-0)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 0)) ((1 3) (2 2)) ((2 3) (0 1)))
+  (rule eff-dev-up-3 fact-dev-pass-same-dev0 trRl_dev-open-at-1
+    trRl_dev-open-at-3 trRl_dev-up-at-1 trRl_dev-up-at-2
+    trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation nonce-test (displaced 6 1 dev-up 4) k (5 0)
+    (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch-0 (enc "dist" d o k))) ((recv k) (send k)))
+  (label 26)
+  (parent 22)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton subatomic-open-closed
+  (vars (any old old1 mesg) (k skey) (n n-0 text) (d o d-0 o-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (dist-ch start-ch dist-ch-0 chan)
+    (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (defstrand owner-power-dev 3 (k k) (d d) (o o) (start-ch start-ch)
+    (dist-ch dist-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand user-pass 2 (k k) (d d-0) (o o-0) (dist-ch dist-ch-0))
+  (precedes ((1 3) (0 0)) ((2 1) (1 0)) ((3 0) (4 0)) ((3 2) (2 0))
+    ((4 5) (3 1)) ((5 1) (0 2)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf dist-ch start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 1)) ((4 3) (0 0)) ((4 3) (1 2)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (added-strand user-pass 2)
+    (enc "may I pass" k) (0 2))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-0 "st" d any))
+      (load lk (cat pt-3 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch (enc "dist" d o k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k))
+      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k)))
+    ((recv dist-ch-0 (enc "dist" d-0 o-0 k))
+      (send (enc "may I pass" k))))
+  (label 27)
+  (parent 24)
+  (unrealized (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (any old old1 mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (dist-ch start-ch chan)
+    (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (defstrand owner-power-dev 3 (k k) (d d) (o o) (start-ch start-ch)
+    (dist-ch dist-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (deflistener k)
+  (precedes ((1 3) (0 0)) ((2 1) (1 0)) ((3 0) (4 0)) ((3 0) (5 0))
+    ((3 2) (2 0)) ((4 5) (3 1)) ((5 1) (0 2)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf dist-ch start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 1)) ((4 3) (0 0)) ((4 3) (1 2)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (added-listener k) (enc "may I pass" k)
+    (0 2))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-0 "st" d any))
+      (load lk (cat pt-3 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch (enc "dist" d o k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k))
+      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k)))
+    ((recv k) (send k)))
+  (label 28)
+  (parent 24)
+  (seen 32)
+  (seen-ops
+    (32
+      (operation nonce-test (added-strand dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5)))
+  (unrealized (5 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (any old old1 mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (dist-ch dist-ch-0 start-ch chan)
+    (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (defstrand owner-power-dev 3 (k k) (d d) (o o) (start-ch start-ch)
+    (dist-ch dist-ch-0))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (deflistener k)
+  (precedes ((1 3) (0 0)) ((2 1) (1 0)) ((3 0) (4 0)) ((3 2) (2 0))
+    ((4 4) (5 0)) ((4 5) (3 1)) ((5 1) (2 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf dist-ch-0 start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 1)) ((4 3) (0 0)) ((4 3) (1 2)))
+  (rule eff-dev-up-3 fact-dev-pass-same-dev0 trRl_dev-open-at-1
+    trRl_dev-open-at-3 trRl_dev-up-at-1 trRl_dev-up-at-2
+    trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation nonce-test (displaced 6 4 dev-up 4) k (5 0)
+    (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-0 "st" d any))
+      (load lk (cat pt-3 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch-0 (enc "dist" d o k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k))
+      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k)))
+    ((recv k) (send k)))
+  (label 29)
+  (parent 25)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton subatomic-open-closed
+  (vars (any old old1 mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (dist-ch start-ch dist-ch-0 chan)
+    (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (defstrand owner-power-dev 3 (k k) (d d) (o o) (start-ch start-ch)
+    (dist-ch dist-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand user-pass 2 (k k) (d d) (o o) (dist-ch dist-ch-0))
+  (precedes ((1 3) (0 0)) ((2 1) (1 0)) ((3 0) (4 0)) ((3 2) (2 0))
+    ((3 2) (5 0)) ((4 5) (3 1)) ((5 1) (0 2)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf dist-ch start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 1)) ((4 3) (0 0)) ((4 3) (1 2)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (displaced 6 3 owner-power-dev 3)
+    (enc "dist" d-0 o-0 k) (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-0 "st" d any))
+      (load lk (cat pt-3 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch (enc "dist" d o k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k))
+      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k)))
+    ((recv dist-ch-0 (enc "dist" d o k)) (send (enc "may I pass" k))))
+  (label 30)
+  (parent 27)
+  (unrealized (5 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (any old old1 mesg) (k skey) (n n-0 text) (d o d-0 o-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (dist-ch start-ch dist-ch-0 chan)
+    (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (defstrand owner-power-dev 3 (k k) (d d) (o o) (start-ch start-ch)
+    (dist-ch dist-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand user-pass 2 (k k) (d d-0) (o o-0) (dist-ch dist-ch-0))
+  (deflistener k)
+  (precedes ((1 3) (0 0)) ((2 1) (1 0)) ((3 0) (4 0)) ((3 0) (6 0))
+    ((3 2) (2 0)) ((4 5) (3 1)) ((5 1) (0 2)) ((6 1) (5 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf dist-ch start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 1)) ((4 3) (0 0)) ((4 3) (1 2)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (added-listener k) (enc "dist" d-0 o-0 k)
+    (5 0))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-0 "st" d any))
+      (load lk (cat pt-3 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch (enc "dist" d o k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k))
+      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k)))
+    ((recv dist-ch-0 (enc "dist" d-0 o-0 k))
+      (send (enc "may I pass" k))) ((recv k) (send k)))
+  (label 31)
+  (parent 27)
+  (seen 35 35 35)
+  (seen-ops
+    (35
+      (operation nonce-test (displaced 7 4 dev-up 4) k (6 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5 6))
+    (35
+      (operation nonce-test (added-strand dev-up 4) k (6 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5 6))
+    (35
+      (operation nonce-test (added-strand dev-up 4) k (6 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5 6)))
+  (unrealized (6 0))
+  (comment "4 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (any old old1 mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (dist-ch start-ch chan)
+    (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (defstrand owner-power-dev 3 (k k) (d d) (o o) (start-ch start-ch)
+    (dist-ch dist-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (deflistener k)
+  (precedes ((1 3) (0 0)) ((2 1) (1 0)) ((3 0) (4 0)) ((3 2) (2 0))
+    ((4 4) (5 0)) ((4 5) (3 1)) ((5 1) (0 2)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf dist-ch start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 1)) ((4 3) (0 0)) ((4 3) (1 2)))
+  (rule eff-dev-up-3 fact-dev-pass-same-dev0 trRl_dev-open-at-1
+    trRl_dev-open-at-3 trRl_dev-up-at-1 trRl_dev-up-at-2
+    trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation nonce-test (displaced 6 4 dev-up 4) k (5 0)
+    (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-0 "st" d any))
+      (load lk (cat pt-3 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch (enc "dist" d o k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k))
+      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k)))
+    ((recv k) (send k)))
+  (label 32)
+  (parent 28)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton subatomic-open-closed
+  (vars (any old old1 mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (dist-ch start-ch chan)
+    (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (defstrand owner-power-dev 3 (k k) (d d) (o o) (start-ch start-ch)
+    (dist-ch dist-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand user-pass 2 (k k) (d d) (o o) (dist-ch dist-ch))
+  (precedes ((1 3) (0 0)) ((2 1) (1 0)) ((3 0) (4 0)) ((3 2) (2 0))
+    ((3 2) (5 0)) ((4 5) (3 1)) ((5 1) (0 2)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf dist-ch start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 1)) ((4 3) (0 0)) ((4 3) (1 2)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (contracted (dist-ch-0 dist-ch))
+    (enc "dist" d o k) (5 0) (ch-msg dist-ch (enc "dist" d o k)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-0 "st" d any))
+      (load lk (cat pt-3 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch (enc "dist" d o k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k))
+      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "may I pass" k))))
+  (label 33)
+  (parent 30)
+  (realized)
+  (shape)
+  (maps
+    ((3 0)
+      ((k k) (d d) (o o) (start-ch start-ch) (n n) (d-0 d) (o-0 o)
+        (lk lk) (ls ls))))
+  (origs (pt-3 (4 3)) (pt-4 (4 4)) (pt (1 3)) (n (0 3)) (k (3 0))))
+
+(defskeleton subatomic-open-closed
+  (vars (any old old1 mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (dist-ch start-ch dist-ch-0 chan)
+    (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (defstrand owner-power-dev 3 (k k) (d d) (o o) (start-ch start-ch)
+    (dist-ch dist-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand user-pass 2 (k k) (d d) (o o) (dist-ch dist-ch-0))
+  (deflistener k)
+  (precedes ((1 3) (0 0)) ((2 1) (1 0)) ((3 0) (4 0)) ((3 0) (6 0))
+    ((3 2) (2 0)) ((3 2) (5 0)) ((4 5) (3 1)) ((5 1) (0 2))
+    ((6 1) (5 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf dist-ch start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 1)) ((4 3) (0 0)) ((4 3) (1 2)))
+  (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
+    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation encryption-test (added-listener k) (enc "dist" d o k) (5 0)
+    (ch-msg dist-ch (enc "dist" d o k)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-0 "st" d any))
+      (load lk (cat pt-3 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch (enc "dist" d o k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k))
+      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k)))
+    ((recv dist-ch-0 (enc "dist" d o k)) (send (enc "may I pass" k)))
+    ((recv k) (send k)))
+  (label 34)
+  (parent 30)
+  (seen 36)
+  (seen-ops
+    (36
+      (operation nonce-test (added-strand dev-up 4) k (6 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5 6)))
+  (unrealized (6 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton subatomic-open-closed
+  (vars (any old old1 mesg) (k skey) (n n-0 text) (d o d-0 o-0 name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (dist-ch start-ch dist-ch-0 chan)
+    (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (defstrand owner-power-dev 3 (k k) (d d) (o o) (start-ch start-ch)
+    (dist-ch dist-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand user-pass 2 (k k) (d d-0) (o o-0) (dist-ch dist-ch-0))
+  (deflistener k)
+  (precedes ((1 3) (0 0)) ((2 1) (1 0)) ((3 0) (4 0)) ((3 2) (2 0))
+    ((4 4) (6 0)) ((4 5) (3 1)) ((5 1) (0 2)) ((6 1) (5 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf dist-ch start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 1)) ((4 3) (0 0)) ((4 3) (1 2)))
+  (rule eff-dev-up-3 fact-dev-pass-same-dev0 trRl_dev-open-at-1
+    trRl_dev-open-at-3 trRl_dev-up-at-1 trRl_dev-up-at-2
+    trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation nonce-test (displaced 7 4 dev-up 4) k (6 0)
+    (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-0 "st" d any))
+      (load lk (cat pt-3 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch (enc "dist" d o k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k))
+      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k)))
+    ((recv dist-ch-0 (enc "dist" d-0 o-0 k))
+      (send (enc "may I pass" k))) ((recv k) (send k)))
+  (label 35)
+  (parent 31)
+  (unrealized (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton subatomic-open-closed
+  (vars (any old old1 mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (dist-ch start-ch dist-ch-0 chan)
+    (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 2 (k k) (n n-0) (d d) (o o) (dist-ch dist-ch))
+  (defstrand owner-power-dev 3 (k k) (d d) (o o) (start-ch start-ch)
+    (dist-ch dist-ch))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand user-pass 2 (k k) (d d) (o o) (dist-ch dist-ch-0))
+  (deflistener k)
+  (precedes ((1 3) (0 0)) ((2 1) (1 0)) ((3 0) (4 0)) ((3 2) (2 0))
+    ((3 2) (5 0)) ((4 4) (6 0)) ((4 5) (3 1)) ((5 1) (0 2))
+    ((6 1) (5 0)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf dist-ch start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (leads-to ((1 3) (0 1)) ((4 3) (0 0)) ((4 3) (1 2)))
+  (rule eff-dev-up-3 fact-dev-pass-same-dev0 trRl_dev-open-at-1
+    trRl_dev-open-at-3 trRl_dev-up-at-1 trRl_dev-up-at-2
+    trRl_dev-up-at-3 trRl_dev-up-at-4)
+  (operation nonce-test (displaced 7 4 dev-up 4) k (6 0)
+    (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-0 "st" d any))
+      (load lk (cat pt-3 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((recv dist-ch (enc "dist" d o k)) (send (enc "open" d o n-0 k)))
+    ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k))
+      (send dist-ch (enc "dist" d o k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k))
+      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k)))
+    ((recv dist-ch-0 (enc "dist" d o k)) (send (enc "may I pass" k)))
+    ((recv k) (send k)))
+  (label 36)
+  (parent 34)
+  (unrealized (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
diff --git a/tst/subatomic-open-closed-test-genrule.tst b/tst/subatomic-open-closed-test-genrule.tst
--- a/tst/subatomic-open-closed-test-genrule.tst
+++ b/tst/subatomic-open-closed-test-genrule.tst
@@ -1,6 +1,6 @@
 (herald subatomic-open-closed-test-genrule (bound 40))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment
   "All input read from tst/subatomic-open-closed-test-genrule.scm")
 (comment "Strand count bounded at 40")
@@ -363,6 +363,7 @@
     trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation nonce-test (added-strand dev-up 4) k (1 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv k) (send k))
     ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt old))
@@ -370,9 +371,9 @@
       (stor ls (cat pt-2 "st" d o))))
   (label 2)
   (parent 1)
-  (seen 2)
   (unrealized (0 1) (1 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (comment "Nothing left to do")
 
@@ -712,7 +713,17 @@
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k))))
   (label 4)
   (parent 3)
-  (seen 5)
+  (seen 5 5 5)
+  (seen-ops
+    (5
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d o k)) (0 0)) (strand-map 0))
+    (5
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d o k)) (0 0)) (strand-map 0))
+    (5
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d o k)) (0 0)) (strand-map 0)))
   (unrealized (0 0) (0 1))
   (origs (n (0 3)))
   (comment "4 in cohort - 1 not yet seen"))
@@ -734,6 +745,7 @@
     trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (added-strand dev-up 4)
     (ch-msg lk (cat pt-2 "st-k" d o k)) (0 0))
+  (strand-map 0)
   (traces
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -763,6 +775,7 @@
     trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (added-strand owner-power-dev 1)
     (ch-msg start-ch (cat "power-up" d o k)) (1 0))
+  (strand-map 0 1)
   (traces
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -772,7 +785,20 @@
     ((send start-ch (cat "power-up" d o k))))
   (label 6)
   (parent 5)
-  (seen 7)
+  (seen 7 7 7 7)
+  (seen-ops
+    (7
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (0 1)) (strand-map 0 1 2))
+    (7
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (0 1)) (strand-map 0 1 2))
+    (7
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (0 1)) (strand-map 0 1 2))
+    (7
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (0 1)) (strand-map 0 1 2)))
   (unrealized (0 1))
   (comment "5 in cohort - 1 not yet seen"))
 
@@ -799,6 +825,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (added-strand dev-open 4)
     (ch-msg ls (cat pt "st" d o o)) (0 1))
+  (strand-map 0 1 2)
   (traces
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -811,7 +838,15 @@
       (stor ls (cat pt "st" d o o))))
   (label 7)
   (parent 6)
-  (seen 8)
+  (seen 8 8)
+  (seen-ops
+    (8
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-3 "st-k" d o k)) (3 2)) (strand-map 0 2 3 1))
+    (8
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-3 "st-k" d o k)) (3 2))
+      (strand-map 0 2 3 1)))
   (unrealized (3 2))
   (comment "3 in cohort - 1 not yet seen"))
 
@@ -835,6 +870,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (displaced 4 1 dev-up 4)
     (ch-msg lk (cat pt-5 "st-k" d o k-0)) (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1218,7 +1254,18 @@
       (send (enc "you may pass" n k))))
   (label 11)
   (parent 10)
-  (seen 12)
+  (seen 12 12 12)
+  (seen-ops
+    (12
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d-0 o-0 k)) (1 0)) (strand-map 0 1))
+    (12
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d-0 o-0 k)) (1 0)) (strand-map 0 1))
+    (12
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d-0 o-0 k)) (1 0))
+      (strand-map 0 1)))
   (unrealized (0 1) (1 0) (1 1) (1 2))
   (origs (n (1 3)) (k (0 0)))
   (comment "4 in cohort - 1 not yet seen"))
@@ -1243,6 +1290,7 @@
     trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (added-strand dev-up 4)
     (ch-msg lk (cat pt-2 "st-k" d-0 o-0 k)) (1 0))
+  (strand-map 0 1)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d-0 o-0 k))
       (load ls (cat pt "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
@@ -1274,6 +1322,7 @@
     trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (displaced 3 0 owner-power-dev 1)
     (ch-msg start-ch-0 (cat "power-up" d-0 o-0 k)) (2 0))
+  (strand-map 0 1 2)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1282,7 +1331,20 @@
       (stor ls (cat pt-3 "st" d o))))
   (label 13)
   (parent 12)
-  (seen 14)
+  (seen 14 14 14 14)
+  (seen-ops
+    (14
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (1 1)) (strand-map 0 1 2))
+    (14
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (1 1)) (strand-map 0 1 2))
+    (14
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (1 1)) (strand-map 0 1 2))
+    (14
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (1 1)) (strand-map 0 1 2)))
   (unrealized (0 1) (1 1) (1 2))
   (comment "5 in cohort - 1 not yet seen"))
 
@@ -1309,6 +1371,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (added-strand dev-open 4)
     (ch-msg ls (cat pt "st" d o o)) (1 1))
+  (strand-map 0 1 2)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1320,7 +1383,15 @@
       (stor ls (cat pt "st" d o o))))
   (label 14)
   (parent 13)
-  (seen 15)
+  (seen 15 15)
+  (seen-ops
+    (15
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-3 "st-k" d o k)) (3 2)) (strand-map 0 1 3 2))
+    (15
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-3 "st-k" d o k)) (3 2))
+      (strand-map 0 1 3 2)))
   (unrealized (0 1) (1 2) (3 2))
   (comment "3 in cohort - 1 not yet seen"))
 
@@ -1344,6 +1415,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (displaced 4 2 dev-up 4)
     (ch-msg lk (cat pt-5 "st-k" d o k-0)) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1378,6 +1450,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (added-strand owner-open 1)
     (enc "open" d o n-0 k) (3 0))
+  (strand-map 0 1 2 3)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1414,6 +1487,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (added-listener k) (enc "open" d o n-0 k)
     (3 0))
+  (strand-map 0 1 2 3)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1425,7 +1499,20 @@
     ((recv k) (send k)))
   (label 17)
   (parent 15)
-  (seen 20)
+  (seen 20 20 20)
+  (seen-ops
+    (20
+      (operation nonce-test (displaced 5 2 dev-up 4) k (4 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4))
+    (20
+      (operation nonce-test (added-strand dev-up 4) k (4 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4))
+    (20
+      (operation nonce-test (added-strand dev-up 4) k (4 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4)))
   (unrealized (0 1) (4 0))
   (comment "4 in cohort - 1 not yet seen"))
 
@@ -1452,6 +1539,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (added-strand user-pass 1)
     (enc "may I pass" k) (1 2))
+  (strand-map 0 1 2 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1464,6 +1552,10 @@
   (label 18)
   (parent 16)
   (seen 21)
+  (seen-ops
+    (21
+      (operation encryption-test (added-strand dev-up 6) (enc "up" k)
+        (0 1)) (strand-map 0 1 2 3 4 5)))
   (unrealized (0 1))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -1490,6 +1582,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (added-listener k) (enc "may I pass" k)
     (1 2))
+  (strand-map 0 1 2 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1502,6 +1595,11 @@
   (label 19)
   (parent 16)
   (seen 23)
+  (seen-ops
+    (23
+      (operation nonce-test (added-strand dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5)))
   (unrealized (0 1) (5 0))
   (comment "2 in cohort - 1 not yet seen"))
 
@@ -1527,6 +1625,7 @@
     trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation nonce-test (displaced 5 2 dev-up 4) k (4 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1538,9 +1637,9 @@
     ((recv k) (send k)))
   (label 20)
   (parent 17)
-  (seen 20)
   (unrealized (0 1) (4 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (defskeleton subatomic-open-closed
   (vars (any old old1 mesg) (k skey) (n n-0 text) (d o name)
@@ -1565,6 +1664,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (displaced 2 6 dev-up 6) (enc "up" k)
     (0 1))
+  (strand-map 0 1 5 2 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1607,6 +1707,7 @@
   (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (added-listener k) (enc "up" k) (0 1))
+  (strand-map 0 1 2 3 4 5)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1619,7 +1720,20 @@
     ((recv k) (send k)))
   (label 22)
   (parent 18)
-  (seen 24)
+  (seen 24 24 24)
+  (seen-ops
+    (24
+      (operation nonce-test (displaced 7 2 dev-up 4) k (6 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5 6))
+    (24
+      (operation nonce-test (added-strand dev-up 4) k (6 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5 6))
+    (24
+      (operation nonce-test (added-strand dev-up 4) k (6 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5 6)))
   (unrealized (6 0))
   (comment "4 in cohort - 1 not yet seen"))
 
@@ -1647,6 +1761,7 @@
     trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation nonce-test (displaced 6 2 dev-up 4) k (5 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4 5)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1658,9 +1773,9 @@
     ((send (enc "open" d o n-0 k))) ((recv k) (send k)))
   (label 23)
   (parent 19)
-  (seen 23)
   (unrealized (0 1) (5 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (defskeleton subatomic-open-closed
   (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
@@ -1687,6 +1802,7 @@
     trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation nonce-test (displaced 7 2 dev-up 4) k (6 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1699,8 +1815,8 @@
     ((recv k) (send k)))
   (label 24)
   (parent 22)
-  (seen 24)
   (unrealized (6 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (comment "Nothing left to do")
diff --git a/tst/subatomic-open-closed-test-genrule_shapes.tst b/tst/subatomic-open-closed-test-genrule_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/subatomic-open-closed-test-genrule_shapes.tst
@@ -0,0 +1,993 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald subatomic-open-closed-test-genrule (bound 40))
+
+(comment "CPSA 4.3.1")
+
+(comment
+  "All input read from tst/subatomic-open-closed-test-genrule.scm")
+
+(comment "Strand count bounded at 40")
+
+(defprotocol subatomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (load ls old1) (stor lk (cat "st-k" d o k))
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch)
+    (critical-sections (1 4))
+    (facts (same-dev ls lk)))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "open" d o n k)) (load ls (cat "st" d any))
+      (load lk (cat "st-k" d o k)) (stor ls (cat "st" d o o)) (send n))
+    (critical-sections (1 3))
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (facts (same-dev ls lk)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n))
+    (gen-st (cat "st-k" d o k))
+    (critical-sections (1 3))
+    (facts (same-dev ls lk)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (load ls (cat "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    (uniq-orig n)
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (critical-sections (0 1))
+    (facts (same-dev ls lk)))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defrule same-dev-ls-lk
+    (forall ((ls lk lk-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
+        (= lk lk-0))))
+  (defrule same-dev-lk-ls
+    (forall ((lk ls ls-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
+        (= ls ls-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-dev-up-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-up" z 3) (p "dev-up" "lk" z lk)
+          (p "dev-up" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-open-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-open" z 3) (p "dev-open" "lk" z lk)
+          (p "dev-open" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-close-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-close" z 3) (p "dev-close" "lk" z lk)
+          (p "dev-close" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-pass-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-pass" z 2) (p "dev-pass" "lk" z lk)
+          (p "dev-pass" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-1
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 1))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2))))
+  (defgenrule eff-dev-up-3
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 4) (prec z 3 z1 i))
+        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
+  (defgenrule cau-dev-up-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-open-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-open" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-close-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-close" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-pass-1
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-pass" z 2) (prec z1 i z 1))
+        (or (= z z1) (prec z1 i z 0)))))
+  (defgenrule gen-st-dev-open-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-open-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-close-0
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule gen-st-dev-pass-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-pass-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule fact-dev-pass-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-pass" z 2) (p "dev-pass" "ls" z ls)
+          (p "dev-pass" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 3) (trans z 2))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule gen-st-dev-close-0
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule fact-dev-close-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-close" z 3) (p "dev-close" "ls" z ls)
+          (p "dev-close" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-open-at-1
+    (forall ((z strd)) (implies (p "dev-open" z 2) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule gen-st-dev-open-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-open-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule fact-dev-open-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-open" z 3) (p "dev-open" "ls" z ls)
+          (p "dev-open" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 2) (trans z 1))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule fact-dev-up-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-up" z 3) (p "dev-up" "ls" z ls)
+          (p "dev-up" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule cau-dev-pass-1
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-pass" z 2) (prec z1 i z 1))
+        (or (= z z1) (prec z1 i z 0)))))
+  (defgenrule cau-dev-close-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-close" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-open-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-open" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-up-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule eff-dev-up-3
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 4) (prec z 3 z1 i))
+        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2))))))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (d o name) (start-ch chan))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (deflistener k)
+  (uniq-orig k)
+  (conf start-ch)
+  (facts (no-state-split))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv k) (send k)))
+  (label 0)
+  (unrealized (0 1) (1 0))
+  (preskeleton)
+  (origs (k (0 0)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol subatomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (load ls old1) (stor lk (cat "st-k" d o k))
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch)
+    (critical-sections (1 4))
+    (facts (same-dev ls lk)))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "open" d o n k)) (load ls (cat "st" d any))
+      (load lk (cat "st-k" d o k)) (stor ls (cat "st" d o o)) (send n))
+    (critical-sections (1 3))
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (facts (same-dev ls lk)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n))
+    (gen-st (cat "st-k" d o k))
+    (critical-sections (1 3))
+    (facts (same-dev ls lk)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (load ls (cat "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    (uniq-orig n)
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (critical-sections (0 1))
+    (facts (same-dev ls lk)))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defrule same-dev-ls-lk
+    (forall ((ls lk lk-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
+        (= lk lk-0))))
+  (defrule same-dev-lk-ls
+    (forall ((lk ls ls-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
+        (= ls ls-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-dev-up-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-up" z 3) (p "dev-up" "lk" z lk)
+          (p "dev-up" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-open-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-open" z 3) (p "dev-open" "lk" z lk)
+          (p "dev-open" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-close-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-close" z 3) (p "dev-close" "lk" z lk)
+          (p "dev-close" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-pass-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-pass" z 2) (p "dev-pass" "lk" z lk)
+          (p "dev-pass" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-1
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 1))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2))))
+  (defgenrule eff-dev-up-3
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 4) (prec z 3 z1 i))
+        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
+  (defgenrule cau-dev-up-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-open-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-open" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-close-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-close" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-pass-1
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-pass" z 2) (prec z1 i z 1))
+        (or (= z z1) (prec z1 i z 0)))))
+  (defgenrule gen-st-dev-open-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-open-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-close-0
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule gen-st-dev-pass-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-pass-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule fact-dev-pass-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-pass" z 2) (p "dev-pass" "ls" z ls)
+          (p "dev-pass" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 3) (trans z 2))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule gen-st-dev-close-0
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule fact-dev-close-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-close" z 3) (p "dev-close" "ls" z ls)
+          (p "dev-close" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-open-at-1
+    (forall ((z strd)) (implies (p "dev-open" z 2) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule gen-st-dev-open-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-open-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule fact-dev-open-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-open" z 3) (p "dev-open" "ls" z ls)
+          (p "dev-open" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 2) (trans z 1))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule fact-dev-up-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-up" z 3) (p "dev-up" "ls" z ls)
+          (p "dev-up" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule cau-dev-pass-1
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-pass" z 2) (prec z1 i z 1))
+        (or (= z z1) (prec z1 i z 0)))))
+  (defgenrule cau-dev-close-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-close" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-open-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-open" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-up-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule eff-dev-up-3
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 4) (prec z 3 z1 i))
+        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2))))))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (n text) (d o name) (pt pt-0 pval) (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (uniq-orig n)
+  (facts (no-state-split))
+  (traces
+    ((load lk (cat pt "st-k" d o k)) (load ls (cat pt-0 "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k))))
+  (label 3)
+  (realized)
+  (origs (n (0 3)))
+  (comment "Not closed under rules"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan) (ls lk locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand owner-power-dev 1 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (precedes ((1 4) (3 1)) ((2 0) (1 0)) ((3 3) (0 0)))
+  (uniq-orig n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (trans 3 3) (trans 3 1) (trans 1 4)
+    (trans 1 2) (trans 1 3) (trans 1 1) (no-state-split))
+  (operation channel-test (displaced 4 1 dev-up 4)
+    (ch-msg lk (cat pt-5 "st-k" d o k-0)) (3 2))
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((send start-ch (cat "power-up" d o k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o))))
+  (label 8)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps
+    ((0) ((k k) (n n) (d d) (o o) (lk lk) (ls ls) (pt pt-2) (pt-0 pt))))
+  (origs (pt-2 (1 3)) (pt (3 3)) (pt-3 (1 4)) (n (0 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol subatomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (load ls old1) (stor lk (cat "st-k" d o k))
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch)
+    (critical-sections (1 4))
+    (facts (same-dev ls lk)))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "open" d o n k)) (load ls (cat "st" d any))
+      (load lk (cat "st-k" d o k)) (stor ls (cat "st" d o o)) (send n))
+    (critical-sections (1 3))
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (facts (same-dev ls lk)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n))
+    (gen-st (cat "st-k" d o k))
+    (critical-sections (1 3))
+    (facts (same-dev ls lk)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (load ls (cat "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    (uniq-orig n)
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (critical-sections (0 1))
+    (facts (same-dev ls lk)))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defrule same-dev-ls-lk
+    (forall ((ls lk lk-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
+        (= lk lk-0))))
+  (defrule same-dev-lk-ls
+    (forall ((lk ls ls-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
+        (= ls ls-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-dev-up-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-up" z 3) (p "dev-up" "lk" z lk)
+          (p "dev-up" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-open-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-open" z 3) (p "dev-open" "lk" z lk)
+          (p "dev-open" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-close-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-close" z 3) (p "dev-close" "lk" z lk)
+          (p "dev-close" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-pass-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-pass" z 2) (p "dev-pass" "lk" z lk)
+          (p "dev-pass" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-1
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 1))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2))))
+  (defgenrule eff-dev-up-3
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 4) (prec z 3 z1 i))
+        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
+  (defgenrule cau-dev-up-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-open-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-open" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-close-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-close" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-pass-1
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-pass" z 2) (prec z1 i z 1))
+        (or (= z z1) (prec z1 i z 0)))))
+  (defgenrule gen-st-dev-open-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-open-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-close-0
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defgenrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2)) (false))))
+  (defgenrule gen-st-dev-pass-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-pass-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule fact-dev-pass-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-pass" z 2) (p "dev-pass" "ls" z ls)
+          (p "dev-pass" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 3) (trans z 2))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule gen-st-dev-close-0
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule fact-dev-close-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-close" z 3) (p "dev-close" "ls" z ls)
+          (p "dev-close" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-open-at-1
+    (forall ((z strd)) (implies (p "dev-open" z 2) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule gen-st-dev-open-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-open-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule fact-dev-open-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-open" z 3) (p "dev-open" "ls" z ls)
+          (p "dev-open" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 2) (trans z 1))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule fact-dev-up-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-up" z 3) (p "dev-up" "ls" z ls)
+          (p "dev-up" "lk" z lk)) (fact same-dev ls lk))))
+  (defgenrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defgenrule cau-dev-pass-1
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-pass" z 2) (prec z1 i z 1))
+        (or (= z z1) (prec z1 i z 0)))))
+  (defgenrule cau-dev-close-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-close" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-open-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-open" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-up-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule eff-dev-up-3
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 4) (prec z 3 z1 i))
+        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2))))))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (n text) (d o d-0 o-0 name) (pt pt-0 pval)
+    (start-ch chan) (lk ls locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d-0) (o o-0) (lk lk) (ls ls))
+  (uniq-orig k n)
+  (conf start-ch)
+  (facts (no-state-split))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt "st-k" d-0 o-0 k))
+      (load ls (cat pt-0 "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
+      (send (enc "you may pass" n k))))
+  (label 9)
+  (unrealized (0 1) (1 0) (1 2))
+  (preskeleton)
+  (origs (n (1 3)) (k (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton subatomic-open-closed
+  (vars (any old old1 mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan) (lk ls locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 1 (k k) (n n-0) (d d) (o o))
+  (defstrand user-pass 1 (k k))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (precedes ((0 0) (5 0)) ((2 3) (1 0)) ((3 0) (2 0)) ((4 0) (1 2))
+    ((5 4) (2 1)) ((5 5) (0 1)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (trans 2 3) (trans 2 1) (trans 5 4)
+    (trans 5 2) (trans 5 3) (trans 5 1) (no-state-split))
+  (operation encryption-test (displaced 2 6 dev-up 6) (enc "up" k)
+    (0 1))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-0 "st" d any))
+      (load lk (cat pt-3 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((send (enc "open" d o n-0 k))) ((send (enc "may I pass" k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k))
+      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k))))
+  (label 21)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((k k) (d d) (o o) (start-ch start-ch) (n n) (d-0 d) (o-0 o)
+        (lk lk) (ls ls) (pt pt-3) (pt-0 pt))))
+  (origs (pt-3 (5 3)) (pt-4 (5 4)) (pt (2 3)) (n (1 3)) (k (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/subatomic-open-closed.tst b/tst/subatomic-open-closed.tst
--- a/tst/subatomic-open-closed.tst
+++ b/tst/subatomic-open-closed.tst
@@ -1,6 +1,6 @@
 (herald subatomic-open-closed (bound 40))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/subatomic-open-closed.scm")
 (comment "Strand count bounded at 40")
 
@@ -242,6 +242,7 @@
     trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation nonce-test (added-strand dev-up 4) k (1 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((recv k) (send k))
     ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt old))
@@ -249,9 +250,9 @@
       (stor ls (cat pt-2 "st" d o))))
   (label 2)
   (parent 1)
-  (seen 2)
   (unrealized (0 1) (1 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (comment "Nothing left to do")
 
@@ -471,7 +472,17 @@
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k))))
   (label 4)
   (parent 3)
-  (seen 5)
+  (seen 5 5 5)
+  (seen-ops
+    (5
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d o k)) (0 0)) (strand-map 0))
+    (5
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d o k)) (0 0)) (strand-map 0))
+    (5
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d o k)) (0 0)) (strand-map 0)))
   (unrealized (0 0) (0 1))
   (origs (n (0 3)))
   (comment "4 in cohort - 1 not yet seen"))
@@ -493,6 +504,7 @@
     trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (added-strand dev-up 4)
     (ch-msg lk (cat pt-2 "st-k" d o k)) (0 0))
+  (strand-map 0)
   (traces
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -522,6 +534,7 @@
     trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (added-strand owner-power-dev 1)
     (ch-msg start-ch (cat "power-up" d o k)) (1 0))
+  (strand-map 0 1)
   (traces
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -531,7 +544,20 @@
     ((send start-ch (cat "power-up" d o k))))
   (label 6)
   (parent 5)
-  (seen 7)
+  (seen 7 7 7 7)
+  (seen-ops
+    (7
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (0 1)) (strand-map 0 1 2))
+    (7
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (0 1)) (strand-map 0 1 2))
+    (7
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (0 1)) (strand-map 0 1 2))
+    (7
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (0 1)) (strand-map 0 1 2)))
   (unrealized (0 1))
   (comment "5 in cohort - 1 not yet seen"))
 
@@ -558,6 +584,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (added-strand dev-open 4)
     (ch-msg ls (cat pt "st" d o o)) (0 1))
+  (strand-map 0 1 2)
   (traces
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -570,7 +597,15 @@
       (stor ls (cat pt "st" d o o))))
   (label 7)
   (parent 6)
-  (seen 8)
+  (seen 8 8)
+  (seen-ops
+    (8
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-3 "st-k" d o k)) (3 2)) (strand-map 0 2 3 1))
+    (8
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-3 "st-k" d o k)) (3 2))
+      (strand-map 0 2 3 1)))
   (unrealized (3 2))
   (comment "3 in cohort - 1 not yet seen"))
 
@@ -594,6 +629,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (displaced 4 1 dev-up 4)
     (ch-msg lk (cat pt-5 "st-k" d o k-0)) (3 2))
+  (strand-map 0 1 2 3)
   (traces
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -857,7 +893,18 @@
       (send (enc "you may pass" n k))))
   (label 11)
   (parent 10)
-  (seen 12)
+  (seen 12 12 12)
+  (seen-ops
+    (12
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d-0 o-0 k)) (1 0)) (strand-map 0 1))
+    (12
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d-0 o-0 k)) (1 0)) (strand-map 0 1))
+    (12
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-2 "st-k" d-0 o-0 k)) (1 0))
+      (strand-map 0 1)))
   (unrealized (0 1) (1 0) (1 1) (1 2))
   (origs (n (1 3)) (k (0 0)))
   (comment "4 in cohort - 1 not yet seen"))
@@ -882,6 +929,7 @@
     trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (added-strand dev-up 4)
     (ch-msg lk (cat pt-2 "st-k" d-0 o-0 k)) (1 0))
+  (strand-map 0 1)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d-0 o-0 k))
       (load ls (cat pt "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
@@ -913,6 +961,7 @@
     trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (displaced 3 0 owner-power-dev 1)
     (ch-msg start-ch-0 (cat "power-up" d-0 o-0 k)) (2 0))
+  (strand-map 0 1 2)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -921,7 +970,20 @@
       (stor ls (cat pt-3 "st" d o))))
   (label 13)
   (parent 12)
-  (seen 14)
+  (seen 14 14 14 14)
+  (seen-ops
+    (14
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (1 1)) (strand-map 0 1 2))
+    (14
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (1 1)) (strand-map 0 1 2))
+    (14
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (1 1)) (strand-map 0 1 2))
+    (14
+      (operation channel-test (added-strand dev-open 4)
+        (ch-msg ls (cat pt "st" d o o)) (1 1)) (strand-map 0 1 2)))
   (unrealized (0 1) (1 1) (1 2))
   (comment "5 in cohort - 1 not yet seen"))
 
@@ -948,6 +1010,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (added-strand dev-open 4)
     (ch-msg ls (cat pt "st" d o o)) (1 1))
+  (strand-map 0 1 2)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -959,7 +1022,15 @@
       (stor ls (cat pt "st" d o o))))
   (label 14)
   (parent 13)
-  (seen 15)
+  (seen 15 15)
+  (seen-ops
+    (15
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-3 "st-k" d o k)) (3 2)) (strand-map 0 1 3 2))
+    (15
+      (operation channel-test (added-strand dev-up 4)
+        (ch-msg lk (cat pt-3 "st-k" d o k)) (3 2))
+      (strand-map 0 1 3 2)))
   (unrealized (0 1) (1 2) (3 2))
   (comment "3 in cohort - 1 not yet seen"))
 
@@ -983,6 +1054,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation channel-test (displaced 4 2 dev-up 4)
     (ch-msg lk (cat pt-5 "st-k" d o k-0)) (3 2))
+  (strand-map 0 1 2 3)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1017,6 +1089,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (added-strand owner-open 1)
     (enc "open" d o n-0 k) (3 0))
+  (strand-map 0 1 2 3)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1053,6 +1126,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (added-listener k) (enc "open" d o n-0 k)
     (3 0))
+  (strand-map 0 1 2 3)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1064,7 +1138,20 @@
     ((recv k) (send k)))
   (label 17)
   (parent 15)
-  (seen 20)
+  (seen 20 20 20)
+  (seen-ops
+    (20
+      (operation nonce-test (displaced 5 2 dev-up 4) k (4 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4))
+    (20
+      (operation nonce-test (added-strand dev-up 4) k (4 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4))
+    (20
+      (operation nonce-test (added-strand dev-up 4) k (4 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4)))
   (unrealized (0 1) (4 0))
   (comment "4 in cohort - 1 not yet seen"))
 
@@ -1091,6 +1178,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (added-strand user-pass 1)
     (enc "may I pass" k) (1 2))
+  (strand-map 0 1 2 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1103,6 +1191,10 @@
   (label 18)
   (parent 16)
   (seen 21)
+  (seen-ops
+    (21
+      (operation encryption-test (added-strand dev-up 6) (enc "up" k)
+        (0 1)) (strand-map 0 1 2 3 4 5)))
   (unrealized (0 1))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -1129,6 +1221,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (added-listener k) (enc "may I pass" k)
     (1 2))
+  (strand-map 0 1 2 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1141,6 +1234,11 @@
   (label 19)
   (parent 16)
   (seen 23)
+  (seen-ops
+    (23
+      (operation nonce-test (added-strand dev-up 4) k (5 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5)))
   (unrealized (0 1) (5 0))
   (comment "2 in cohort - 1 not yet seen"))
 
@@ -1166,6 +1264,7 @@
     trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation nonce-test (displaced 5 2 dev-up 4) k (4 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1177,9 +1276,9 @@
     ((recv k) (send k)))
   (label 20)
   (parent 17)
-  (seen 20)
   (unrealized (0 1) (4 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (defskeleton subatomic-open-closed
   (vars (any old old1 mesg) (k skey) (n n-0 text) (d o name)
@@ -1204,6 +1303,7 @@
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (displaced 2 6 dev-up 6) (enc "up" k)
     (0 1))
+  (strand-map 0 1 5 2 3 4)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1246,6 +1346,7 @@
   (rule fact-dev-pass-same-dev0 trRl_dev-open-at-1 trRl_dev-open-at-3
     trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation encryption-test (added-listener k) (enc "up" k) (0 1))
+  (strand-map 0 1 2 3 4 5)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1258,7 +1359,20 @@
     ((recv k) (send k)))
   (label 22)
   (parent 18)
-  (seen 24)
+  (seen 24 24 24)
+  (seen-ops
+    (24
+      (operation nonce-test (displaced 7 2 dev-up 4) k (6 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5 6))
+    (24
+      (operation nonce-test (added-strand dev-up 4) k (6 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5 6))
+    (24
+      (operation nonce-test (added-strand dev-up 4) k (6 0)
+        (ch-msg start-ch (cat "power-up" d o k)))
+      (strand-map 0 1 2 3 4 5 6)))
   (unrealized (6 0))
   (comment "4 in cohort - 1 not yet seen"))
 
@@ -1286,6 +1400,7 @@
     trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation nonce-test (displaced 6 2 dev-up 4) k (5 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4 5)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1297,9 +1412,9 @@
     ((send (enc "open" d o n-0 k))) ((recv k) (send k)))
   (label 23)
   (parent 19)
-  (seen 23)
   (unrealized (0 1) (5 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (defskeleton subatomic-open-closed
   (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
@@ -1326,6 +1441,7 @@
     trRl_dev-up-at-3 trRl_dev-up-at-4)
   (operation nonce-test (displaced 7 2 dev-up 4) k (6 0)
     (ch-msg start-ch (cat "power-up" d o k)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
     ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
       (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
@@ -1338,8 +1454,8 @@
     ((recv k) (send k)))
   (label 24)
   (parent 22)
-  (seen 24)
   (unrealized (6 0))
-  (comment "1 in cohort - 0 not yet seen"))
+  (dead)
+  (comment "empty cohort"))
 
 (comment "Nothing left to do")
diff --git a/tst/subatomic-open-closed_shapes.tst b/tst/subatomic-open-closed_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/subatomic-open-closed_shapes.tst
@@ -0,0 +1,632 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald subatomic-open-closed (bound 40))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/subatomic-open-closed.scm")
+
+(comment "Strand count bounded at 40")
+
+(defprotocol subatomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (load ls old1) (stor lk (cat "st-k" d o k))
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch)
+    (critical-sections (1 4))
+    (facts (same-dev ls lk)))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "open" d o n k)) (load ls (cat "st" d any))
+      (load lk (cat "st-k" d o k)) (stor ls (cat "st" d o o)) (send n))
+    (critical-sections (1 3))
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (facts (same-dev ls lk)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n))
+    (gen-st (cat "st-k" d o k))
+    (critical-sections (1 3))
+    (facts (same-dev ls lk)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (load ls (cat "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    (uniq-orig n)
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (critical-sections (0 1))
+    (facts (same-dev ls lk)))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defrule same-dev-ls-lk
+    (forall ((ls lk lk-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
+        (= lk lk-0))))
+  (defrule same-dev-lk-ls
+    (forall ((lk ls ls-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
+        (= ls ls-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-dev-up-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-up" z 3) (p "dev-up" "lk" z lk)
+          (p "dev-up" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-open-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-open" z 3) (p "dev-open" "lk" z lk)
+          (p "dev-open" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-close-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-close" z 3) (p "dev-close" "lk" z lk)
+          (p "dev-close" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-pass-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-pass" z 2) (p "dev-pass" "lk" z lk)
+          (p "dev-pass" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-1
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 1))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2))))
+  (defgenrule eff-dev-up-3
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 4) (prec z 3 z1 i))
+        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
+  (defgenrule cau-dev-up-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-open-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-open" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-close-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-close" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-pass-1
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-pass" z 2) (prec z1 i z 1))
+        (or (= z z1) (prec z1 i z 0)))))
+  (defgenrule gen-st-dev-open-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-open-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-close-0
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d)) (gen-st (cat "st" d o o))))))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (d o name) (start-ch chan))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (deflistener k)
+  (uniq-orig k)
+  (conf start-ch)
+  (facts (no-state-split))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv k) (send k)))
+  (label 0)
+  (unrealized (0 1) (1 0))
+  (preskeleton)
+  (origs (k (0 0)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol subatomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (load ls old1) (stor lk (cat "st-k" d o k))
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch)
+    (critical-sections (1 4))
+    (facts (same-dev ls lk)))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "open" d o n k)) (load ls (cat "st" d any))
+      (load lk (cat "st-k" d o k)) (stor ls (cat "st" d o o)) (send n))
+    (critical-sections (1 3))
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (facts (same-dev ls lk)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n))
+    (gen-st (cat "st-k" d o k))
+    (critical-sections (1 3))
+    (facts (same-dev ls lk)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (load ls (cat "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    (uniq-orig n)
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (critical-sections (0 1))
+    (facts (same-dev ls lk)))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defrule same-dev-ls-lk
+    (forall ((ls lk lk-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
+        (= lk lk-0))))
+  (defrule same-dev-lk-ls
+    (forall ((lk ls ls-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
+        (= ls ls-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-dev-up-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-up" z 3) (p "dev-up" "lk" z lk)
+          (p "dev-up" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-open-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-open" z 3) (p "dev-open" "lk" z lk)
+          (p "dev-open" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-close-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-close" z 3) (p "dev-close" "lk" z lk)
+          (p "dev-close" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-pass-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-pass" z 2) (p "dev-pass" "lk" z lk)
+          (p "dev-pass" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-1
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 1))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2))))
+  (defgenrule eff-dev-up-3
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 4) (prec z 3 z1 i))
+        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
+  (defgenrule cau-dev-up-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-open-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-open" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-close-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-close" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-pass-1
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-pass" z 2) (prec z1 i z 1))
+        (or (= z z1) (prec z1 i z 0)))))
+  (defgenrule gen-st-dev-open-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-open-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-close-0
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d)) (gen-st (cat "st" d o o))))))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (n text) (d o name) (pt pt-0 pval) (lk ls locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (uniq-orig n)
+  (facts (no-state-split))
+  (traces
+    ((load lk (cat pt "st-k" d o k)) (load ls (cat pt-0 "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k))))
+  (label 3)
+  (realized)
+  (origs (n (0 3)))
+  (comment "Not closed under rules"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan) (ls lk locn))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand owner-power-dev 1 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (precedes ((1 4) (3 1)) ((2 0) (1 0)) ((3 3) (0 0)))
+  (uniq-orig n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (trans 3 3) (trans 3 1) (trans 1 4)
+    (trans 1 2) (trans 1 3) (trans 1 1) (no-state-split))
+  (operation channel-test (displaced 4 1 dev-up 4)
+    (ch-msg lk (cat pt-5 "st-k" d o k-0)) (3 2))
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((send start-ch (cat "power-up" d o k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-4 "st" d any))
+      (load lk (cat pt-2 "st-k" d o k)) (stor ls (cat pt "st" d o o))))
+  (label 8)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps
+    ((0) ((k k) (n n) (d d) (o o) (lk lk) (ls ls) (pt pt-2) (pt-0 pt))))
+  (origs (pt-2 (1 3)) (pt (3 3)) (pt-3 (1 4)) (n (0 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol subatomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (load ls old1) (stor lk (cat "st-k" d o k))
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch)
+    (critical-sections (1 4))
+    (facts (same-dev ls lk)))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "open" d o n k)) (load ls (cat "st" d any))
+      (load lk (cat "st-k" d o k)) (stor ls (cat "st" d o o)) (send n))
+    (critical-sections (1 3))
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (facts (same-dev ls lk)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n))
+    (gen-st (cat "st-k" d o k))
+    (critical-sections (1 3))
+    (facts (same-dev ls lk)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (load ls (cat "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    (uniq-orig n)
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (critical-sections (0 1))
+    (facts (same-dev ls lk)))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defrule same-dev-ls-lk
+    (forall ((ls lk lk-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
+        (= lk lk-0))))
+  (defrule same-dev-lk-ls
+    (forall ((lk ls ls-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
+        (= ls ls-0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule fact-dev-up-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-up" z 3) (p "dev-up" "lk" z lk)
+          (p "dev-up" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-open-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-open" z 3) (p "dev-open" "lk" z lk)
+          (p "dev-open" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-close-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-close" z 3) (p "dev-close" "lk" z lk)
+          (p "dev-close" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule fact-dev-pass-same-dev0
+    (forall ((z strd) (lk ls locn))
+      (implies
+        (and (p "dev-pass" z 2) (p "dev-pass" "lk" z lk)
+          (p "dev-pass" "ls" z ls)) (fact same-dev ls lk))))
+  (defgenrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defgenrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
+  (defgenrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 2))))
+  (defgenrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 1))))
+  (defgenrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defgenrule trRl_dev-open-at-1
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 1))))
+  (defgenrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defgenrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 2))))
+  (defgenrule eff-dev-up-3
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 4) (prec z 3 z1 i))
+        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
+  (defgenrule cau-dev-up-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-up" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-open-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-open" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-close-2
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-close" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defgenrule cau-dev-pass-1
+    (forall ((z z1 strd) (i indx))
+      (implies (and (p "dev-pass" z 2) (prec z1 i z 1))
+        (or (= z z1) (prec z1 i z 0)))))
+  (defgenrule gen-st-dev-open-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-open-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d)) (gen-st (cat "st" d o o)))))
+  (defgenrule gen-st-dev-close-0
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defgenrule gen-st-dev-pass-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d)) (gen-st (cat "st" d o o))))))
+
+(defskeleton subatomic-open-closed
+  (vars (k skey) (n text) (d o d-0 o-0 name) (pt pt-0 pval)
+    (start-ch chan) (lk ls locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d-0) (o o-0) (lk lk) (ls ls))
+  (uniq-orig k n)
+  (conf start-ch)
+  (facts (no-state-split))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt "st-k" d-0 o-0 k))
+      (load ls (cat pt-0 "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
+      (send (enc "you may pass" n k))))
+  (label 9)
+  (unrealized (0 1) (1 0) (1 2))
+  (preskeleton)
+  (origs (n (1 3)) (k (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton subatomic-open-closed
+  (vars (any old old1 mesg) (k skey) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (start-ch chan) (lk ls locn))
+  (defstrand owner-power-dev 2 (k k) (d d) (o o) (start-ch start-ch))
+  (defstrand dev-pass 4 (k k) (n n) (d d) (o o) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (k k) (n n-0) (d d) (o o) (lk lk)
+    (ls ls))
+  (defstrand owner-open 1 (k k) (n n-0) (d d) (o o))
+  (defstrand user-pass 1 (k k))
+  (defstrand dev-up 6 (old old) (old1 old1) (k k) (d d) (o o)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (precedes ((0 0) (5 0)) ((2 3) (1 0)) ((3 0) (2 0)) ((4 0) (1 2))
+    ((5 4) (2 1)) ((5 5) (0 1)))
+  (uniq-orig k n)
+  (gen-st (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (trans 2 3) (trans 2 1) (trans 5 4)
+    (trans 5 2) (trans 5 3) (trans 5 1) (no-state-split))
+  (operation encryption-test (displaced 2 6 dev-up 6) (enc "up" k)
+    (0 1))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv (enc "open" d o n-0 k)) (load ls (cat pt-0 "st" d any))
+      (load lk (cat pt-3 "st-k" d o k)) (stor ls (cat pt "st" d o o)))
+    ((send (enc "open" d o n-0 k))) ((send (enc "may I pass" k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k))
+      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k))))
+  (label 21)
+  (parent 9)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((k k) (d d) (o o) (start-ch start-ch) (n n) (d-0 d) (o-0 o)
+        (lk lk) (ls ls) (pt pt-3) (pt-0 pt))))
+  (origs (pt-3 (5 3)) (pt-4 (5 4)) (pt (2 3)) (n (1 3)) (k (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/sync_locn_envelope.tst b/tst/sync_locn_envelope.tst
--- a/tst/sync_locn_envelope.tst
+++ b/tst/sync_locn_envelope.tst
@@ -1,7 +1,7 @@
 (herald "Envelope Protocol, location-based version" (check-nonces)
   (bound 30) (limit 6000))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/sync_locn_envelope.scm")
 (comment "Step count limited to 6000")
 (comment "Strand count bounded at 30")
@@ -181,6 +181,7 @@
   (auth tpm-0)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik) (1 3))
+  (strand-map 0 1)
   (traces ((recv v) (send v))
     ((recv tpm (cat "token" nonce))
       (send tpmconf (cat "extend" pcr-id n (hash pcr-id n nonce)))
@@ -209,6 +210,7 @@
   (operation channel-test (displaced 3 1 alice 3)
     (ch-msg tpm-0
       (cat "create-req" pcr-id (hash (hash "0" n) "obtain"))) (2 0))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((recv tpm (cat "token" nonce))
       (send tpmconf (cat "extend" pcr-id n (hash pcr-id n nonce)))
@@ -237,6 +239,7 @@
   (auth tpm)
   (operation channel-test (added-strand tpm-extend-enc 1)
     (ch-msg tpm (cat "token" nonce)) (1 0))
+  (strand-map 0 1 2)
   (traces ((recv v) (send v))
     ((recv tpm (cat "token" nonce))
       (send tpmconf (cat "extend" pcr-id n (hash pcr-id n nonce)))
@@ -269,6 +272,7 @@
   (conf tpmconf)
   (auth tpm)
   (operation nonce-test (added-strand tpm-decrypt 4) v (0 0) (enc v k))
+  (strand-map 0 1 2 3)
   (traces ((recv v) (send v))
     ((recv tpm (cat "token" nonce))
       (send tpmconf (cat "extend" pcr-id n (hash pcr-id n nonce)))
@@ -308,6 +312,7 @@
   (rule genStV-if-hashed-tpm-decrypt)
   (operation encryption-test (displaced 5 2 tpm-create-key 2)
     (enc "created" k pcr-id-0 current-value aik-0) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces ((recv v) (send v))
     ((recv tpm (cat "token" nonce))
       (send tpmconf (cat "extend" pcr-id n (hash pcr-id n nonce)))
@@ -351,6 +356,7 @@
     trRl_tpm-extend-enc-at-3)
   (operation channel-test (displaced 3 5 tpm-extend-enc 4)
     (ch-msg pcr (cat pt (hash (hash "0" n) "obtain"))) (4 2))
+  (strand-map 0 1 2 4 3)
   (traces ((recv v) (send v))
     ((recv tpm-0 (cat "token" nonce))
       (send tpmconf (cat "extend" pcr-id n (hash pcr-id n nonce)))
@@ -401,6 +407,7 @@
     trRl_tpm-extend-enc-at-3)
   (operation channel-test (added-strand tpm-extend-enc 4)
     (ch-msg pcr (cat pt (hash (hash "0" n) "obtain"))) (4 2))
+  (strand-map 0 1 2 3 4)
   (traces ((recv v) (send v))
     ((recv tpm (cat "token" nonce))
       (send tpmconf (cat "extend" pcr-id n (hash pcr-id n nonce)))
@@ -452,6 +459,7 @@
   (rule trRl_tpm-extend-enc-at-2 trRl_tpm-extend-enc-at-3)
   (operation channel-test (displaced 3 6 tpm-extend-enc 4)
     (ch-msg pcr (cat pt-0 (hash "0" n))) (5 2))
+  (strand-map 0 1 2 5 3 4)
   (traces ((recv v) (send v))
     ((recv tpm-1 (cat "token" nonce-0))
       (send tpmconf (cat "extend" pcr-id n (hash pcr-id n nonce-0)))
@@ -506,6 +514,7 @@
   (rule trRl_tpm-extend-enc-at-2 trRl_tpm-extend-enc-at-3)
   (operation channel-test (added-strand tpm-extend-enc 4)
     (ch-msg pcr (cat pt-0 (hash "0" n))) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((recv tpm (cat "token" nonce))
       (send tpmconf (cat "extend" pcr-id n (hash pcr-id n nonce)))
@@ -561,6 +570,7 @@
   (operation channel-test (displaced 6 1 alice 2)
     (ch-msg tpm-1 (cat "extend" pcr-id-1 n (hash pcr-id-1 n nonce-0)))
     (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces ((recv v) (send v))
     ((recv tpmconf (cat "token" nonce-0))
       (send tpmconf (cat "extend" pcr-id n (hash pcr-id n nonce-0)))
@@ -786,6 +796,7 @@
   (auth tpm-0)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik) (1 3))
+  (strand-map 0 1)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -824,6 +835,7 @@
   (operation channel-test (displaced 3 1 alice 3)
     (ch-msg tpm-0
       (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain"))) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -861,6 +873,7 @@
   (auth tpm)
   (operation channel-test (added-strand tpm-extend-enc 1)
     (ch-msg tpm (cat "token" nonce)) (1 0))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -906,6 +919,7 @@
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik)
     (0 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -959,6 +973,7 @@
     trRl_tpm-extend-enc-at-3)
   (operation channel-test (displaced 3 5 tpm-extend-enc 4)
     (ch-msg pcr (cat pt (hash (hash "0" n) "refuse"))) (4 1))
+  (strand-map 0 1 2 4 3)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1020,6 +1035,7 @@
     trRl_tpm-extend-enc-at-3)
   (operation channel-test (added-strand tpm-extend-enc 4)
     (ch-msg pcr (cat pt (hash (hash "0" n) "refuse"))) (4 1))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1081,6 +1097,7 @@
   (rule trRl_tpm-extend-enc-at-2 trRl_tpm-extend-enc-at-3)
   (operation channel-test (displaced 3 6 tpm-extend-enc 4)
     (ch-msg pcr (cat pt-0 (hash "0" n))) (5 2))
+  (strand-map 0 1 2 5 3 4)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1146,6 +1163,7 @@
   (rule trRl_tpm-extend-enc-at-2 trRl_tpm-extend-enc-at-3)
   (operation channel-test (added-strand tpm-extend-enc 4)
     (ch-msg pcr (cat pt-0 (hash "0" n))) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1212,6 +1230,7 @@
   (operation channel-test (displaced 6 1 alice 2)
     (ch-msg tpm-1 (cat "extend" pcr-id-2 n (hash pcr-id-2 n nonce-0)))
     (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1448,6 +1467,7 @@
   (auth tpm-0)
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik) (2 3))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1487,6 +1507,7 @@
   (operation channel-test (displaced 4 2 alice 3)
     (ch-msg tpm-0
       (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain"))) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1526,6 +1547,7 @@
   (auth tpm)
   (operation channel-test (added-strand tpm-extend-enc 1)
     (ch-msg tpm (cat "token" nonce)) (2 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1568,6 +1590,7 @@
   (conf tpmconf)
   (auth tpm)
   (operation nonce-test (added-strand tpm-decrypt 4) v (1 0) (enc v k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1616,6 +1639,7 @@
   (rule genStV-if-hashed-tpm-decrypt)
   (operation encryption-test (displaced 6 3 tpm-create-key 2)
     (enc "created" k pcr-id-1 current-value aik-0) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1668,6 +1692,7 @@
     trRl_tpm-extend-enc-at-3)
   (operation channel-test (displaced 4 6 tpm-extend-enc 4)
     (ch-msg pcr (cat pt (hash (hash "0" n) "obtain"))) (5 2))
+  (strand-map 0 1 2 3 5 4)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1728,6 +1753,7 @@
     trRl_tpm-extend-enc-at-3)
   (operation channel-test (added-strand tpm-extend-enc 4)
     (ch-msg pcr (cat pt (hash (hash "0" n) "obtain"))) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1789,6 +1815,7 @@
   (rule trRl_tpm-extend-enc-at-2 trRl_tpm-extend-enc-at-3)
   (operation channel-test (displaced 4 7 tpm-extend-enc 4)
     (ch-msg pcr (cat pt-0 (hash "0" n))) (6 2))
+  (strand-map 0 1 2 3 6 4 5)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1854,6 +1881,7 @@
   (rule trRl_tpm-extend-enc-at-2 trRl_tpm-extend-enc-at-3)
   (operation channel-test (added-strand tpm-extend-enc 4)
     (ch-msg pcr (cat pt-0 (hash "0" n))) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1920,6 +1948,7 @@
   (operation channel-test (displaced 7 2 alice 2)
     (ch-msg tpm-1 (cat "extend" pcr-id-2 n (hash pcr-id-2 n nonce-0)))
     (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -1989,6 +2018,7 @@
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik)
     (0 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2065,6 +2095,7 @@
   (rule trRl_tpm-extend-enc-at-2 trRl_tpm-extend-enc-at-3)
   (operation channel-test (added-strand tpm-extend-enc 4)
     (ch-msg pcr-0 (cat pt-2 (hash (hash "0" n) "refuse"))) (7 1))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2150,6 +2181,7 @@
   (rule trRl_tpm-extend-enc-at-2 trRl_tpm-extend-enc-at-3)
   (operation channel-test (added-strand tpm-extend-enc 4)
     (ch-msg pcr-0 (cat pt-3 (hash "0" n))) (8 2))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2396,6 +2428,7 @@
   (facts (no-state-split))
   (operation encryption-test (added-strand tpm-create-key 2)
     (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik) (2 3))
+  (strand-map 0 1 2)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2436,6 +2469,7 @@
   (operation channel-test (displaced 4 2 alice 3)
     (ch-msg tpm-0
       (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain"))) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2476,6 +2510,7 @@
   (facts (no-state-split))
   (operation channel-test (added-strand tpm-extend-enc 1)
     (ch-msg tpm (cat "token" nonce)) (2 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2519,6 +2554,7 @@
   (auth tpm)
   (facts (no-state-split))
   (operation nonce-test (added-strand tpm-decrypt 4) v (1 0) (enc v k))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2568,6 +2604,7 @@
   (rule genStV-if-hashed-tpm-decrypt)
   (operation encryption-test (displaced 6 3 tpm-create-key 2)
     (enc "created" k pcr-id-1 current-value aik-0) (5 1))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2621,6 +2658,7 @@
     trRl_tpm-extend-enc-at-3)
   (operation channel-test (displaced 4 6 tpm-extend-enc 4)
     (ch-msg pcr (cat pt (hash (hash "0" n) "obtain"))) (5 2))
+  (strand-map 0 1 2 3 5 4)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2682,6 +2720,7 @@
     trRl_tpm-extend-enc-at-3)
   (operation channel-test (added-strand tpm-extend-enc 4)
     (ch-msg pcr (cat pt (hash (hash "0" n) "obtain"))) (5 2))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2744,6 +2783,7 @@
   (rule trRl_tpm-extend-enc-at-2 trRl_tpm-extend-enc-at-3)
   (operation channel-test (displaced 4 7 tpm-extend-enc 4)
     (ch-msg pcr (cat pt-0 (hash "0" n))) (6 2))
+  (strand-map 0 1 2 3 6 4 5)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2810,6 +2850,7 @@
   (rule trRl_tpm-extend-enc-at-2 trRl_tpm-extend-enc-at-3)
   (operation channel-test (added-strand tpm-extend-enc 4)
     (ch-msg pcr (cat pt-0 (hash "0" n))) (6 2))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2877,6 +2918,7 @@
   (operation channel-test (displaced 7 2 alice 2)
     (ch-msg tpm-1 (cat "extend" pcr-id-2 n (hash pcr-id-2 n nonce-0)))
     (6 1))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -2947,6 +2989,7 @@
   (operation encryption-test (added-strand tpm-quote 3)
     (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik)
     (0 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -3024,6 +3067,7 @@
   (rule trRl_tpm-extend-enc-at-2 trRl_tpm-extend-enc-at-3)
   (operation channel-test (added-strand tpm-extend-enc 4)
     (ch-msg pcr-0 (cat pt-2 (hash (hash "0" n) "refuse"))) (7 1))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
@@ -3110,6 +3154,7 @@
   (rule trRl_tpm-extend-enc-at-2 trRl_tpm-extend-enc-at-3)
   (operation channel-test (added-strand tpm-extend-enc 4)
     (ch-msg pcr-0 (cat pt-3 (hash "0" n))) (8 2))
+  (strand-map 0 1 2 3 4 5 6 7 8)
   (traces
     ((recv
        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
diff --git a/tst/sync_locn_envelope_shapes.tst b/tst/sync_locn_envelope_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/sync_locn_envelope_shapes.tst
@@ -0,0 +1,646 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Envelope Protocol, location-based version" (check-nonces)
+  (bound 30) (limit 6000))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/sync_locn_envelope.scm")
+
+(comment "Step count limited to 6000")
+
+(comment "Strand count bounded at 30")
+
+(comment "Nonces checked first")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (current-value mesg) (pcr locn) (tpm chan))
+    (trace (recv tpm "power on") (load pcr current-value)
+      (stor pcr "0")))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcr-id nonce text) (pcr locn)
+      (tpm chan))
+    (trace (send tpm (cat "token" nonce))
+      (recv tpm (cat "extend" pcr-id value (hash pcr-id value nonce)))
+      (load pcr current-value) (stor pcr (hash current-value value))
+      (send "ext ok"))
+    (uniq-orig nonce))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcr-id text) (aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "quote" pcr-id nonce))
+      (load pcr current-value)
+      (send (enc "quote" pcr-id current-value nonce aik))))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcr-id text) (pcrval mesg) (tpm chan))
+    (trace (recv tpm (cat "create-req" pcr-id pcrval))
+      (send (enc "created" k pcr-id pcrval aik)))
+    (non-orig (invk k))
+    (uniq-orig k)
+    (auth tpm))
+  (defrole tpm-decrypt
+    (vars (m current-value mesg) (pcr-id text) (k aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcr-id current-value aik))
+      (load pcr current-value) (send m))
+    (non-orig aik))
+  (defrole alice
+    (vars (n v data) (pcr-id nonce text) (k aik akey)
+      (tpm tpmconf chan))
+    (trace (recv tpm (cat "token" nonce))
+      (send tpmconf (cat "extend" pcr-id n (hash pcr-id n nonce)))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig aik)
+    (uniq-orig n v)
+    (conf tpmconf)
+    (neq (k aik)))
+  (defrule genStV-if-hashed-tpm-power-on
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-power-on" z 2)
+          (p "tpm-power-on" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-extend-enc
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-extend-enc" z 3)
+          (p "tpm-extend-enc" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-decrypt
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-decrypt" z 3)
+          (p "tpm-decrypt" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-quote
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-quote" z 2)
+          (p "tpm-quote" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_tpm-power-on-at-2
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-power-on-at-1
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 1))))
+  (defgenrule trRl_tpm-extend-enc-at-3
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 4) (trans z 3))))
+  (defgenrule trRl_tpm-extend-enc-at-2
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 4) (trans z 2)))))
+
+(defskeleton envelope
+  (vars (v n data) (pcr-id nonce text) (k aik akey) (tpm tpmconf chan))
+  (deflistener v)
+  (defstrand alice 5 (n n) (v v) (pcr-id pcr-id) (nonce nonce) (k k)
+    (aik aik) (tpm tpm) (tpmconf tpmconf))
+  (non-orig aik)
+  (uniq-orig v n)
+  (conf tpmconf)
+  (traces ((recv v) (send v))
+    ((recv tpm (cat "token" nonce))
+      (send tpmconf (cat "extend" pcr-id n (hash pcr-id n nonce)))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 0)
+  (unrealized (0 0) (1 3))
+  (preskeleton)
+  (origs (v (1 4)) (n (1 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (v n data) (pcr-id pcr-id-0 nonce nonce-0 text) (k aik akey)
+    (pt pt-0 pt-1 pval) (tpmconf tpm tpm-0 chan) (pcr locn))
+  (deflistener v)
+  (defstrand alice 5 (n n) (v v) (pcr-id pcr-id) (nonce nonce-0) (k k)
+    (aik aik) (tpm tpmconf) (tpmconf tpmconf))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (pcr-id pcr-id) (k k) (aik aik) (tpm tpmconf))
+  (defstrand tpm-decrypt 4 (m v)
+    (current-value (hash (hash "0" n) "obtain")) (pcr-id pcr-id) (k k)
+    (aik aik) (tpm tpm) (pcr pcr))
+  (defstrand tpm-extend-enc 4 (value "obtain")
+    (current-value (hash "0" n)) (pcr-id pcr-id-0) (nonce nonce)
+    (tpm tpm-0) (pcr pcr))
+  (defstrand tpm-extend-enc 4 (value n) (current-value "0")
+    (pcr-id pcr-id) (nonce nonce-0) (tpm tpmconf) (pcr pcr))
+  (precedes ((1 1) (5 1)) ((1 2) (2 0)) ((1 4) (3 0)) ((2 1) (1 3))
+    ((3 3) (0 0)) ((4 3) (3 2)) ((5 0) (1 0)) ((5 3) (4 2)))
+  (non-orig aik (invk k))
+  (uniq-orig v n nonce nonce-0 k)
+  (gen-st (hash "0" n) (hash (hash "0" n) "obtain"))
+  (conf tpmconf)
+  (auth tpmconf)
+  (facts (trans 5 3) (trans 5 2) (trans 4 3) (trans 4 2))
+  (operation channel-test (displaced 6 1 alice 2)
+    (ch-msg tpm-1 (cat "extend" pcr-id-1 n (hash pcr-id-1 n nonce-0)))
+    (5 1))
+  (traces ((recv v) (send v))
+    ((recv tpmconf (cat "token" nonce-0))
+      (send tpmconf (cat "extend" pcr-id n (hash pcr-id n nonce-0)))
+      (send tpmconf
+        (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv tpmconf
+       (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (send (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik)))
+    ((recv tpm (cat "decrypt" (enc v k)))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (load pcr (cat pt (hash (hash "0" n) "obtain"))) (send v))
+    ((send tpm-0 (cat "token" nonce))
+      (recv tpm-0
+        (cat "extend" pcr-id-0 "obtain" (hash pcr-id-0 "obtain" nonce)))
+      (load pcr (cat pt-0 (hash "0" n)))
+      (stor pcr (cat pt (hash (hash "0" n) "obtain"))))
+    ((send tpmconf (cat "token" nonce-0))
+      (recv tpmconf (cat "extend" pcr-id n (hash pcr-id n nonce-0)))
+      (load pcr (cat pt-1 "0")) (stor pcr (cat pt-0 (hash "0" n)))))
+  (label 11)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((v v) (n n) (pcr-id pcr-id) (nonce nonce-0) (k k) (aik aik)
+        (tpm tpmconf) (tpmconf tpmconf))))
+  (origs (n (1 1)) (nonce-0 (5 0)) (pt-0 (5 3)) (nonce (4 0)) (pt (4 3))
+    (k (2 1)) (v (1 4))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (current-value mesg) (pcr locn) (tpm chan))
+    (trace (recv tpm "power on") (load pcr current-value)
+      (stor pcr "0")))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcr-id nonce text) (pcr locn)
+      (tpm chan))
+    (trace (send tpm (cat "token" nonce))
+      (recv tpm (cat "extend" pcr-id value (hash pcr-id value nonce)))
+      (load pcr current-value) (stor pcr (hash current-value value))
+      (send "ext ok"))
+    (uniq-orig nonce))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcr-id text) (aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "quote" pcr-id nonce))
+      (load pcr current-value)
+      (send (enc "quote" pcr-id current-value nonce aik))))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcr-id text) (pcrval mesg) (tpm chan))
+    (trace (recv tpm (cat "create-req" pcr-id pcrval))
+      (send (enc "created" k pcr-id pcrval aik)))
+    (non-orig (invk k))
+    (uniq-orig k)
+    (auth tpm))
+  (defrole tpm-decrypt
+    (vars (m current-value mesg) (pcr-id text) (k aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcr-id current-value aik))
+      (load pcr current-value) (send m))
+    (non-orig aik))
+  (defrole alice
+    (vars (n v data) (pcr-id nonce text) (k aik akey)
+      (tpm tpmconf chan))
+    (trace (recv tpm (cat "token" nonce))
+      (send tpmconf (cat "extend" pcr-id n (hash pcr-id n nonce)))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig aik)
+    (uniq-orig n v)
+    (conf tpmconf)
+    (neq (k aik)))
+  (defrule genStV-if-hashed-tpm-power-on
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-power-on" z 2)
+          (p "tpm-power-on" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-extend-enc
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-extend-enc" z 3)
+          (p "tpm-extend-enc" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-decrypt
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-decrypt" z 3)
+          (p "tpm-decrypt" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-quote
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-quote" z 2)
+          (p "tpm-quote" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_tpm-power-on-at-2
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-power-on-at-1
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 1))))
+  (defgenrule trRl_tpm-extend-enc-at-3
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 4) (trans z 3))))
+  (defgenrule trRl_tpm-extend-enc-at-2
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 4) (trans z 2)))))
+
+(defskeleton envelope
+  (vars (n v data) (pcr-id pcr-id-0 nonce text) (k aik akey)
+    (tpm tpmconf chan))
+  (deflistener
+    (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 5 (n n) (v v) (pcr-id pcr-id-0) (nonce nonce) (k k)
+    (aik aik) (tpm tpm) (tpmconf tpmconf))
+  (non-orig aik)
+  (uniq-orig n v)
+  (conf tpmconf)
+  (traces
+    ((recv
+       (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik)))
+    ((recv tpm (cat "token" nonce))
+      (send tpmconf (cat "extend" pcr-id-0 n (hash pcr-id-0 n nonce)))
+      (send tpm
+        (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 12)
+  (unrealized (0 0) (1 3))
+  (preskeleton)
+  (origs (v (1 4)) (n (1 1)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (n v data) (pcr-id pcr-id-0 pcr-id-1 nonce nonce-0 text)
+    (k aik akey) (pt pt-0 pt-1 pval) (tpmconf tpm tpm-0 chan)
+    (pcr locn))
+  (deflistener
+    (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+  (defstrand alice 5 (n n) (v v) (pcr-id pcr-id-0) (nonce nonce-0) (k k)
+    (aik aik) (tpm tpmconf) (tpmconf tpmconf))
+  (defstrand tpm-create-key 2 (pcrval (hash (hash "0" n) "obtain"))
+    (pcr-id pcr-id-0) (k k) (aik aik) (tpm tpmconf))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (current-value (hash (hash "0" n) "refuse")) (pcr-id pcr-id)
+    (aik aik) (tpm tpm) (pcr pcr))
+  (defstrand tpm-extend-enc 4 (value "refuse")
+    (current-value (hash "0" n)) (pcr-id pcr-id-1) (nonce nonce)
+    (tpm tpm-0) (pcr pcr))
+  (defstrand tpm-extend-enc 4 (value n) (current-value "0")
+    (pcr-id pcr-id-0) (nonce nonce-0) (tpm tpmconf) (pcr pcr))
+  (precedes ((1 1) (5 1)) ((1 2) (2 0)) ((1 4) (3 0)) ((2 1) (1 3))
+    ((3 2) (0 0)) ((4 3) (3 1)) ((5 0) (1 0)) ((5 3) (4 2)))
+  (non-orig aik (invk k))
+  (uniq-orig n v nonce nonce-0 k)
+  (gen-st (hash "0" n) (hash (hash "0" n) "refuse"))
+  (conf tpmconf)
+  (auth tpmconf)
+  (facts (trans 5 3) (trans 5 2) (trans 4 3) (trans 4 2))
+  (operation channel-test (displaced 6 1 alice 2)
+    (ch-msg tpm-1 (cat "extend" pcr-id-2 n (hash pcr-id-2 n nonce-0)))
+    (5 1))
+  (traces
+    ((recv
+       (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik)))
+    ((recv tpmconf (cat "token" nonce-0))
+      (send tpmconf (cat "extend" pcr-id-0 n (hash pcr-id-0 n nonce-0)))
+      (send tpmconf
+        (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    ((recv tpmconf
+       (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (send
+        (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik)))
+    ((recv tpm (cat "quote" pcr-id (enc v k)))
+      (load pcr (cat pt (hash (hash "0" n) "refuse")))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik)))
+    ((send tpm-0 (cat "token" nonce))
+      (recv tpm-0
+        (cat "extend" pcr-id-1 "refuse" (hash pcr-id-1 "refuse" nonce)))
+      (load pcr (cat pt-0 (hash "0" n)))
+      (stor pcr (cat pt (hash (hash "0" n) "refuse"))))
+    ((send tpmconf (cat "token" nonce-0))
+      (recv tpmconf (cat "extend" pcr-id-0 n (hash pcr-id-0 n nonce-0)))
+      (load pcr (cat pt-1 "0")) (stor pcr (cat pt-0 (hash "0" n)))))
+  (label 22)
+  (parent 12)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((n n) (v v) (k k) (aik aik) (pcr-id pcr-id) (pcr-id-0 pcr-id-0)
+        (nonce nonce-0) (tpm tpmconf) (tpmconf tpmconf))))
+  (origs (n (1 1)) (nonce-0 (5 0)) (pt-0 (5 3)) (nonce (4 0)) (pt (4 3))
+    (k (2 1)) (v (1 4))))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (current-value mesg) (pcr locn) (tpm chan))
+    (trace (recv tpm "power on") (load pcr current-value)
+      (stor pcr "0")))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcr-id nonce text) (pcr locn)
+      (tpm chan))
+    (trace (send tpm (cat "token" nonce))
+      (recv tpm (cat "extend" pcr-id value (hash pcr-id value nonce)))
+      (load pcr current-value) (stor pcr (hash current-value value))
+      (send "ext ok"))
+    (uniq-orig nonce))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcr-id text) (aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "quote" pcr-id nonce))
+      (load pcr current-value)
+      (send (enc "quote" pcr-id current-value nonce aik))))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcr-id text) (pcrval mesg) (tpm chan))
+    (trace (recv tpm (cat "create-req" pcr-id pcrval))
+      (send (enc "created" k pcr-id pcrval aik)))
+    (non-orig (invk k))
+    (uniq-orig k)
+    (auth tpm))
+  (defrole tpm-decrypt
+    (vars (m current-value mesg) (pcr-id text) (k aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcr-id current-value aik))
+      (load pcr current-value) (send m))
+    (non-orig aik))
+  (defrole alice
+    (vars (n v data) (pcr-id nonce text) (k aik akey)
+      (tpm tpmconf chan))
+    (trace (recv tpm (cat "token" nonce))
+      (send tpmconf (cat "extend" pcr-id n (hash pcr-id n nonce)))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig aik)
+    (uniq-orig n v)
+    (conf tpmconf)
+    (neq (k aik)))
+  (defrule genStV-if-hashed-tpm-power-on
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-power-on" z 2)
+          (p "tpm-power-on" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-extend-enc
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-extend-enc" z 3)
+          (p "tpm-extend-enc" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-decrypt
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-decrypt" z 3)
+          (p "tpm-decrypt" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-quote
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-quote" z 2)
+          (p "tpm-quote" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_tpm-power-on-at-2
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-power-on-at-1
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 1))))
+  (defgenrule trRl_tpm-extend-enc-at-3
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 4) (trans z 3))))
+  (defgenrule trRl_tpm-extend-enc-at-2
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 4) (trans z 2)))))
+
+(defskeleton envelope
+  (vars (n v data) (pcr-id pcr-id-0 nonce text) (k aik akey)
+    (tpm tpmconf chan))
+  (deflistener
+    (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 5 (n n) (v v) (pcr-id pcr-id-0) (nonce nonce) (k k)
+    (aik aik) (tpm tpm) (tpmconf tpmconf))
+  (non-orig aik)
+  (uniq-orig n v)
+  (conf tpmconf)
+  (traces
+    ((recv
+       (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik))) ((recv v) (send v))
+    ((recv tpm (cat "token" nonce))
+      (send tpmconf (cat "extend" pcr-id-0 n (hash pcr-id-0 n nonce)))
+      (send tpm
+        (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 23)
+  (unrealized (0 0) (1 0) (2 3))
+  (preskeleton)
+  (origs (v (2 4)) (n (2 1)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on
+    (vars (current-value mesg) (pcr locn) (tpm chan))
+    (trace (recv tpm "power on") (load pcr current-value)
+      (stor pcr "0")))
+  (defrole tpm-extend-enc
+    (vars (value current-value mesg) (pcr-id nonce text) (pcr locn)
+      (tpm chan))
+    (trace (send tpm (cat "token" nonce))
+      (recv tpm (cat "extend" pcr-id value (hash pcr-id value nonce)))
+      (load pcr current-value) (stor pcr (hash current-value value))
+      (send "ext ok"))
+    (uniq-orig nonce))
+  (defrole tpm-quote
+    (vars (nonce current-value mesg) (pcr-id text) (aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "quote" pcr-id nonce))
+      (load pcr current-value)
+      (send (enc "quote" pcr-id current-value nonce aik))))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcr-id text) (pcrval mesg) (tpm chan))
+    (trace (recv tpm (cat "create-req" pcr-id pcrval))
+      (send (enc "created" k pcr-id pcrval aik)))
+    (non-orig (invk k))
+    (uniq-orig k)
+    (auth tpm))
+  (defrole tpm-decrypt
+    (vars (m current-value mesg) (pcr-id text) (k aik akey) (pcr locn)
+      (tpm chan))
+    (trace (recv tpm (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcr-id current-value aik))
+      (load pcr current-value) (send m))
+    (non-orig aik))
+  (defrole alice
+    (vars (n v data) (pcr-id nonce text) (k aik akey)
+      (tpm tpmconf chan))
+    (trace (recv tpm (cat "token" nonce))
+      (send tpmconf (cat "extend" pcr-id n (hash pcr-id n nonce)))
+      (send tpm (cat "create-req" pcr-id (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id (hash (hash "0" n) "obtain") aik))
+      (send (enc v k)))
+    (non-orig aik)
+    (uniq-orig n v)
+    (conf tpmconf)
+    (neq (k aik)))
+  (defrule genStV-if-hashed-tpm-power-on
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-power-on" z 2)
+          (p "tpm-power-on" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-extend-enc
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-extend-enc" z 3)
+          (p "tpm-extend-enc" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-decrypt
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-decrypt" z 3)
+          (p "tpm-decrypt" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defrule genStV-if-hashed-tpm-quote
+    (forall ((z strd) (v1 v2 mesg))
+      (implies
+        (and (p "tpm-quote" z 2)
+          (p "tpm-quote" "current-value" z (hash v1 v2)))
+        (gen-st (hash v1 v2)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defgenrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defgenrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defgenrule trRl_tpm-power-on-at-2
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 2))))
+  (defgenrule trRl_tpm-power-on-at-1
+    (forall ((z strd)) (implies (p "tpm-power-on" z 3) (trans z 1))))
+  (defgenrule trRl_tpm-extend-enc-at-3
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 4) (trans z 3))))
+  (defgenrule trRl_tpm-extend-enc-at-2
+    (forall ((z strd)) (implies (p "tpm-extend-enc" z 4) (trans z 2)))))
+
+(defskeleton envelope
+  (vars (n v data) (pcr-id pcr-id-0 nonce text) (k aik akey)
+    (tpm tpmconf chan))
+  (deflistener
+    (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 5 (n n) (v v) (pcr-id pcr-id-0) (nonce nonce) (k k)
+    (aik aik) (tpm tpm) (tpmconf tpmconf))
+  (non-orig aik)
+  (uniq-orig n v)
+  (conf tpmconf)
+  (facts (no-state-split))
+  (traces
+    ((recv
+       (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k) aik))
+      (send
+        (enc "quote" pcr-id (hash (hash "0" n) "refuse") (enc v k)
+          aik))) ((recv v) (send v))
+    ((recv tpm (cat "token" nonce))
+      (send tpmconf (cat "extend" pcr-id-0 n (hash pcr-id-0 n nonce)))
+      (send tpm
+        (cat "create-req" pcr-id-0 (hash (hash "0" n) "obtain")))
+      (recv (enc "created" k pcr-id-0 (hash (hash "0" n) "obtain") aik))
+      (send (enc v k))))
+  (label 38)
+  (unrealized (0 0) (1 0) (2 3))
+  (preskeleton)
+  (origs (v (2 4)) (n (2 1)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
diff --git a/tst/targetterms1.tst b/tst/targetterms1.tst
--- a/tst/targetterms1.tst
+++ b/tst/targetterms1.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/targetterms1.scm")
 
 (defprotocol targetterms basic
@@ -33,6 +33,7 @@
   (uniq-orig n2)
   (operation nonce-test (displaced 1 0 init 1) n1 (0 1)
     (enc n1 (enc a n2 k) k))
+  (strand-map 0)
   (traces ((send (enc n2 (enc a n2 k) k)) (recv (enc a n2 k))))
   (label 1)
   (parent 0)
@@ -49,6 +50,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand resp 2) n2 (0 1)
     (enc n2 (enc a n2 k) k))
+  (strand-map 0)
   (traces ((send (enc n2 (enc a n2 k) k)) (recv (enc a n2 k)))
     ((recv (enc n2 (enc a n2 k) k)) (send (enc a n2 k))))
   (label 2)
diff --git a/tst/targetterms1_shapes.tst b/tst/targetterms1_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/targetterms1_shapes.tst
@@ -0,0 +1,51 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/targetterms1.scm")
+
+(defprotocol targetterms basic
+  (defrole init
+    (vars (a skey) (n1 n2 text) (k akey))
+    (trace (send (enc n1 (enc a n2 k) k)) (recv (enc a n1 k))))
+  (defrole resp
+    (vars (n1 text) (m mesg) (k akey))
+    (trace (recv (enc n1 m k)) (send m)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton targetterms
+  (vars (a skey) (n1 n2 text) (k akey))
+  (defstrand init 2 (a a) (n1 n1) (n2 n2) (k k))
+  (non-orig (invk k))
+  (uniq-orig n1)
+  (traces ((send (enc n1 (enc a n2 k) k)) (recv (enc a n1 k))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n1 (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton targetterms
+  (vars (a skey) (n2 text) (k akey))
+  (defstrand init 2 (a a) (n1 n2) (n2 n2) (k k))
+  (defstrand resp 2 (m (enc a n2 k)) (n1 n2) (k k))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk k))
+  (uniq-orig n2)
+  (operation nonce-test (added-strand resp 2) n2 (0 1)
+    (enc n2 (enc a n2 k) k))
+  (traces ((send (enc n2 (enc a n2 k) k)) (recv (enc a n2 k)))
+    ((recv (enc n2 (enc a n2 k) k)) (send (enc a n2 k))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((n1 n2) (k k) (a a) (n2 n2))))
+  (origs (n2 (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/targetterms2.tst b/tst/targetterms2.tst
--- a/tst/targetterms2.tst
+++ b/tst/targetterms2.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/targetterms2.scm")
 
 (defprotocol targetterms2 basic
@@ -39,6 +39,7 @@
   (non-orig (privk a))
   (uniq-orig n)
   (operation nonce-test (added-strand trans 3) n (0 1) (enc n (pubk a)))
+  (strand-map 0)
   (traces
     ((send (enc n (pubk a)))
       (recv (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))))
@@ -57,6 +58,7 @@
   (uniq-orig n)
   (operation nonce-test (contracted (m (enc n (pubk a)))) n (0 1)
     (enc n (pubk a)) (enc n (enc n (pubk a)) (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc n (pubk a)))
       (recv (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))))
@@ -77,6 +79,7 @@
   (operation nonce-test
     (contracted (m (enc n (enc n (pubk a)) (pubk a)))) n (0 1)
     (enc n (pubk a)) (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc n (pubk a)))
       (recv (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))))
@@ -97,6 +100,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand trans 3) n (0 1) (enc n (pubk a))
     (enc n (enc n (pubk a)) (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc n (pubk a)))
       (recv (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))))
@@ -117,6 +121,7 @@
   (non-orig (privk a))
   (uniq-orig n)
   (operation nonce-test (added-strand trans 3) n (1 1) (enc n (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc n (pubk a)))
       (recv (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))))
@@ -140,6 +145,7 @@
     (contracted (m (enc n (enc n (pubk a)) (pubk a)))) n (0 1)
     (enc n (pubk a)) (enc n (enc n (pubk a)) (pubk a))
     (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n (pubk a)))
       (recv (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))))
@@ -150,6 +156,10 @@
   (label 6)
   (parent 4)
   (seen 7)
+  (seen-ops
+    (7
+      (operation nonce-test (displaced 3 1 trans 3) n (2 1)
+        (enc n (pubk a))) (strand-map 0 2 1)))
   (unrealized (2 1))
   (comment "2 in cohort - 1 not yet seen"))
 
@@ -163,6 +173,7 @@
   (uniq-orig n)
   (operation nonce-test (contracted (m (enc n (pubk a)))) n (1 1)
     (enc n (pubk a)) (enc n (enc n (pubk a)) (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n (pubk a)))
       (recv (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))))
@@ -188,6 +199,7 @@
   (non-orig (privk a))
   (uniq-orig n)
   (operation nonce-test (added-strand trans 3) n (2 1) (enc n (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n (pubk a)))
       (recv (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))))
@@ -213,6 +225,7 @@
   (uniq-orig n)
   (operation nonce-test (contracted (m (enc n (pubk a)))) n (2 1)
     (enc n (pubk a)) (enc n (enc n (pubk a)) (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n (pubk a)))
       (recv (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))))
@@ -225,6 +238,8 @@
   (label 9)
   (parent 8)
   (seen 7)
+  (seen-ops
+    (7 (operation generalization deleted (1 0)) (strand-map 0 2 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -240,6 +255,7 @@
   (uniq-orig n)
   (operation nonce-test (displaced 4 1 trans 3) n (2 1) (enc n (pubk a))
     (enc n m (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n (pubk a)))
       (recv (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))))
@@ -251,6 +267,8 @@
   (label 10)
   (parent 8)
   (seen 7)
+  (seen-ops
+    (7 (operation generalization deleted (3 0)) (strand-map 0 2 1)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/targetterms2_shapes.tst b/tst/targetterms2_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/targetterms2_shapes.tst
@@ -0,0 +1,62 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/targetterms2.scm")
+
+(defprotocol targetterms2 basic
+  (defrole init
+    (vars (a name) (n text))
+    (trace (send (enc n (pubk a)))
+      (recv (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))))
+    (non-orig (privk a))
+    (uniq-orig n))
+  (defrole trans
+    (vars (a name) (n text) (m mesg))
+    (trace (recv (enc n (pubk a))) (recv m) (send (enc n m (pubk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton targetterms2
+  (vars (n text) (a name))
+  (defstrand init 2 (n n) (a a))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (traces
+    ((send (enc n (pubk a)))
+      (recv (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton targetterms2
+  (vars (n text) (a name))
+  (defstrand init 2 (n n) (a a))
+  (defstrand trans 3 (m (enc n (enc n (pubk a)) (pubk a))) (n n) (a a))
+  (defstrand trans 3 (m (enc n (pubk a))) (n n) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 2) (0 1)) ((2 2) (1 1)))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (operation nonce-test (contracted (m (enc n (pubk a)))) n (1 1)
+    (enc n (pubk a)) (enc n (enc n (pubk a)) (pubk a)))
+  (traces
+    ((send (enc n (pubk a)))
+      (recv (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))))
+    ((recv (enc n (pubk a))) (recv (enc n (enc n (pubk a)) (pubk a)))
+      (send (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))))
+    ((recv (enc n (pubk a))) (recv (enc n (pubk a)))
+      (send (enc n (enc n (pubk a)) (pubk a)))))
+  (label 7)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (n n))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/targetterms6.tst b/tst/targetterms6.tst
--- a/tst/targetterms6.tst
+++ b/tst/targetterms6.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/targetterms6.scm")
 
 (defprotocol targetterms6 basic
@@ -43,6 +43,7 @@
   (non-orig (privk a))
   (uniq-orig n)
   (operation nonce-test (added-strand trans 3) n (0 1) (enc n (pubk a)))
+  (strand-map 0)
   (traces
     ((send (enc n (pubk a)))
       (recv
@@ -63,6 +64,7 @@
   (uniq-orig n)
   (operation nonce-test (contracted (m (enc n (pubk a)))) n (0 1)
     (enc n (pubk a)) (enc n (enc n (pubk a)) (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc n (pubk a)))
       (recv
@@ -85,6 +87,7 @@
   (uniq-orig n)
   (operation nonce-test (added-strand trans 3) n (0 1) (enc n (pubk a))
     (enc n (enc n (pubk a)) (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc n (pubk a)))
       (recv
@@ -110,6 +113,7 @@
     (contracted (m (enc n (enc n (pubk a)) (pubk a)))) n (0 1)
     (enc n (pubk a)) (enc n (enc n (pubk a)) (pubk a))
     (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n (pubk a)))
       (recv
@@ -134,6 +138,7 @@
   (uniq-orig n)
   (operation nonce-test (displaced 3 1 trans 3) n (2 1)
     (enc n (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n (pubk a)))
       (recv
@@ -161,6 +166,7 @@
   (non-orig (privk a))
   (uniq-orig n)
   (operation nonce-test (added-strand trans 3) n (2 1) (enc n (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n (pubk a)))
       (recv
@@ -188,6 +194,7 @@
   (uniq-orig n)
   (operation nonce-test (contracted (m (enc n (pubk a)))) n (2 1)
     (enc n (pubk a)) (enc n (enc n (pubk a)) (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n (pubk a)))
       (recv
@@ -202,6 +209,8 @@
   (label 7)
   (parent 6)
   (seen 5)
+  (seen-ops
+    (5 (operation generalization deleted (1 0)) (strand-map 0 3 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -217,6 +226,7 @@
   (uniq-orig n)
   (operation nonce-test (displaced 4 1 trans 3) n (2 1) (enc n (pubk a))
     (enc n m (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc n (pubk a)))
       (recv
@@ -230,6 +240,8 @@
   (label 8)
   (parent 6)
   (seen 5)
+  (seen-ops
+    (5 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/targetterms6_shapes.tst b/tst/targetterms6_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/targetterms6_shapes.tst
@@ -0,0 +1,112 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/targetterms6.scm")
+
+(defprotocol targetterms6 basic
+  (defrole init
+    (vars (a name) (n text))
+    (trace (send (enc n (pubk a)))
+      (recv
+        (cat (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))
+          (enc n (enc n (pubk a)) (pubk a)))))
+    (non-orig (privk a))
+    (uniq-orig n))
+  (defrole trans
+    (vars (a name) (n text) (m mesg))
+    (trace (recv (enc n (pubk a))) (recv m) (send (enc n m (pubk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton targetterms6
+  (vars (n text) (a name))
+  (defstrand init 2 (n n) (a a))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (traces
+    ((send (enc n (pubk a)))
+      (recv
+        (cat (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))
+          (enc n (enc n (pubk a)) (pubk a))))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton targetterms6
+  (vars (n text) (a name))
+  (defstrand init 2 (n n) (a a))
+  (defstrand trans 3 (m (enc n (pubk a))) (n n) (a a))
+  (defstrand trans 3 (m (enc n (enc n (pubk a)) (pubk a))) (n n) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 2) (2 1)) ((2 2) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (operation nonce-test (displaced 3 1 trans 3) n (2 1)
+    (enc n (pubk a)))
+  (traces
+    ((send (enc n (pubk a)))
+      (recv
+        (cat (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))
+          (enc n (enc n (pubk a)) (pubk a)))))
+    ((recv (enc n (pubk a))) (recv (enc n (pubk a)))
+      (send (enc n (enc n (pubk a)) (pubk a))))
+    ((recv (enc n (pubk a))) (recv (enc n (enc n (pubk a)) (pubk a)))
+      (send (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a)))))
+  (label 5)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (n n))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol targetterms6 basic
+  (defrole init
+    (vars (a name) (n text))
+    (trace (send (enc n (pubk a)))
+      (recv
+        (cat (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))
+          (enc n (enc n (pubk a)) (pubk a)))))
+    (non-orig (privk a))
+    (uniq-orig n))
+  (defrole trans
+    (vars (a name) (n text) (m mesg))
+    (trace (recv (enc n (pubk a))) (recv m) (send (enc n m (pubk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton targetterms6
+  (vars (n text) (a name))
+  (defstrand init 2 (n n) (a a))
+  (defstrand trans 3 (m (enc n (pubk a))) (n n) (a a))
+  (defstrand trans 3 (m (enc n (enc n (pubk a)) (pubk a))) (n n) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 2) (2 1)) ((2 2) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig n)
+  (traces
+    ((send (enc n (pubk a)))
+      (recv
+        (cat (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a))
+          (enc n (enc n (pubk a)) (pubk a)))))
+    ((recv (enc n (pubk a))) (recv (enc n (pubk a)))
+      (send (enc n (enc n (pubk a)) (pubk a))))
+    ((recv (enc n (pubk a))) (recv (enc n (enc n (pubk a)) (pubk a)))
+      (send (enc n (enc n (enc n (pubk a)) (pubk a)) (pubk a)))))
+  (label 9)
+  (realized)
+  (shape)
+  (maps ((0 1 2) ((n n) (a a))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/targetterms8.tst b/tst/targetterms8.tst
--- a/tst/targetterms8.tst
+++ b/tst/targetterms8.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/targetterms8.scm")
 
 (defprotocol targetterms8 basic
@@ -35,6 +35,7 @@
   (uniq-orig n2)
   (operation nonce-test (displaced 1 0 init 1) n1 (0 1)
     (enc n1 (enc a n2 k) k))
+  (strand-map 0)
   (traces ((send (enc n2 (enc a n2 k) k)) (recv (enc a n2 k))))
   (label 1)
   (parent 0)
@@ -51,6 +52,7 @@
   (uniq-orig n2)
   (operation nonce-test (added-strand resp 2) n2 (0 1)
     (enc n2 (enc a n2 k) k))
+  (strand-map 0)
   (traces ((send (enc n2 (enc a n2 k) k)) (recv (enc a n2 k)))
     ((recv (enc n2 (enc a n2 k) k)) (send (enc a n2 k))))
   (label 2)
@@ -98,6 +100,7 @@
   (uniq-orig n1)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
     (enc n1 (enc a n1 k) k))
+  (strand-map 0)
   (traces ((send (enc n1 (enc a n1 k) k)) (recv (enc a n1 k)))
     ((recv (enc n1 (enc a n1 k) k)) (send (enc a n1 k))))
   (label 4)
diff --git a/tst/targetterms8_shapes.tst b/tst/targetterms8_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/targetterms8_shapes.tst
@@ -0,0 +1,100 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/targetterms8.scm")
+
+(defprotocol targetterms8 basic
+  (defrole init
+    (vars (a name) (n1 n2 text) (k akey))
+    (trace (send (enc n1 (enc a n2 k) k)) (recv (enc a n1 k)))
+    (non-orig (invk k))
+    (uniq-orig n1))
+  (defrole resp
+    (vars (n1 text) (m mesg) (k akey))
+    (trace (recv (enc n1 (enc m k) k)) (send (enc m k))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton targetterms8
+  (vars (n1 n2 text) (k akey) (a name))
+  (defstrand init 2 (n1 n1) (n2 n2) (k k) (a a))
+  (non-orig (invk k))
+  (uniq-orig n1)
+  (traces ((send (enc n1 (enc a n2 k) k)) (recv (enc a n1 k))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n1 (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton targetterms8
+  (vars (n2 text) (k akey) (a name))
+  (defstrand init 2 (n1 n2) (n2 n2) (k k) (a a))
+  (defstrand resp 2 (m (cat a n2)) (n1 n2) (k k))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk k))
+  (uniq-orig n2)
+  (operation nonce-test (added-strand resp 2) n2 (0 1)
+    (enc n2 (enc a n2 k) k))
+  (traces ((send (enc n2 (enc a n2 k) k)) (recv (enc a n2 k)))
+    ((recv (enc n2 (enc a n2 k) k)) (send (enc a n2 k))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (n1 n2) (n2 n2) (k k))))
+  (origs (n2 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol targetterms8 basic
+  (defrole init
+    (vars (a name) (n1 n2 text) (k akey))
+    (trace (send (enc n1 (enc a n2 k) k)) (recv (enc a n1 k)))
+    (non-orig (invk k))
+    (uniq-orig n1))
+  (defrole resp
+    (vars (n1 text) (m mesg) (k akey))
+    (trace (recv (enc n1 (enc m k) k)) (send (enc m k))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton targetterms8
+  (vars (n1 text) (k akey) (a name))
+  (defstrand init 2 (n1 n1) (n2 n1) (k k) (a a))
+  (non-orig (invk k))
+  (uniq-orig n1)
+  (traces ((send (enc n1 (enc a n1 k) k)) (recv (enc a n1 k))))
+  (label 3)
+  (unrealized (0 1))
+  (origs (n1 (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton targetterms8
+  (vars (n1 text) (k akey) (a name))
+  (defstrand init 2 (n1 n1) (n2 n1) (k k) (a a))
+  (defstrand resp 2 (m (cat a n1)) (n1 n1) (k k))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk k))
+  (uniq-orig n1)
+  (operation nonce-test (added-strand resp 2) n1 (0 1)
+    (enc n1 (enc a n1 k) k))
+  (traces ((send (enc n1 (enc a n1 k) k)) (recv (enc a n1 k)))
+    ((recv (enc n1 (enc a n1 k) k)) (send (enc a n1 k))))
+  (label 4)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (n1 n1) (k k))))
+  (origs (n1 (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/thisthat.tst b/tst/thisthat.tst
--- a/tst/thisthat.tst
+++ b/tst/thisthat.tst
@@ -1,6 +1,6 @@
 (herald "Needham-Schroeder Public-Key Protocol This-That Variant")
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/thisthat.scm")
 
 (defprotocol thisthat basic
@@ -50,6 +50,7 @@
   (uniq-orig n1 n3-0)
   (operation nonce-test (added-strand that 2) n1 (0 1)
     (enc n1 a (pubk b)))
+  (strand-map 0)
   (traces
     ((send (enc n1 a (pubk b)))
       (recv (cat (enc n1 n2 (pubk a)) (enc n1 n3 (pubk a))))
@@ -69,6 +70,7 @@
   (uniq-orig n1 n3)
   (operation nonce-test (contracted (n3-0 n3)) n1 (0 1)
     (enc n1 n3 (pubk a)) (enc n1 a (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b)))
       (recv (cat (enc n1 n2 (pubk a)) (enc n1 n3 (pubk a))))
@@ -88,6 +90,7 @@
   (uniq-orig n1 n3)
   (operation nonce-test (contracted (n2 n3)) n1 (0 1)
     (enc n1 n3 (pubk a)) (enc n1 a (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b)))
       (recv (cat (enc n1 n3 (pubk a)) (enc n1 n3 (pubk a))))
@@ -108,6 +111,7 @@
   (uniq-orig n1 n3 n3-0)
   (operation nonce-test (added-strand that 2) n1 (0 1)
     (enc n1 n3 (pubk a)) (enc n1 a (pubk b)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b)))
       (recv (cat (enc n1 n2 (pubk a)) (enc n1 n3 (pubk a))))
@@ -128,6 +132,7 @@
   (uniq-orig n1 n3)
   (operation nonce-test (displaced 1 2 this 3) n3 (0 2)
     (enc n1 n3 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b)))
       (recv (cat (enc n1 n3 (pubk a)) (enc n1 n3 (pubk a))))
@@ -149,6 +154,7 @@
   (uniq-orig n1 n3)
   (operation nonce-test (displaced 1 2 that 3) n3 (0 2)
     (enc n1 n3 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc n1 a (pubk b)))
       (recv (cat (enc n1 n3 (pubk a)) (enc n1 n3 (pubk a))))
@@ -171,6 +177,7 @@
   (uniq-orig n1 n3 n3-0)
   (operation nonce-test (contracted (n2 n3)) n1 (0 1)
     (enc n1 n3 (pubk a)) (enc n1 n3-0 (pubk a)) (enc n1 a (pubk b)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n1 a (pubk b)))
       (recv (cat (enc n1 n3 (pubk a)) (enc n1 n3 (pubk a))))
@@ -192,6 +199,7 @@
   (uniq-orig n1 n3 n3-0)
   (operation nonce-test (contracted (n2 n3-0)) n1 (0 1)
     (enc n1 n3 (pubk a)) (enc n1 n3-0 (pubk a)) (enc n1 a (pubk b)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc n1 a (pubk b)))
       (recv (cat (enc n1 n3-0 (pubk a)) (enc n1 n3 (pubk a))))
@@ -214,6 +222,7 @@
   (uniq-orig n1 n3 n3-0)
   (operation nonce-test (displaced 1 3 this 3) n3 (0 2)
     (enc n1 n3 (pubk a)))
+  (strand-map 0 2 1)
   (traces
     ((send (enc n1 a (pubk b)))
       (recv (cat (enc n1 n3 (pubk a)) (enc n1 n3 (pubk a))))
@@ -238,6 +247,7 @@
   (uniq-orig n1 n3 n3-0)
   (operation nonce-test (displaced 1 3 that 3) n3 (0 2)
     (enc n1 n3 (pubk a)))
+  (strand-map 0 2 1)
   (traces
     ((send (enc n1 a (pubk b)))
       (recv (cat (enc n1 n3 (pubk a)) (enc n1 n3 (pubk a))))
@@ -262,6 +272,7 @@
   (uniq-orig n1 n3 n3-0)
   (operation nonce-test (displaced 1 3 this 3) n3 (0 2)
     (enc n1 n3 (pubk a)))
+  (strand-map 0 2 1)
   (traces
     ((send (enc n1 a (pubk b)))
       (recv (cat (enc n1 n3-0 (pubk a)) (enc n1 n3 (pubk a))))
@@ -285,6 +296,7 @@
   (uniq-orig n1 n3 n3-0)
   (operation nonce-test (displaced 1 3 that 3) n3 (0 2)
     (enc n1 n3 (pubk a)))
+  (strand-map 0 2 1)
   (traces
     ((send (enc n1 a (pubk b)))
       (recv (cat (enc n1 n3-0 (pubk a)) (enc n1 n3 (pubk a))))
@@ -308,6 +320,7 @@
   (uniq-orig n1 n3 n3-0)
   (operation nonce-test (displaced 1 3 this 3) n3-0 (0 2)
     (enc n1 n3-0 (pubk a)))
+  (strand-map 0 2 1)
   (traces
     ((send (enc n1 a (pubk b)))
       (recv (cat (enc n1 n3-0 (pubk a)) (enc n1 n3 (pubk a))))
@@ -333,6 +346,7 @@
   (uniq-orig n1 n3 n3-0)
   (operation nonce-test (displaced 1 3 that 3) n3-0 (0 2)
     (enc n1 n3-0 (pubk a)))
+  (strand-map 0 2 1)
   (traces
     ((send (enc n1 a (pubk b)))
       (recv (cat (enc n1 n3-0 (pubk a)) (enc n1 n3 (pubk a))))
@@ -358,6 +372,7 @@
   (uniq-orig n1 n3 n3-0)
   (operation nonce-test (displaced 1 3 this 3) n3-0 (0 2)
     (enc n1 n3-0 (pubk a)))
+  (strand-map 0 2 1)
   (traces
     ((send (enc n1 a (pubk b)))
       (recv (cat (enc n1 n3-0 (pubk a)) (enc n1 n3 (pubk a))))
@@ -384,6 +399,7 @@
   (uniq-orig n1 n3 n3-0)
   (operation nonce-test (displaced 1 3 that 3) n3-0 (0 2)
     (enc n1 n3-0 (pubk a)))
+  (strand-map 0 2 1)
   (traces
     ((send (enc n1 a (pubk b)))
       (recv (cat (enc n1 n3-0 (pubk a)) (enc n1 n3 (pubk a))))
diff --git a/tst/thisthat_shapes.tst b/tst/thisthat_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/thisthat_shapes.tst
@@ -0,0 +1,74 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Needham-Schroeder Public-Key Protocol This-That Variant")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/thisthat.scm")
+
+(defprotocol thisthat basic
+  (defrole init
+    (vars (a b name) (n1 n2 n3 text))
+    (trace (send (enc n1 a (pubk b)))
+      (recv (cat (enc n1 n2 (pubk a)) (enc n1 n3 (pubk a))))
+      (recv (cat (enc "this" n2 (pubk b)) (enc "that" n3 (pubk b))))))
+  (defrole this
+    (vars (b a name) (n2 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n2 (pubk a)))
+      (send (enc "this" n2 (pubk b))))
+    (uniq-orig n2))
+  (defrole that
+    (vars (b a name) (n3 n1 text))
+    (trace (recv (enc n1 a (pubk b))) (send (enc n1 n3 (pubk a)))
+      (send (enc "that" n3 (pubk b))))
+    (uniq-orig n3))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton thisthat
+  (vars (n1 n2 n3 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n2) (n3 n3) (a a) (b b))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1)
+  (comment "Initiator point-of-view")
+  (traces
+    ((send (enc n1 a (pubk b)))
+      (recv (cat (enc n1 n2 (pubk a)) (enc n1 n3 (pubk a))))
+      (recv (cat (enc "this" n2 (pubk b)) (enc "that" n3 (pubk b))))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n1 (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton thisthat
+  (vars (n1 n3 n3-0 text) (a b name))
+  (defstrand init 3 (n1 n1) (n2 n3-0) (n3 n3) (a a) (b b))
+  (defstrand that 3 (n3 n3) (n1 n1) (b b) (a a))
+  (defstrand this 3 (n2 n3-0) (n1 n1) (b b) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((1 2) (0 2))
+    ((2 1) (0 1)) ((2 2) (0 2)))
+  (non-orig (privk a) (privk b))
+  (uniq-orig n1 n3 n3-0)
+  (operation nonce-test (displaced 1 3 this 3) n3-0 (0 2)
+    (enc n1 n3-0 (pubk a)))
+  (traces
+    ((send (enc n1 a (pubk b)))
+      (recv (cat (enc n1 n3-0 (pubk a)) (enc n1 n3 (pubk a))))
+      (recv (cat (enc "this" n3-0 (pubk b)) (enc "that" n3 (pubk b)))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n3 (pubk a)))
+      (send (enc "that" n3 (pubk b))))
+    ((recv (enc n1 a (pubk b))) (send (enc n1 n3-0 (pubk a)))
+      (send (enc "this" n3-0 (pubk b)))))
+  (label 15)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (n1 n1) (n2 n3-0) (n3 n3))))
+  (origs (n3-0 (2 1)) (n3 (1 1)) (n1 (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/tickle-unique.tst b/tst/tickle-unique.tst
--- a/tst/tickle-unique.tst
+++ b/tst/tickle-unique.tst
@@ -1,6 +1,6 @@
 (herald tickle-unique)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/tickle-unique.scm")
 
 (defprotocol tickle basic
@@ -48,6 +48,7 @@
   (uniq-orig nb0 nb)
   (operation nonce-test (added-strand init 3) nb (0 2)
     (enc b nb0 nb0 nb (pubk a)))
+  (strand-map 0)
   (traces
     ((recv (enc a nb0 (pubk b))) (send (enc b nb0 nb0 nb (pubk a)))
       (recv nb))
diff --git a/tst/tickle-unique_shapes.tst b/tst/tickle-unique_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/tickle-unique_shapes.tst
@@ -0,0 +1,104 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald tickle-unique)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/tickle-unique.scm")
+
+(defprotocol tickle basic
+  (defrole init
+    (vars (a b name) (na nb text))
+    (trace (send (enc a na (pubk b))) (recv (enc b na na nb (pubk a)))
+      (send nb))
+    (uniq-orig na))
+  (defrole resp
+    (vars (a b name) (na nb0 nb text))
+    (trace (recv (enc a na (pubk b))) (send (enc b na nb0 nb (pubk a)))
+      (recv nb)))
+  (defrule uniq-tickle
+    (forall ((z strd) (nb0 text))
+      (implies
+        (and (fact guard-me) (p "resp" z 2) (p "resp" "nb0" z nb0))
+        (uniq nb0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton tickle
+  (vars (nb0 nb na text) (a b name))
+  (defstrand resp 3 (na na) (nb0 nb0) (nb nb) (a a) (b b))
+  (non-orig (privk a))
+  (uniq-orig nb)
+  (traces
+    ((recv (enc a na (pubk b))) (send (enc b na nb0 nb (pubk a)))
+      (recv nb)))
+  (label 0)
+  (unrealized (0 2))
+  (origs (nb (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton tickle
+  (vars (nb0 nb text) (a b name))
+  (defstrand resp 3 (na nb0) (nb0 nb0) (nb nb) (a a) (b b))
+  (defstrand init 3 (na nb0) (nb nb) (a a) (b b))
+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
+  (non-orig (privk a))
+  (uniq-orig nb0 nb)
+  (operation nonce-test (added-strand init 3) nb (0 2)
+    (enc b nb0 nb0 nb (pubk a)))
+  (traces
+    ((recv (enc a nb0 (pubk b))) (send (enc b nb0 nb0 nb (pubk a)))
+      (recv nb))
+    ((send (enc a nb0 (pubk b))) (recv (enc b nb0 nb0 nb (pubk a)))
+      (send nb)))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (nb0 nb0) (nb nb) (na nb0))))
+  (origs (nb0 (1 0)) (nb (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol tickle basic
+  (defrole init
+    (vars (a b name) (na nb text))
+    (trace (send (enc a na (pubk b))) (recv (enc b na na nb (pubk a)))
+      (send nb))
+    (uniq-orig na))
+  (defrole resp
+    (vars (a b name) (na nb0 nb text))
+    (trace (recv (enc a na (pubk b))) (send (enc b na nb0 nb (pubk a)))
+      (recv nb)))
+  (defrule uniq-tickle
+    (forall ((z strd) (nb0 text))
+      (implies
+        (and (fact guard-me) (p "resp" z 2) (p "resp" "nb0" z nb0))
+        (uniq nb0))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton tickle
+  (vars (nb0 nb na text) (a b name))
+  (defstrand resp 3 (na na) (nb0 nb0) (nb nb) (a a) (b b))
+  (non-orig (privk a))
+  (uniq-orig nb)
+  (facts (guard-me))
+  (traces
+    ((recv (enc a na (pubk b))) (send (enc b na nb0 nb (pubk a)))
+      (recv nb)))
+  (label 2)
+  (unrealized (0 2))
+  (origs (nb (0 1)))
+  (comment "Not closed under rules"))
+
+(comment "Nothing left to do")
diff --git a/tst/timestamping.tst b/tst/timestamping.tst
--- a/tst/timestamping.tst
+++ b/tst/timestamping.tst
@@ -1,6 +1,6 @@
 (herald timestamping-service)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/timestamping.scm")
 
 (defprotocol timestamping-service basic
@@ -72,6 +72,7 @@
   (operation encryption-test (added-strand server 2)
     (enc n alice h alice_1 h_1 t_1 (hash alice_1 h_1 t_1 l_1)
       (privk trent)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat h alice))
       (recv
@@ -107,6 +108,7 @@
   (operation encryption-test (added-strand origin 2)
     (enc n alice h alice_1 h_1 t_1 (hash alice_1 h_1 t_1 l_1)
       (privk trent)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat h alice))
       (recv
@@ -153,6 +155,7 @@
       (enc n-0 alice_1 h_1 alice_1-0 h_1-0 t_1
         (hash alice_1-0 h_1-0 t_1 l_1) (privk trent))
       (hash alice_1-0 h_1-0 t_1 l_1) (privk trent)) (1 0))
+  (strand-map 0 1)
   (traces
     ((send (cat h alice))
       (recv
@@ -220,6 +223,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand big-bang 1)
     (enc n (privk trent)) (1 0))
+  (strand-map 0 1)
   (traces
     ((send (cat h alice))
       (recv
@@ -265,6 +269,7 @@
   (uniq-orig n n-0)
   (operation encryption-test (added-strand big-bang 1)
     (enc n-0 (privk trent)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((send (cat h alice))
       (recv
@@ -358,6 +363,7 @@
         (enc n alice h alice_1 h_1 t_1 (hash alice_1 h_1 t_1 l_1)
           (privk trent)) (hash alice_1 h_1 t_1 l_1) (privk trent))
       (pubk trent)))
+  (strand-map 0 1 2)
   (traces
     ((send (cat h alice))
       (recv
@@ -427,6 +433,7 @@
     (enc alice h
       (enc n alice h alice_1 h_1 t_1 (hash alice_1 h_1 t_1 l_1)
         (privk trent)) (hash alice_1 h_1 t_1 l_1) (privk trent)) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((send (cat h alice))
       (recv
@@ -504,6 +511,7 @@
     (enc alice h
       (enc n alice h alice_1 h_1 t_1 (hash alice_1 h_1 t_1 l_1)
         (privk trent)) (hash alice_1 h_1 t_1 l_1) (privk trent)) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((send (cat h alice))
       (recv
@@ -558,6 +566,8 @@
   (label 8)
   (parent 6)
   (seen 7)
+  (seen-ops
+    (7 (operation generalization deleted (1 0)) (strand-map 0 4 2 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/timestamping_shapes.tst b/tst/timestamping_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/timestamping_shapes.tst
@@ -0,0 +1,237 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald timestamping-service)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/timestamping.scm")
+
+(defprotocol timestamping-service basic
+  (defrole client
+    (vars (alice alice_1 trent name) (n data) (h h_1 text) (t_1 l mesg))
+    (trace (send (cat h alice))
+      (recv (enc n alice h alice_1 h_1 t_1 l (privk trent)))))
+  (defrole server
+    (vars (alice alice_1 trent name) (n data) (h h_1 text)
+      (t_1 l_1 mesg))
+    (trace
+      (recv
+        (cat (enc (enc alice_1 h_1 t_1 l_1 (privk trent)) (pubk trent))
+          h alice))
+      (send
+        (cat
+          (enc n alice h alice_1 h_1 t_1 (hash alice_1 h_1 t_1 l_1)
+            (privk trent))
+          (enc
+            (enc
+              (hash alice h
+                (enc n alice h alice_1 h_1 t_1
+                  (hash alice_1 h_1 t_1 l_1) (privk trent))
+                (hash alice_1 h_1 t_1 l_1)) (privk trent))
+            (pubk trent)))))
+    (uniq-orig n))
+  (defrole origin
+    (vars (alice alice_1 trent name) (n data) (h h_1 t_1 l_1 text))
+    (trace (recv (enc (enc n (privk trent)) (pubk trent)))
+      (send
+        (enc
+          (enc alice h
+            (enc n alice h alice_1 h_1 t_1 (hash alice_1 h_1 t_1 l_1)
+              (privk trent)) (hash alice_1 h_1 t_1 l_1) (privk trent))
+          (pubk trent)))))
+  (defrole big-bang
+    (vars (n data) (trent name))
+    (trace (send (enc (enc n (privk trent)) (pubk trent))))
+    (uniq-orig n))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton timestamping-service
+  (vars (t_1 l mesg) (n data) (h h_1 text) (trent alice alice_1 name))
+  (defstrand client 2 (t_1 t_1) (l l) (n n) (h h) (h_1 h_1)
+    (alice alice) (alice_1 alice_1) (trent trent))
+  (non-orig (privk trent))
+  (traces
+    ((send (cat h alice))
+      (recv (enc n alice h alice_1 h_1 t_1 l (privk trent)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton timestamping-service
+  (vars (n n-0 data) (h h_1 h_1-0 t_1 l_1 text)
+    (trent alice alice_1 alice_1-0 name))
+  (defstrand client 2
+    (t_1
+      (enc n-0 alice_1 h_1 alice_1-0 h_1-0 t_1
+        (hash alice_1-0 h_1-0 t_1 l_1) (privk trent)))
+    (l
+      (hash alice_1 h_1
+        (enc n-0 alice_1 h_1 alice_1-0 h_1-0 t_1
+          (hash alice_1-0 h_1-0 t_1 l_1) (privk trent))
+        (hash alice_1-0 h_1-0 t_1 l_1))) (n n) (h h) (h_1 h_1)
+    (alice alice) (alice_1 alice_1) (trent trent))
+  (defstrand server 2
+    (t_1
+      (enc n-0 alice_1 h_1 alice_1-0 h_1-0 t_1
+        (hash alice_1-0 h_1-0 t_1 l_1) (privk trent)))
+    (l_1 (hash alice_1-0 h_1-0 t_1 l_1)) (n n) (h h) (h_1 h_1)
+    (alice alice) (alice_1 alice_1) (trent trent))
+  (defstrand origin 2 (n n-0) (h h_1) (h_1 h_1-0) (t_1 t_1) (l_1 l_1)
+    (alice alice_1) (alice_1 alice_1-0) (trent trent))
+  (defstrand big-bang 1 (n n-0) (trent trent))
+  (precedes ((1 1) (0 1)) ((2 1) (1 0)) ((3 0) (2 0)))
+  (non-orig (privk trent))
+  (uniq-orig n n-0)
+  (operation encryption-test (added-strand big-bang 1)
+    (enc n-0 (privk trent)) (2 0))
+  (traces
+    ((send (cat h alice))
+      (recv
+        (enc n alice h alice_1 h_1
+          (enc n-0 alice_1 h_1 alice_1-0 h_1-0 t_1
+            (hash alice_1-0 h_1-0 t_1 l_1) (privk trent))
+          (hash alice_1 h_1
+            (enc n-0 alice_1 h_1 alice_1-0 h_1-0 t_1
+              (hash alice_1-0 h_1-0 t_1 l_1) (privk trent))
+            (hash alice_1-0 h_1-0 t_1 l_1)) (privk trent))))
+    ((recv
+       (cat
+         (enc
+           (enc alice_1 h_1
+             (enc n-0 alice_1 h_1 alice_1-0 h_1-0 t_1
+               (hash alice_1-0 h_1-0 t_1 l_1) (privk trent))
+             (hash alice_1-0 h_1-0 t_1 l_1) (privk trent)) (pubk trent))
+         h alice))
+      (send
+        (cat
+          (enc n alice h alice_1 h_1
+            (enc n-0 alice_1 h_1 alice_1-0 h_1-0 t_1
+              (hash alice_1-0 h_1-0 t_1 l_1) (privk trent))
+            (hash alice_1 h_1
+              (enc n-0 alice_1 h_1 alice_1-0 h_1-0 t_1
+                (hash alice_1-0 h_1-0 t_1 l_1) (privk trent))
+              (hash alice_1-0 h_1-0 t_1 l_1)) (privk trent))
+          (enc
+            (enc
+              (hash alice h
+                (enc n alice h alice_1 h_1
+                  (enc n-0 alice_1 h_1 alice_1-0 h_1-0 t_1
+                    (hash alice_1-0 h_1-0 t_1 l_1) (privk trent))
+                  (hash alice_1 h_1
+                    (enc n-0 alice_1 h_1 alice_1-0 h_1-0 t_1
+                      (hash alice_1-0 h_1-0 t_1 l_1) (privk trent))
+                    (hash alice_1-0 h_1-0 t_1 l_1)) (privk trent))
+                (hash alice_1 h_1
+                  (enc n-0 alice_1 h_1 alice_1-0 h_1-0 t_1
+                    (hash alice_1-0 h_1-0 t_1 l_1) (privk trent))
+                  (hash alice_1-0 h_1-0 t_1 l_1))) (privk trent))
+            (pubk trent)))))
+    ((recv (enc (enc n-0 (privk trent)) (pubk trent)))
+      (send
+        (enc
+          (enc alice_1 h_1
+            (enc n-0 alice_1 h_1 alice_1-0 h_1-0 t_1
+              (hash alice_1-0 h_1-0 t_1 l_1) (privk trent))
+            (hash alice_1-0 h_1-0 t_1 l_1) (privk trent))
+          (pubk trent))))
+    ((send (enc (enc n-0 (privk trent)) (pubk trent)))))
+  (label 5)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((trent trent) (alice alice) (alice_1 alice_1) (n n) (h h)
+        (h_1 h_1)
+        (t_1
+          (enc n-0 alice_1 h_1 alice_1-0 h_1-0 t_1
+            (hash alice_1-0 h_1-0 t_1 l_1) (privk trent)))
+        (l
+          (hash alice_1 h_1
+            (enc n-0 alice_1 h_1 alice_1-0 h_1-0 t_1
+              (hash alice_1-0 h_1-0 t_1 l_1) (privk trent))
+            (hash alice_1-0 h_1-0 t_1 l_1))))))
+  (origs (n-0 (3 0)) (n (1 1))))
+
+(defskeleton timestamping-service
+  (vars (n n-0 data) (h h_1 t_1 l_1 h-0 text)
+    (trent alice alice_1 alice-0 name))
+  (defstrand client 2 (t_1 t_1) (l (hash alice_1 h_1 t_1 l_1)) (n n)
+    (h h) (h_1 h_1) (alice alice) (alice_1 alice_1) (trent trent))
+  (defstrand origin 2 (n n) (h h) (h_1 h_1) (t_1 t_1) (l_1 l_1)
+    (alice alice) (alice_1 alice_1) (trent trent))
+  (defstrand big-bang 1 (n n) (trent trent))
+  (defstrand server 2
+    (t_1
+      (enc n alice h alice_1 h_1 t_1 (hash alice_1 h_1 t_1 l_1)
+        (privk trent))) (l_1 (hash alice_1 h_1 t_1 l_1)) (n n-0) (h h-0)
+    (h_1 h) (alice alice-0) (alice_1 alice) (trent trent))
+  (precedes ((1 1) (3 0)) ((2 0) (1 0)) ((3 1) (0 1)))
+  (non-orig (privk trent))
+  (uniq-orig n n-0)
+  (operation encryption-test (displaced 4 1 origin 2)
+    (enc alice h
+      (enc n alice h alice_1 h_1 t_1 (hash alice_1 h_1 t_1 l_1)
+        (privk trent)) (hash alice_1 h_1 t_1 l_1) (privk trent)) (3 0))
+  (traces
+    ((send (cat h alice))
+      (recv
+        (enc n alice h alice_1 h_1 t_1 (hash alice_1 h_1 t_1 l_1)
+          (privk trent))))
+    ((recv (enc (enc n (privk trent)) (pubk trent)))
+      (send
+        (enc
+          (enc alice h
+            (enc n alice h alice_1 h_1 t_1 (hash alice_1 h_1 t_1 l_1)
+              (privk trent)) (hash alice_1 h_1 t_1 l_1) (privk trent))
+          (pubk trent))))
+    ((send (enc (enc n (privk trent)) (pubk trent))))
+    ((recv
+       (cat
+         (enc
+           (enc alice h
+             (enc n alice h alice_1 h_1 t_1 (hash alice_1 h_1 t_1 l_1)
+               (privk trent)) (hash alice_1 h_1 t_1 l_1) (privk trent))
+           (pubk trent)) h-0 alice-0))
+      (send
+        (cat
+          (enc n-0 alice-0 h-0 alice h
+            (enc n alice h alice_1 h_1 t_1 (hash alice_1 h_1 t_1 l_1)
+              (privk trent))
+            (hash alice h
+              (enc n alice h alice_1 h_1 t_1 (hash alice_1 h_1 t_1 l_1)
+                (privk trent)) (hash alice_1 h_1 t_1 l_1))
+            (privk trent))
+          (enc
+            (enc
+              (hash alice-0 h-0
+                (enc n-0 alice-0 h-0 alice h
+                  (enc n alice h alice_1 h_1 t_1
+                    (hash alice_1 h_1 t_1 l_1) (privk trent))
+                  (hash alice h
+                    (enc n alice h alice_1 h_1 t_1
+                      (hash alice_1 h_1 t_1 l_1) (privk trent))
+                    (hash alice_1 h_1 t_1 l_1)) (privk trent))
+                (hash alice h
+                  (enc n alice h alice_1 h_1 t_1
+                    (hash alice_1 h_1 t_1 l_1) (privk trent))
+                  (hash alice_1 h_1 t_1 l_1))) (privk trent))
+            (pubk trent))))))
+  (label 7)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((trent trent) (alice alice) (alice_1 alice_1) (n n) (h h)
+        (h_1 h_1) (t_1 t_1) (l (hash alice_1 h_1 t_1 l_1)))))
+  (origs (n-0 (3 1)) (n (2 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/tnsl5.lisp b/tst/tnsl5.lisp
deleted file mode 100644
--- a/tst/tnsl5.lisp
+++ /dev/null
@@ -1,168 +0,0 @@
-(defprotocol tnsl5 basic
-  (defrole init
-    (vars (a b c d e name)
-      (na0 na1 na2 na3 nb0 nb1 nb2 nb3 nc0 nc1 nc2 nc3 nd0 nd1 nd2 nd3
-        ne0 ne1 ne2 ne3 text))
-    (trace
-      (send
-        (enc na0 a c d e (enc "unitac" na1 a b d e (pubk c))
-          (enc "unitad" na2 a b c e (pubk d))
-          (enc "unitae" na3 a b c d (pubk e)) (pubk b)))
-      (recv
-        (enc na3 ne0 e b c d (enc "repba" na0 nb3 b c d e (pubk a))
-          (enc "repca" na1 nc2 c b d e (pubk a))
-          (enc "repda" na2 nd1 d e b c (pubk a))
-          (enc "repcb" nb0 nc3 c d e a (pubk b))
-          (enc "repdb" nb1 nd2 d c e a (pubk b))
-          (enc "repeb" nb2 ne1 e a c d (pubk b))
-          (enc "repdc" nc0 nd3 d e a b (pubk c))
-          (enc "repec" nc1 ne2 e a b d (pubk c))
-          (enc "reped" nd0 ne3 e a b c (pubk d)) (pubk a)))
-      (send
-        (enc nb3 (enc "repcb" nb0 nc3 c d e a (pubk b))
-          (enc "repdb" nb1 nd2 d c e a (pubk b))
-          (enc "repeb" nb2 ne1 e a c d (pubk b))
-          (enc "repdc" nc0 nd3 d e a b (pubk c))
-          (enc "repec" nc1 ne2 e a b d (pubk c))
-          (enc "confac" nc2 (pubk c))
-          (enc "reped" nd0 ne3 e a b c (pubk d))
-          (enc "confad" nd1 (pubk d)) (enc "confae" ne0 (pubk e))
-          (pubk b))))
-    (uniq-orig na0 na1 na2 na3))
-  (defrole resp1
-    (vars (a b c d e name)
-      (na0 na1 na2 na3 nb0 nb1 nb2 nb3 nc0 nc1 nc2 nc3 nd0 nd1 nd2 nd3
-        ne0 ne1 ne2 ne3 text))
-    (trace
-      (recv
-        (enc na0 a c d e (enc "unitac" na1 a b d e (pubk c))
-          (enc "unitad" na2 a b c e (pubk d))
-          (enc "unitae" na3 a b c d (pubk e)) (pubk b)))
-      (send
-        (enc nb0 b d e a (enc "unitac" na1 a b d e (pubk c))
-          (enc "unitad" na2 a b c e (pubk d))
-          (enc "unitbd" nb1 b c e a (pubk d))
-          (enc "unitae" na3 a b c d (pubk e))
-          (enc "unitbe" nb2 b c d a (pubk e))
-          (enc "repba" na0 nb3 b c d e (pubk a)) (pubk c)))
-      (recv
-        (enc nb3 (enc "repcb" nb0 nc3 c d e a (pubk b))
-          (enc "repdb" nb1 nd2 d c e a (pubk b))
-          (enc "repeb" nb2 ne1 e a c d (pubk b))
-          (enc "repdc" nc0 nd3 d e a b (pubk c))
-          (enc "repec" nc1 ne2 e a b d (pubk c))
-          (enc "confac" nc2 (pubk c))
-          (enc "reped" nd0 ne3 e a b c (pubk d))
-          (enc "confad" nd1 (pubk d)) (enc "confae" ne0 (pubk e))
-          (pubk b)))
-      (send
-        (enc nc3 (enc "repdc" nc0 nd3 d e a b (pubk c))
-          (enc "repec" nc1 ne2 e a b d (pubk c))
-          (enc "confac" nc2 (pubk c))
-          (enc "reped" nd0 ne3 e a b c (pubk d))
-          (enc "confad" nd1 (pubk d)) (enc "confbd" nd2 (pubk d))
-          (enc "confae" ne0 (pubk e)) (enc "confbe" ne1 (pubk e))
-          (pubk c))))
-    (uniq-orig nb0 nb1 nb2 nb3))
-  (defrole resp2
-    (vars (a b c d e name)
-      (na0 na1 na2 na3 nb0 nb1 nb2 nb3 nc0 nc1 nc2 nc3 nd0 nd1 nd2 nd3
-        ne0 ne1 ne2 ne3 text))
-    (trace
-      (recv
-        (enc nb0 b d e a (enc "unitac" na1 a b d e (pubk c))
-          (enc "unitad" na2 a b c e (pubk d))
-          (enc "unitbd" nb1 b c e a (pubk d))
-          (enc "unitae" na3 a b c d (pubk e))
-          (enc "unitbe" nb2 b c d a (pubk e))
-          (enc "repba" na0 nb3 b c d e (pubk a)) (pubk c)))
-      (send
-        (enc nc0 c e a b (enc "unitad" na2 a b c e (pubk d))
-          (enc "unitbd" nb1 b c e a (pubk d))
-          (enc "unitae" na3 a b c d (pubk e))
-          (enc "unitbe" nb2 b c d a (pubk e))
-          (enc "unitce" nc1 c d a b (pubk e))
-          (enc "repba" na0 nb3 b c d e (pubk a))
-          (enc "repca" na1 nc2 c b d e (pubk a))
-          (enc "repcb" nb0 nc3 c d e a (pubk b)) (pubk d)))
-      (recv
-        (enc nc3 (enc "repdc" nc0 nd3 d e a b (pubk c))
-          (enc "repec" nc1 ne2 e a b d (pubk c))
-          (enc "confac" nc2 (pubk c))
-          (enc "reped" nd0 ne3 e a b c (pubk d))
-          (enc "confad" nd1 (pubk d)) (enc "confbd" nd2 (pubk d))
-          (enc "confae" ne0 (pubk e)) (enc "confbe" ne1 (pubk e))
-          (pubk c)))
-      (send
-        (enc nd3 (enc "reped" nd0 ne3 e a b c (pubk d))
-          (enc "confad" nd1 (pubk d)) (enc "confbd" nd2 (pubk d))
-          (enc "confae" ne0 (pubk e)) (enc "confbe" ne1 (pubk e))
-          (enc "confce" ne2 (pubk e)) (pubk d))))
-    (uniq-orig nc0 nc1 nc2 nc3))
-  (defrole resp3
-    (vars (a b c d e name)
-      (na0 na1 na2 na3 nb0 nb1 nb2 nb3 nc0 nc1 nc2 nc3 nd0 nd1 nd2 nd3
-        ne0 ne1 ne2 ne3 text))
-    (trace
-      (recv
-        (enc nc0 c e a b (enc "unitad" na2 a b c e (pubk d))
-          (enc "unitbd" nb1 b c e a (pubk d))
-          (enc "unitae" na3 a b c d (pubk e))
-          (enc "unitbe" nb2 b c d a (pubk e))
-          (enc "unitce" nc1 c d a b (pubk e))
-          (enc "repba" na0 nb3 b c d e (pubk a))
-          (enc "repca" na1 nc2 c b d e (pubk a))
-          (enc "repcb" nb0 nc3 c d e a (pubk b)) (pubk d)))
-      (send
-        (enc nd0 d a b c (enc "unitae" na3 a b c d (pubk e))
-          (enc "unitbe" nb2 b c d a (pubk e))
-          (enc "unitce" nc1 c d a b (pubk e))
-          (enc "repba" na0 nb3 b c d e (pubk a))
-          (enc "repca" na1 nc2 c b d e (pubk a))
-          (enc "repda" na2 nd1 d e b c (pubk a))
-          (enc "repcb" nb0 nc3 c d e a (pubk b))
-          (enc "repdb" nb1 nd2 d c e a (pubk b))
-          (enc "repde" nc0 nd3 d e a b (pubk c)) (pubk e)))
-      (recv
-        (enc nd3 (enc "reped" nd0 ne3 e a b c (pubk d))
-          (enc "confad" nd1 (pubk d)) (enc "confbd" nd2 (pubk d))
-          (enc "confae" ne0 (pubk e)) (enc "confbe" ne1 (pubk e))
-          (enc "confce" ne2 (pubk e)) (pubk d)))
-      (send
-        (enc ne3 (enc "confae" ne0 (pubk e)) (enc "confbe" ne1 (pubk e))
-          (enc "confce" ne2 (pubk e)) (pubk e))))
-    (uniq-orig nd0 nd1 nd2 nd3))
-  (defrole resp4
-    (vars (a b c d e name)
-      (na0 na1 na2 na3 nb0 nb1 nb2 nb3 nc0 nc1 nc2 nc3 nd0 nd1 nd2 nd3
-        ne0 ne1 ne2 ne3 text))
-    (trace
-      (recv
-        (enc nd0 d a b c (enc "unitae" na3 a b c d (pubk e))
-          (enc "unitbe" nb2 b c d a (pubk e))
-          (enc "unitce" nc1 c d a b (pubk e))
-          (enc "repba" na0 nb3 b c d e (pubk a))
-          (enc "repca" na1 nc2 c b d e (pubk a))
-          (enc "repda" na2 nd1 d e b c (pubk a))
-          (enc "repcb" nb0 nc3 c d e a (pubk b))
-          (enc "repdb" nb1 nd2 d c e a (pubk b))
-          (enc "repde" nc0 nd3 d e a b (pubk c)) (pubk e)))
-      (send
-        (enc na3 ne0 e b c d (enc "repba" na0 nb3 b c d e (pubk a))
-          (enc "repca" na1 nc2 c b d e (pubk a))
-          (enc "repda" na2 nd1 d e b c (pubk a))
-          (enc "repcb" nb0 nc3 c d e a (pubk b))
-          (enc "repdb" nb1 nd2 d c e a (pubk b))
-          (enc "repeb" nb2 ne1 e a c d (pubk b))
-          (enc "repdc" nc0 nd3 d e a b (pubk c))
-          (enc "repec" nc1 ne2 e a b d (pubk c))
-          (enc "reped" nd0 ne3 e a b c (pubk d)) (pubk a)))
-      (recv
-        (enc ne3 (enc "confae" ne0 (pubk e)) (enc "confbe" ne1 (pubk e))
-          (enc "confce" ne2 (pubk e)) (pubk e))))
-    (uniq-orig ne0 ne1 ne2 ne3)))
-
-(defskeleton tnsl5
-  (vars (a b c d e name))
-  (defstrand init 3 (a a) (b b) (c c) (d d) (e e))
-  (non-orig (privk a) (privk b) (privk c) (privk d) (privk e)))
diff --git a/tst/trust-anchor.tst b/tst/trust-anchor.tst
--- a/tst/trust-anchor.tst
+++ b/tst/trust-anchor.tst
@@ -1,7 +1,7 @@
 (herald trust-anchor
   (comment "Tests rule application on initial skeleton"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/trust-anchor.scm")
 
 (defprotocol trust-anchor basic
diff --git a/tst/trust-anchor_shapes.tst b/tst/trust-anchor_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/trust-anchor_shapes.tst
@@ -0,0 +1,58 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald trust-anchor
+  (comment "Tests rule application on initial skeleton"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/trust-anchor.scm")
+
+(defprotocol trust-anchor basic
+  (defrule trust-anchor-inverse-is-non
+    (forall ((k akey)) (implies (fact trust-anchor k) (non (invk k)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton trust-anchor
+  (vars (f ca name))
+  (deflistener (enc f (pubk f) (privk ca)))
+  (non-orig (privk ca))
+  (traces
+    ((recv (enc f (pubk f) (privk ca)))
+      (send (enc f (pubk f) (privk ca)))))
+  (label 0)
+  (unrealized (0 0))
+  (dead)
+  (origs)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol trust-anchor basic
+  (defrule trust-anchor-inverse-is-non
+    (forall ((k akey)) (implies (fact trust-anchor k) (non (invk k)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton trust-anchor
+  (vars (f ca name))
+  (deflistener (enc f (pubk f) (privk ca)))
+  (facts (trust-anchor (pubk ca)))
+  (traces
+    ((recv (enc f (pubk f) (privk ca)))
+      (send (enc f (pubk f) (privk ca)))))
+  (label 1)
+  (realized)
+  (origs)
+  (comment "Not closed under rules"))
+
+(comment "Nothing left to do")
diff --git a/tst/ugen-at.scm b/tst/ugen-at.scm
new file mode 100644
--- /dev/null
+++ b/tst/ugen-at.scm
@@ -0,0 +1,53 @@
+(herald uniq-at)
+
+(defprotocol yahalom-plus-uniq-at basic 
+
+  (defrole init
+    (vars (a b c name) (n-a n-b text) (k skey))
+    (trace (send (cat a n-a))
+	   (recv (enc b k n-a n-b (ltk a c)))
+	   (send (enc n-b k))))
+  (defrole resp
+    (vars (b a c name) (n-a n-b text) (rest mesg) (k skey))
+    (trace (recv (cat a n-a))
+	   (send (cat b (enc a n-a n-b (ltk b c))))
+	   (recv (cat (enc a k (ltk b c)) rest))
+	   (send rest) 
+	   (recv (enc n-b k))))
+  (defrole serv
+    (vars (c a b name) (n-a n-b text) (k skey))
+    (trace (recv (cat b (enc a n-a n-b (ltk b c))))
+	   (send (cat (enc a k (ltk b c))
+		      (enc b k n-a n-b (ltk a c)))))
+    (uniq-gen k))
+
+  (defrule uniq-at
+    (forall
+     ((z strd) (i indx) (v mesg))
+     (implies (uniq-at v z i)
+	      (fact remember v z))))
+
+  (defrule ugen-at
+    (forall
+     ((z strd) (i indx) (v mesg))
+     (implies (ugen-at v z i)
+	      (fact remember-gen v z)))))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (a b c name) (n-b text) (k skey))
+  (defstrand resp 5 (a a) (b b) (c c) (n-b n-b) (k k))
+  (deflistener k)
+  (non-orig (ltk b c) (ltk a c))
+  (uniq-gen n-b))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (a b c name) (n-a text))
+  (defstrand init 3 (n-a n-a) (a a) (b b) (c c))
+  (non-orig (ltk b c) (ltk a c))
+  (uniq-gen n-a))
+
+
+
+
+
+  
diff --git a/tst/ugen-at.tst b/tst/ugen-at.tst
new file mode 100644
--- /dev/null
+++ b/tst/ugen-at.tst
@@ -0,0 +1,260 @@
+(herald uniq-at)
+
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/ugen-at.scm")
+
+(defprotocol yahalom-plus-uniq-at basic
+  (defrole init
+    (vars (a b c name) (n-a n-b text) (k skey))
+    (trace (send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a c name) (n-a n-b text) (rest mesg) (k skey))
+    (trace (recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))))
+  (defrole serv
+    (vars (c a b name) (n-a n-b text) (k skey))
+    (trace (recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    (uniq-gen k))
+  (defrule uniq-at
+    (forall ((z strd) (i indx) (v mesg))
+      (implies (uniq-at v z i) (fact remember v z))))
+  (defrule ugen-at
+    (forall ((z strd) (i indx) (v mesg))
+      (implies (ugen-at v z i) (fact remember-gen v z))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (rest mesg) (k skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (deflistener k)
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-gen n-b)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))) ((recv k) (send k)))
+  (label 0)
+  (unrealized (0 2) (0 4))
+  (origs)
+  (ugens (n-b (0 1)))
+  (comment "Not closed under rules"))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (rest mesg) (k skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (deflistener k)
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-gen n-b)
+  (facts (remember-gen n-b 0))
+  (rule ugen-at)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))) ((recv k) (send k)))
+  (label 1)
+  (parent 0)
+  (unrealized (0 2) (0 4))
+  (origs)
+  (ugens (n-b (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (rest mesg) (k skey) (n-b n-a n-a-0 n-b-0 text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (deflistener k)
+  (defstrand serv 2 (k k) (n-a n-a-0) (n-b n-b-0) (c c) (a a) (b b))
+  (precedes ((2 1) (0 2)) ((2 1) (1 0)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-gen k n-b)
+  (facts (remember-gen n-b 0) (remember-gen k 2))
+  (rule ugen-at)
+  (operation encryption-test (added-strand serv 2) (enc a k (ltk b c))
+    (0 2))
+  (strand-map 0 1)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))) ((recv k) (send k))
+    ((recv (cat b (enc a n-a-0 n-b-0 (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a-0 n-b-0 (ltk a c))))))
+  (label 2)
+  (parent 1)
+  (unrealized (0 4) (1 0) (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (rest mesg) (k skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (deflistener k)
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (2 0)) ((2 1) (0 2)) ((2 1) (1 0)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-gen k n-b)
+  (facts (remember-gen n-b 0) (remember-gen k 2))
+  (rule ugen-at)
+  (operation encryption-test (displaced 3 0 resp 2)
+    (enc a n-a-0 n-b-0 (ltk b c)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))) ((recv k) (send k))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c))))))
+  (label 3)
+  (parent 2)
+  (unrealized (0 4) (1 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (rest mesg) (k skey) (n-b n-a n-a-0 n-b-0 text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (deflistener k)
+  (defstrand serv 2 (k k) (n-a n-a-0) (n-b n-b-0) (c c) (a a) (b b))
+  (defstrand resp 2 (n-a n-a-0) (n-b n-b-0) (b b) (a a) (c c))
+  (precedes ((2 1) (0 2)) ((2 1) (1 0)) ((3 1) (2 0)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-gen k n-b)
+  (facts (remember-gen n-b 0) (remember-gen k 2))
+  (rule ugen-at)
+  (operation encryption-test (added-strand resp 2)
+    (enc a n-a-0 n-b-0 (ltk b c)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))) ((recv k) (send k))
+    ((recv (cat b (enc a n-a-0 n-b-0 (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a-0 n-b-0 (ltk a c)))))
+    ((recv (cat a n-a-0)) (send (cat b (enc a n-a-0 n-b-0 (ltk b c))))))
+  (label 4)
+  (parent 2)
+  (unrealized (0 4) (1 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom-plus-uniq-at basic
+  (defrole init
+    (vars (a b c name) (n-a n-b text) (k skey))
+    (trace (send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a c name) (n-a n-b text) (rest mesg) (k skey))
+    (trace (recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))))
+  (defrole serv
+    (vars (c a b name) (n-a n-b text) (k skey))
+    (trace (recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    (uniq-gen k))
+  (defrule uniq-at
+    (forall ((z strd) (i indx) (v mesg))
+      (implies (uniq-at v z i) (fact remember v z))))
+  (defrule ugen-at
+    (forall ((z strd) (i indx) (v mesg))
+      (implies (ugen-at v z i) (fact remember-gen v z))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (k skey) (n-a n-b text) (a b c name))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-gen n-a)
+  (traces
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (label 5)
+  (unrealized (0 1))
+  (origs)
+  (ugens (n-a (0 0)))
+  (comment "Not closed under rules"))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (k skey) (n-a n-b text) (a b c name))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-gen n-a)
+  (facts (remember-gen n-a 0))
+  (rule ugen-at)
+  (traces
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (label 6)
+  (parent 5)
+  (unrealized (0 1))
+  (origs)
+  (ugens (n-a (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (k skey) (n-a n-b text) (a b c name))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-gen k n-a)
+  (facts (remember-gen n-a 0) (remember-gen k 1))
+  (rule ugen-at)
+  (operation encryption-test (added-strand serv 2)
+    (enc b k n-a n-b (ltk a c)) (0 1))
+  (strand-map 0)
+  (traces
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c))))))
+  (label 7)
+  (parent 6)
+  (unrealized (1 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (k skey) (n-a n-b text) (a b c name))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand resp 2 (n-a n-a) (n-b n-b) (b b) (a a) (c c))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-gen k n-a)
+  (facts (remember-gen n-a 0) (remember-gen k 1))
+  (rule ugen-at)
+  (operation encryption-test (added-strand resp 2)
+    (enc a n-a n-b (ltk b c)) (1 0))
+  (strand-map 0 1)
+  (traces
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))))
+  (label 8)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (c c) (n-a n-a) (n-b n-b) (k k))))
+  (origs)
+  (ugens (k (1 1)) (n-a (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/ugo.scm b/tst/ugo.scm
--- a/tst/ugo.scm
+++ b/tst/ugo.scm
@@ -47,6 +47,41 @@
   (uniq-gen (invk u))
   (comment "How is the responder able to send (invk u)?"))
 
+
+(defprotocol uniq-gen-example-alt basic
+  (defrole init
+    (vars (u akey) (k skey))
+    (trace
+     (send (enc (invk u) k))
+     (recv u)
+     (send u))
+    (uniq-gen (invk u))
+    (non-orig k)
+    (comment
+     "Instances of this role generate u and (invk u)"
+     "at their first event."))
+  (defrole resp
+    (vars (u akey) (k skey))
+    (trace
+     (recv (enc (invk u) k))
+     (send u)
+     (recv u))
+    (non-orig k)
+    (comment
+     "Instances of this role appear to generate (invk u)"
+     "at their second event.")))
+
+(defskeleton uniq-gen-example-alt 
+  (vars)
+  (defstrandmax resp)
+  (comment "How is the responder able to send (invk u)?"))
+
+(defskeleton uniq-gen-example-alt 
+  (vars (u akey))
+  (defstrandmax resp (u u))
+  (uniq-gen (invk u))
+  (comment "How is the responder able to send (invk u)?"))
+
 (defprotocol uniq-orig-example basic
   (defrole init
     (vars (u akey) (k skey))
diff --git a/tst/ugo.tst b/tst/ugo.tst
--- a/tst/ugo.tst
+++ b/tst/ugo.tst
@@ -1,7 +1,7 @@
 (herald uniq-gen-and-orig-example
   (comment "Non-executable role examples"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/ugo.scm")
 
 (defprotocol uniq-gen-example basic
@@ -33,57 +33,8 @@
   (traces ((recv (enc u k)) (send (invk u)) (recv u)))
   (label 0)
   (unrealized (0 0))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton uniq-gen-example
-  (vars (k skey) (u akey))
-  (defstrand resp 3 (k k) (u u))
-  (defstrand init 1 (k k) (u u))
-  (precedes ((1 0) (0 0)))
-  (non-orig k)
-  (uniq-gen u)
-  (operation encryption-test (added-strand init 1) (enc u k) (0 0))
-  (traces ((recv (enc u k)) (send (invk u)) (recv u))
-    ((send (enc u k))))
-  (label 1)
-  (parent 0)
-  (unrealized (0 2))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton uniq-gen-example
-  (vars (k skey) (u akey))
-  (defstrand resp 3 (k k) (u u))
-  (defstrand init 3 (k k) (u u))
-  (precedes ((1 0) (0 0)) ((1 2) (0 2)))
-  (non-orig k)
-  (uniq-gen u)
-  (operation nonce-test (displaced 1 2 init 3) u (0 2) (enc u k))
-  (traces ((recv (enc u k)) (send (invk u)) (recv u))
-    ((send (enc u k)) (recv (invk u)) (send u)))
-  (label 2)
-  (parent 1)
-  (realized)
-  (shape)
-  (maps ((0) ((u u) (k k))))
-  (origs))
-
-(defskeleton uniq-gen-example
-  (vars (k k-0 skey) (u akey))
-  (defstrand resp 3 (k k) (u (invk u)))
-  (defstrand init 1 (k k) (u (invk u)))
-  (defstrand resp 2 (k k-0) (u u))
-  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 2)))
-  (non-orig k k-0)
-  (uniq-gen (invk u))
-  (operation nonce-test (added-strand resp 2) (invk u) (0 2)
-    (enc (invk u) k))
-  (traces ((recv (enc (invk u) k)) (send u) (recv (invk u)))
-    ((send (enc (invk u) k))) ((recv (enc u k-0)) (send (invk u))))
-  (label 3)
-  (parent 1)
-  (unrealized (2 0))
   (dead)
+  (origs)
   (comment "empty cohort"))
 
 (comment "Nothing left to do")
@@ -116,111 +67,82 @@
   (uniq-gen (invk u))
   (comment "How is the responder able to send (invk u)?")
   (traces ((recv (enc u k)) (send (invk u)) (recv u)))
-  (label 4)
+  (label 1)
   (unrealized (0 0))
+  (dead)
   (origs)
-  (comment "1 in cohort - 1 not yet seen"))
+  (comment "empty cohort"))
 
-(defskeleton uniq-gen-example
-  (vars (k skey) (u akey))
-  (defstrand resp 3 (k k) (u u))
-  (defstrand init 1 (k k) (u u))
-  (precedes ((1 0) (0 0)))
-  (non-orig k)
-  (uniq-gen u (invk u))
-  (operation encryption-test (added-strand init 1) (enc u k) (0 0))
-  (traces ((recv (enc u k)) (send (invk u)) (recv u))
-    ((send (enc u k))))
-  (label 5)
-  (parent 4)
-  (unrealized (0 2))
-  (comment "2 in cohort - 2 not yet seen"))
+(comment "Nothing left to do")
 
-(defskeleton uniq-gen-example
+(defprotocol uniq-gen-example-alt basic
+  (defrole init
+    (vars (u akey) (k skey))
+    (trace (send (enc (invk u) k)) (recv u) (send u))
+    (non-orig k)
+    (uniq-gen (invk u))
+    (comment "Instances of this role generate u and (invk u)"
+      "at their first event."))
+  (defrole resp
+    (vars (u akey) (k skey))
+    (trace (recv (enc (invk u) k)) (send u) (recv u))
+    (non-orig k)
+    (comment "Instances of this role appear to generate (invk u)"
+      "at their second event."))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton uniq-gen-example-alt
   (vars (k skey) (u akey))
   (defstrand resp 3 (k k) (u u))
-  (defstrand init 3 (k k) (u u))
-  (precedes ((1 0) (0 0)) ((1 2) (0 2)))
   (non-orig k)
-  (uniq-gen u (invk u))
-  (operation nonce-test (displaced 1 2 init 3) u (0 2) (enc u k))
-  (traces ((recv (enc u k)) (send (invk u)) (recv u))
-    ((send (enc u k)) (recv (invk u)) (send u)))
-  (label 6)
-  (parent 5)
-  (unrealized (1 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton uniq-gen-example
-  (vars (k k-0 skey) (u akey))
-  (defstrand resp 3 (k k) (u (invk u)))
-  (defstrand init 1 (k k) (u (invk u)))
-  (defstrand resp 2 (k k-0) (u u))
-  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 2)))
-  (non-orig k k-0)
-  (uniq-gen u (invk u))
-  (operation nonce-test (added-strand resp 2) (invk u) (0 2)
-    (enc (invk u) k))
-  (traces ((recv (enc (invk u) k)) (send u) (recv (invk u)))
-    ((send (enc (invk u) k))) ((recv (enc u k-0)) (send (invk u))))
-  (label 7)
-  (parent 5)
-  (unrealized (2 0))
+  (comment "How is the responder able to send (invk u)?")
+  (traces ((recv (enc (invk u) k)) (send u) (recv u)))
+  (label 2)
+  (unrealized (0 0))
   (dead)
+  (origs)
   (comment "empty cohort"))
 
-(defskeleton uniq-gen-example
-  (vars (k skey) (u akey))
-  (defstrand resp 3 (k k) (u u))
-  (defstrand init 3 (k k) (u u))
-  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
-  (non-orig k)
-  (uniq-gen u (invk u))
-  (operation nonce-test (displaced 2 0 resp 2) (invk u) (1 1))
-  (traces ((recv (enc u k)) (send (invk u)) (recv u))
-    ((send (enc u k)) (recv (invk u)) (send u)))
-  (label 8)
-  (parent 6)
-  (realized)
-  (shape)
-  (maps ((0) ((u u) (k k))))
-  (origs))
+(comment "Nothing left to do")
 
-(defskeleton uniq-gen-example
-  (vars (k k-0 skey) (u akey))
-  (defstrand resp 3 (k k) (u u))
-  (defstrand init 3 (k k) (u u))
-  (defstrand resp 2 (k k-0) (u u))
-  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((1 2) (0 2)) ((2 1) (1 1)))
-  (non-orig k k-0)
-  (uniq-gen u (invk u))
-  (operation nonce-test (added-strand resp 2) (invk u) (1 1))
-  (traces ((recv (enc u k)) (send (invk u)) (recv u))
-    ((send (enc u k)) (recv (invk u)) (send u))
-    ((recv (enc u k-0)) (send (invk u))))
-  (label 9)
-  (parent 6)
-  (unrealized (2 0))
-  (comment "1 in cohort - 1 not yet seen"))
+(defprotocol uniq-gen-example-alt basic
+  (defrole init
+    (vars (u akey) (k skey))
+    (trace (send (enc (invk u) k)) (recv u) (send u))
+    (non-orig k)
+    (uniq-gen (invk u))
+    (comment "Instances of this role generate u and (invk u)"
+      "at their first event."))
+  (defrole resp
+    (vars (u akey) (k skey))
+    (trace (recv (enc (invk u) k)) (send u) (recv u))
+    (non-orig k)
+    (comment "Instances of this role appear to generate (invk u)"
+      "at their second event."))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
 
-(defskeleton uniq-gen-example
+(defskeleton uniq-gen-example-alt
   (vars (k skey) (u akey))
   (defstrand resp 3 (k k) (u u))
-  (defstrand init 3 (k k) (u u))
-  (defstrand resp 2 (k k) (u u))
-  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((1 2) (0 2)) ((2 1) (1 1)))
   (non-orig k)
-  (uniq-gen u (invk u))
-  (operation encryption-test (displaced 3 1 init 1) (enc u k-0) (2 0))
-  (traces ((recv (enc u k)) (send (invk u)) (recv u))
-    ((send (enc u k)) (recv (invk u)) (send u))
-    ((recv (enc u k)) (send (invk u))))
-  (label 10)
-  (parent 9)
-  (realized)
-  (shape)
-  (maps ((0) ((u u) (k k))))
-  (origs))
+  (uniq-gen (invk u))
+  (comment "How is the responder able to send (invk u)?")
+  (traces ((recv (enc (invk u) k)) (send u) (recv u)))
+  (label 3)
+  (unrealized (0 0))
+  (dead)
+  (origs)
+  (comment "empty cohort"))
 
 (comment "Nothing left to do")
 
@@ -248,7 +170,7 @@
   (defstrand resp 3 (k k) (u u))
   (non-orig k)
   (traces ((recv (enc u k)) (send (invk u)) (recv u)))
-  (label 11)
+  (label 4)
   (unrealized (0 0))
   (origs)
   (comment "1 in cohort - 1 not yet seen"))
@@ -261,10 +183,11 @@
   (non-orig k)
   (uniq-orig u)
   (operation encryption-test (added-strand init 1) (enc u k) (0 0))
+  (strand-map 0)
   (traces ((recv (enc u k)) (send (invk u)) (recv u))
     ((send (enc u k))))
-  (label 12)
-  (parent 11)
+  (label 5)
+  (parent 4)
   (unrealized (0 2))
   (comment "1 in cohort - 1 not yet seen"))
 
@@ -276,10 +199,11 @@
   (non-orig k)
   (uniq-orig u)
   (operation nonce-test (displaced 1 2 init 3) u (0 2) (enc u k))
+  (strand-map 0 1)
   (traces ((recv (enc u k)) (send (invk u)) (recv u))
     ((send (enc u k)) (recv (invk u)) (send u)))
-  (label 13)
-  (parent 12)
+  (label 6)
+  (parent 5)
   (realized)
   (shape)
   (maps ((0) ((u u) (k k))))
@@ -312,7 +236,7 @@
   (non-orig k)
   (uniq-orig (invk u))
   (traces ((recv (enc u k)) (send (invk u)) (recv u)))
-  (label 14)
+  (label 7)
   (unrealized (0 0))
   (origs ((invk u) (0 1)))
   (comment "1 in cohort - 1 not yet seen"))
@@ -325,10 +249,11 @@
   (non-orig k)
   (uniq-orig u (invk u))
   (operation encryption-test (added-strand init 1) (enc u k) (0 0))
+  (strand-map 0)
   (traces ((recv (enc u k)) (send (invk u)) (recv u))
     ((send (enc u k))))
-  (label 15)
-  (parent 14)
+  (label 8)
+  (parent 7)
   (unrealized (0 2))
   (comment "1 in cohort - 1 not yet seen"))
 
@@ -340,10 +265,11 @@
   (non-orig k)
   (uniq-orig u (invk u))
   (operation nonce-test (displaced 1 2 init 3) u (0 2) (enc u k))
+  (strand-map 0 1)
   (traces ((recv (enc u k)) (send (invk u)) (recv u))
     ((send (enc u k)) (recv (invk u)) (send u)))
-  (label 16)
-  (parent 15)
+  (label 9)
+  (parent 8)
   (realized)
   (shape)
   (maps ((0) ((u u) (k k))))
diff --git a/tst/uncarried_keys.tst b/tst/uncarried_keys.tst
--- a/tst/uncarried_keys.tst
+++ b/tst/uncarried_keys.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/uncarried_keys.scm")
 
 (defprotocol uncarried-keys basic
@@ -43,6 +43,7 @@
   (uniq-orig a K)
   (operation nonce-test (added-strand resp 2) a (0 1)
     (enc "start" a A B (pubk B)))
+  (strand-map 0)
   (traces
     ((send (enc "start" a A B (pubk B))) (recv (enc a A B (pubk A)))
       (send (enc a K (pubk B))) (recv (enc a A B K)))
@@ -62,6 +63,7 @@
   (non-orig (invk K) (privk B))
   (uniq-orig a K)
   (operation encryption-test (added-strand resp 4) (enc a A B K) (0 3))
+  (strand-map 0 1)
   (traces
     ((send (enc "start" a A B (pubk B))) (recv (enc a A B (pubk A)))
       (send (enc a K (pubk B))) (recv (enc a A B K)))
@@ -83,6 +85,7 @@
   (non-orig (invk K) (privk B))
   (uniq-orig a K)
   (operation encryption-test (displaced 1 2 resp 4) (enc a A B K) (0 3))
+  (strand-map 0 1)
   (traces
     ((send (enc "start" a A B (pubk B))) (recv (enc a A B (pubk A)))
       (send (enc a K (pubk B))) (recv (enc a A B K)))
@@ -104,6 +107,7 @@
   (uniq-orig a (pubk A))
   (operation encryption-test (displaced 2 1 resp 2) (enc a A B (pubk A))
     (0 3))
+  (strand-map 0 1)
   (traces
     ((send (enc "start" a A B (pubk B))) (recv (enc a A B (pubk A)))
       (send (enc a (pubk A) (pubk B))) (recv (enc a A B (pubk A))))
@@ -124,6 +128,7 @@
   (non-orig (invk K) (privk B))
   (uniq-orig a K)
   (operation encryption-test (added-listener K) (enc a A B K) (0 3))
+  (strand-map 0 1)
   (traces
     ((send (enc "start" a A B (pubk B))) (recv (enc a A B (pubk A)))
       (send (enc a K (pubk B))) (recv (enc a A B K)))
diff --git a/tst/uncarried_keys_shapes.tst b/tst/uncarried_keys_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/uncarried_keys_shapes.tst
@@ -0,0 +1,104 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/uncarried_keys.scm")
+
+(defprotocol uncarried-keys basic
+  (defrole init
+    (vars (a text) (A B name) (K akey))
+    (trace (send (enc "start" a A B (pubk B)))
+      (recv (enc a A B (pubk A))) (send (enc a K (pubk B)))
+      (recv (enc a A B K)))
+    (non-orig (invk K) (privk B))
+    (uniq-orig a K))
+  (defrole resp
+    (vars (a text) (A B name) (K akey))
+    (trace (recv (enc "start" a A B (pubk B)))
+      (send (enc a A B (pubk A))) (recv (enc a K (pubk B)))
+      (send (enc a A B K))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton uncarried-keys
+  (vars (a text) (K akey) (A B name))
+  (defstrand init 4 (a a) (K K) (A A) (B B))
+  (non-orig (invk K) (privk B))
+  (uniq-orig a K)
+  (traces
+    ((send (enc "start" a A B (pubk B))) (recv (enc a A B (pubk A)))
+      (send (enc a K (pubk B))) (recv (enc a A B K))))
+  (label 0)
+  (unrealized (0 1) (0 3))
+  (origs (K (0 2)) (a (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton uncarried-keys
+  (vars (a text) (K akey) (A B name))
+  (defstrand init 4 (a a) (K K) (A A) (B B))
+  (defstrand resp 2 (a a) (A A) (B B))
+  (defstrand resp 4 (a a) (K K) (A A) (B B))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 2) (2 2)) ((1 1) (0 1))
+    ((2 3) (0 3)))
+  (non-orig (invk K) (privk B))
+  (uniq-orig a K)
+  (operation encryption-test (added-strand resp 4) (enc a A B K) (0 3))
+  (traces
+    ((send (enc "start" a A B (pubk B))) (recv (enc a A B (pubk A)))
+      (send (enc a K (pubk B))) (recv (enc a A B K)))
+    ((recv (enc "start" a A B (pubk B))) (send (enc a A B (pubk A))))
+    ((recv (enc "start" a A B (pubk B))) (send (enc a A B (pubk A)))
+      (recv (enc a K (pubk B))) (send (enc a A B K))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (A A) (B B) (K K))))
+  (origs (K (0 2)) (a (0 0))))
+
+(defskeleton uncarried-keys
+  (vars (a text) (K akey) (A B name))
+  (defstrand init 4 (a a) (K K) (A A) (B B))
+  (defstrand resp 4 (a a) (K K) (A A) (B B))
+  (precedes ((0 0) (1 0)) ((0 2) (1 2)) ((1 1) (0 1)) ((1 3) (0 3)))
+  (non-orig (invk K) (privk B))
+  (uniq-orig a K)
+  (operation encryption-test (displaced 1 2 resp 4) (enc a A B K) (0 3))
+  (traces
+    ((send (enc "start" a A B (pubk B))) (recv (enc a A B (pubk A)))
+      (send (enc a K (pubk B))) (recv (enc a A B K)))
+    ((recv (enc "start" a A B (pubk B))) (send (enc a A B (pubk A)))
+      (recv (enc a K (pubk B))) (send (enc a A B K))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (A A) (B B) (K K))))
+  (origs (K (0 2)) (a (0 0))))
+
+(defskeleton uncarried-keys
+  (vars (a text) (A B name))
+  (defstrand init 4 (a a) (K (pubk A)) (A A) (B B))
+  (defstrand resp 2 (a a) (A A) (B B))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk A) (privk B))
+  (uniq-orig a (pubk A))
+  (operation encryption-test (displaced 2 1 resp 2) (enc a A B (pubk A))
+    (0 3))
+  (traces
+    ((send (enc "start" a A B (pubk B))) (recv (enc a A B (pubk A)))
+      (send (enc a (pubk A) (pubk B))) (recv (enc a A B (pubk A))))
+    ((recv (enc "start" a A B (pubk B))) (send (enc a A B (pubk A)))))
+  (label 4)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (A A) (B B) (K (pubk A)))))
+  (origs ((pubk A) (0 2)) (a (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/unilateral.tst b/tst/unilateral.tst
--- a/tst/unilateral.tst
+++ b/tst/unilateral.tst
@@ -1,6 +1,6 @@
 (herald unilateral)
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/unilateral.scm")
 
 (defprotocol unilateral basic
@@ -37,6 +37,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (added-strand resp 2) n (0 1) (enc n k))
+  (strand-map 0)
   (traces ((send (enc n k)) (recv n)) ((recv (enc n k)) (send n)))
   (label 1)
   (parent 0)
@@ -82,6 +83,7 @@
   (pen-non-orig n)
   (uniq-orig n)
   (operation nonce-test (added-strand init 1) n (0 0))
+  (strand-map 0)
   (traces ((recv (enc n k)) (send n)) ((send (enc n k-0))))
   (label 3)
   (parent 2)
@@ -134,6 +136,7 @@
   (non-orig (invk k))
   (uniq-orig n)
   (operation nonce-test (added-strand resp 2) n (0 1) (enc n k))
+  (strand-map 0)
   (traces ((send (enc n k)) (recv n)) ((recv (enc n k)) (send n)))
   (label 5)
   (parent 4)
@@ -189,6 +192,7 @@
   (pen-non-orig n)
   (uniq-orig n)
   (operation nonce-test (added-strand init 1) n (0 0))
+  (strand-map 0)
   (traces ((recv (enc n k)) (send n)) ((send (enc n k-0))))
   (label 7)
   (parent 6)
@@ -241,6 +245,7 @@
   (uniq-orig na nb)
   (operation encryption-test (added-strand resp 2)
     (enc na nb b t2 (privk b)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat nb t1))
       (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
@@ -300,6 +305,7 @@
   (uniq-orig na nb)
   (operation encryption-test (added-strand resp 2)
     (enc na nb b t2 (privk b)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat nb t1))
       (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
@@ -360,6 +366,7 @@
   (uniq-orig na nb)
   (operation encryption-test (added-strand resp 2)
     (enc na nb b t2 (privk b)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat nb t1))
       (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
diff --git a/tst/unilateral_shapes.tst b/tst/unilateral_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/unilateral_shapes.tst
@@ -0,0 +1,380 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald unilateral)
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/unilateral.scm")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (n text) (k akey))
+    (trace (send (enc n k)) (recv n))
+    (uniq-orig n))
+  (defrole resp
+    (vars (n text) (k akey))
+    (trace (recv (enc n k)) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton unilateral
+  (vars (n text) (k akey))
+  (defstrand init 2 (n n) (k k))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (traces ((send (enc n k)) (recv n)))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton unilateral
+  (vars (n text) (k akey))
+  (defstrand init 2 (n n) (k k))
+  (defstrand resp 2 (n n) (k k))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (operation nonce-test (added-strand resp 2) n (0 1) (enc n k))
+  (traces ((send (enc n k)) (recv n)) ((recv (enc n k)) (send n)))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((k k) (n n))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (n text) (k akey))
+    (trace (send (enc n k)) (recv n))
+    (uniq-orig n))
+  (defrole resp
+    (vars (n text) (k akey))
+    (trace (recv (enc n k)) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton unilateral
+  (vars (n text) (k akey))
+  (defstrand resp 2 (n n) (k k))
+  (non-orig (invk k))
+  (pen-non-orig n)
+  (traces ((recv (enc n k)) (send n)))
+  (label 2)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton unilateral
+  (vars (n text) (k k-0 akey))
+  (defstrand resp 2 (n n) (k k))
+  (defstrand init 1 (n n) (k k-0))
+  (precedes ((1 0) (0 0)))
+  (non-orig (invk k))
+  (pen-non-orig n)
+  (uniq-orig n)
+  (operation nonce-test (added-strand init 1) n (0 0))
+  (traces ((recv (enc n k)) (send n)) ((send (enc n k-0))))
+  (label 3)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((n n) (k k))))
+  (origs (n (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (n text) (k akey))
+    (trace (send (enc n k)) (recv n))
+    (uniq-orig n))
+  (defrole resp
+    (vars (n text) (k akey))
+    (trace (recv (enc n k)) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton unilateral
+  (vars (n text) (k akey))
+  (defstrand init 2 (n n) (k k))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (goals
+    (forall ((n text) (k akey) (z strd))
+      (implies
+        (and (p "init" z 2) (p "init" "n" z n) (p "init" "k" z k)
+          (non (invk k)) (uniq-at n z 0))
+        (exists ((z-0 strd))
+          (and (p "resp" z-0 2) (p "resp" "n" z-0 n)
+            (p "resp" "k" z-0 k) (prec z 0 z-0 0) (prec z-0 1 z 1))))))
+  (traces ((send (enc n k)) (recv n)))
+  (label 4)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton unilateral
+  (vars (n text) (k akey))
+  (defstrand init 2 (n n) (k k))
+  (defstrand resp 2 (n n) (k k))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk k))
+  (uniq-orig n)
+  (operation nonce-test (added-strand resp 2) n (0 1) (enc n k))
+  (traces ((send (enc n k)) (recv n)) ((recv (enc n k)) (send n)))
+  (label 5)
+  (parent 4)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((n n) (k k))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol unilateral basic
+  (defrole init
+    (vars (n text) (k akey))
+    (trace (send (enc n k)) (recv n))
+    (uniq-orig n))
+  (defrole resp
+    (vars (n text) (k akey))
+    (trace (recv (enc n k)) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton unilateral
+  (vars (n text) (k akey))
+  (defstrand resp 2 (n n) (k k))
+  (non-orig (invk k))
+  (pen-non-orig n)
+  (goals
+    (forall ((n text) (k akey) (z strd))
+      (implies
+        (and (p "resp" z 2) (p "resp" "n" z n) (p "resp" "k" z k)
+          (non (invk k)) (pnon n))
+        (exists ((k-0 akey) (z-0 strd))
+          (and (p "init" z-0 1) (p "init" "n" z-0 n)
+            (p "init" "k" z-0 k-0) (prec z-0 0 z 0)
+            (uniq-at n z-0 0))))))
+  (traces ((recv (enc n k)) (send n)))
+  (label 6)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton unilateral
+  (vars (n text) (k k-0 akey))
+  (defstrand resp 2 (n n) (k k))
+  (defstrand init 1 (n n) (k k-0))
+  (precedes ((1 0) (0 0)))
+  (non-orig (invk k))
+  (pen-non-orig n)
+  (uniq-orig n)
+  (operation nonce-test (added-strand init 1) n (0 0))
+  (traces ((recv (enc n k)) (send n)) ((send (enc n k-0))))
+  (label 7)
+  (parent 6)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((n n) (k k))))
+  (origs (n (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol iso-unilateral basic
+  (defrole resp
+    (vars (na nb t1 t2 t3 text) (b name))
+    (trace (recv (cat nb t1))
+      (send (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    (uniq-orig na))
+  (defrole init
+    (vars (na nb t1 t2 t3 text) (b name))
+    (trace (send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    (uniq-orig nb))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Two pass authentication"))
+
+(defskeleton iso-unilateral
+  (vars (na nb t1 t2 t3 text) (b name))
+  (defstrand init 2 (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3) (b b))
+  (non-orig (privk b))
+  (uniq-orig nb)
+  (traces
+    ((send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b))))))
+  (label 8)
+  (unrealized (0 1))
+  (origs (nb (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton iso-unilateral
+  (vars (na nb t1 t2 t3 t1-0 t3-0 text) (b name))
+  (defstrand init 2 (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3) (b b))
+  (defstrand resp 2 (na na) (nb nb) (t1 t1-0) (t2 t2) (t3 t3-0) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk b))
+  (uniq-orig na nb)
+  (operation encryption-test (added-strand resp 2)
+    (enc na nb b t2 (privk b)) (0 1))
+  (traces
+    ((send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    ((recv (cat nb t1-0))
+      (send (cat na nb b t3-0 (enc na nb b t2 (privk b))))))
+  (label 9)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3))))
+  (origs (na (1 1)) (nb (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol iso-unilateral basic
+  (defrole resp
+    (vars (na nb t1 t2 t3 text) (b name))
+    (trace (recv (cat nb t1))
+      (send (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    (uniq-orig na))
+  (defrole init
+    (vars (na nb t1 t2 t3 text) (b name))
+    (trace (send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    (uniq-orig nb))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Two pass authentication"))
+
+(defskeleton iso-unilateral
+  (vars (na nb t1 t2 t3 text) (b name))
+  (defstrand init 2 (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3) (b b))
+  (non-orig (privk b))
+  (uniq-orig nb)
+  (goals
+    (forall ((b name) (z strd))
+      (implies (and (p "init" z 2) (p "init" "b" z b) (non (privk b)))
+        (exists ((y strd)) (and (p "resp" y 2) (p "resp" "b" y b))))))
+  (traces
+    ((send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b))))))
+  (label 10)
+  (unrealized (0 1))
+  (origs (nb (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton iso-unilateral
+  (vars (na nb t1 t2 t3 t1-0 t3-0 text) (b name))
+  (defstrand init 2 (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3) (b b))
+  (defstrand resp 2 (na na) (nb nb) (t1 t1-0) (t2 t2) (t3 t3-0) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk b))
+  (uniq-orig na nb)
+  (operation encryption-test (added-strand resp 2)
+    (enc na nb b t2 (privk b)) (0 1))
+  (traces
+    ((send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    ((recv (cat nb t1-0))
+      (send (cat na nb b t3-0 (enc na nb b t2 (privk b))))))
+  (label 11)
+  (parent 10)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((b b) (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3))))
+  (origs (na (1 1)) (nb (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol iso-unilateral basic
+  (defrole resp
+    (vars (na nb t1 t2 t3 text) (b name))
+    (trace (recv (cat nb t1))
+      (send (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    (uniq-orig na))
+  (defrole init
+    (vars (na nb t1 t2 t3 text) (b name))
+    (trace (send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    (uniq-orig nb))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Two pass authentication"))
+
+(defskeleton iso-unilateral
+  (vars (na nb t1 t2 t3 text) (b name))
+  (defstrand init 2 (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3) (b b))
+  (non-orig (privk b))
+  (uniq-orig nb)
+  (goals
+    (forall ((b name) (z strd))
+      (implies (and (p "init" z 2) (p "init" "b" z b) (non (privk b)))
+        (false))))
+  (traces
+    ((send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b))))))
+  (label 12)
+  (unrealized (0 1))
+  (origs (nb (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton iso-unilateral
+  (vars (na nb t1 t2 t3 t1-0 t3-0 text) (b name))
+  (defstrand init 2 (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3) (b b))
+  (defstrand resp 2 (na na) (nb nb) (t1 t1-0) (t2 t2) (t3 t3-0) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk b))
+  (uniq-orig na nb)
+  (operation encryption-test (added-strand resp 2)
+    (enc na nb b t2 (privk b)) (0 1))
+  (traces
+    ((send (cat nb t1))
+      (recv (cat na nb b t3 (enc na nb b t2 (privk b)))))
+    ((recv (cat nb t1-0))
+      (send (cat na nb b t3-0 (enc na nb b t2 (privk b))))))
+  (label 13)
+  (parent 12)
+  (realized)
+  (shape)
+  (satisfies (no (b b) (z 0)))
+  (maps ((0) ((b b) (na na) (nb nb) (t1 t1) (t2 t2) (t3 t3))))
+  (origs (na (1 1)) (nb (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/uniq-at.scm b/tst/uniq-at.scm
new file mode 100644
--- /dev/null
+++ b/tst/uniq-at.scm
@@ -0,0 +1,53 @@
+(herald uniq-at)
+
+(defprotocol yahalom-plus-uniq-at basic 
+
+  (defrole init
+    (vars (a b c name) (n-a n-b text) (k skey))
+    (trace (send (cat a n-a))
+	   (recv (enc b k n-a n-b (ltk a c)))
+	   (send (enc n-b k))))
+  (defrole resp
+    (vars (b a c name) (n-a n-b text) (rest mesg) (k skey))
+    (trace (recv (cat a n-a))
+	   (send (cat b (enc a n-a n-b (ltk b c))))
+	   (recv (cat (enc a k (ltk b c)) rest))
+	   (send rest) 
+	   (recv (enc n-b k))))
+  (defrole serv
+    (vars (c a b name) (n-a n-b text) (k skey))
+    (trace (recv (cat b (enc a n-a n-b (ltk b c))))
+	   (send (cat (enc a k (ltk b c))
+		      (enc b k n-a n-b (ltk a c)))))
+    (uniq-orig k))
+
+  (defrule uniq-at
+    (forall
+     ((z strd) (i indx) (v mesg))
+     (implies (uniq-at v z i)
+	      (fact remember v z))))
+
+  (defrule ugen-at
+    (forall
+     ((z strd) (i indx) (v mesg))
+     (implies (ugen-at v z i)
+	      (fact remember-gen v z)))))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (a b c name) (n-b text) (k skey))
+  (defstrand resp 5 (a a) (b b) (c c) (n-b n-b) (k k))
+  (deflistener k)
+  (non-orig (ltk b c) (ltk a c))
+  (uniq-orig n-b))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (a b c name) (n-a text))
+  (defstrand init 3 (n-a n-a) (a a) (b b) (c c))
+  (non-orig (ltk b c) (ltk a c))
+  (uniq-orig n-a))
+
+
+
+
+
+  
diff --git a/tst/uniq-at.tst b/tst/uniq-at.tst
new file mode 100644
--- /dev/null
+++ b/tst/uniq-at.tst
@@ -0,0 +1,255 @@
+(herald uniq-at)
+
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/uniq-at.scm")
+
+(defprotocol yahalom-plus-uniq-at basic
+  (defrole init
+    (vars (a b c name) (n-a n-b text) (k skey))
+    (trace (send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a c name) (n-a n-b text) (rest mesg) (k skey))
+    (trace (recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))))
+  (defrole serv
+    (vars (c a b name) (n-a n-b text) (k skey))
+    (trace (recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    (uniq-orig k))
+  (defrule uniq-at
+    (forall ((z strd) (i indx) (v mesg))
+      (implies (uniq-at v z i) (fact remember v z))))
+  (defrule ugen-at
+    (forall ((z strd) (i indx) (v mesg))
+      (implies (ugen-at v z i) (fact remember-gen v z))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (rest mesg) (k skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (deflistener k)
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig n-b)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))) ((recv k) (send k)))
+  (label 0)
+  (unrealized (0 2) (0 4))
+  (origs (n-b (0 1)))
+  (comment "Not closed under rules"))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (rest mesg) (k skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (deflistener k)
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig n-b)
+  (facts (remember n-b 0))
+  (rule uniq-at)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))) ((recv k) (send k)))
+  (label 1)
+  (parent 0)
+  (unrealized (0 2) (0 4))
+  (origs (n-b (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (rest mesg) (k skey) (n-b n-a n-a-0 n-b-0 text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (deflistener k)
+  (defstrand serv 2 (k k) (n-a n-a-0) (n-b n-b-0) (c c) (a a) (b b))
+  (precedes ((2 1) (0 2)) ((2 1) (1 0)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-b)
+  (facts (remember n-b 0) (remember k 2))
+  (rule uniq-at)
+  (operation encryption-test (added-strand serv 2) (enc a k (ltk b c))
+    (0 2))
+  (strand-map 0 1)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))) ((recv k) (send k))
+    ((recv (cat b (enc a n-a-0 n-b-0 (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a-0 n-b-0 (ltk a c))))))
+  (label 2)
+  (parent 1)
+  (unrealized (0 4) (1 0) (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (rest mesg) (k skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (deflistener k)
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (2 0)) ((2 1) (0 2)) ((2 1) (1 0)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-b)
+  (facts (remember n-b 0) (remember k 2))
+  (rule uniq-at)
+  (operation encryption-test (displaced 3 0 resp 2)
+    (enc a n-a-0 n-b-0 (ltk b c)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))) ((recv k) (send k))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c))))))
+  (label 3)
+  (parent 2)
+  (unrealized (0 4) (1 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (rest mesg) (k skey) (n-b n-a n-a-0 n-b-0 text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (deflistener k)
+  (defstrand serv 2 (k k) (n-a n-a-0) (n-b n-b-0) (c c) (a a) (b b))
+  (defstrand resp 2 (n-a n-a-0) (n-b n-b-0) (b b) (a a) (c c))
+  (precedes ((2 1) (0 2)) ((2 1) (1 0)) ((3 1) (2 0)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-b)
+  (facts (remember n-b 0) (remember k 2))
+  (rule uniq-at)
+  (operation encryption-test (added-strand resp 2)
+    (enc a n-a-0 n-b-0 (ltk b c)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))) ((recv k) (send k))
+    ((recv (cat b (enc a n-a-0 n-b-0 (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a-0 n-b-0 (ltk a c)))))
+    ((recv (cat a n-a-0)) (send (cat b (enc a n-a-0 n-b-0 (ltk b c))))))
+  (label 4)
+  (parent 2)
+  (unrealized (0 4) (1 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom-plus-uniq-at basic
+  (defrole init
+    (vars (a b c name) (n-a n-b text) (k skey))
+    (trace (send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a c name) (n-a n-b text) (rest mesg) (k skey))
+    (trace (recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))))
+  (defrole serv
+    (vars (c a b name) (n-a n-b text) (k skey))
+    (trace (recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    (uniq-orig k))
+  (defrule uniq-at
+    (forall ((z strd) (i indx) (v mesg))
+      (implies (uniq-at v z i) (fact remember v z))))
+  (defrule ugen-at
+    (forall ((z strd) (i indx) (v mesg))
+      (implies (ugen-at v z i) (fact remember-gen v z))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (k skey) (n-a n-b text) (a b c name))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig n-a)
+  (traces
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (label 5)
+  (unrealized (0 1))
+  (origs (n-a (0 0)))
+  (comment "Not closed under rules"))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (k skey) (n-a n-b text) (a b c name))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig n-a)
+  (facts (remember n-a 0))
+  (rule uniq-at)
+  (traces
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (label 6)
+  (parent 5)
+  (unrealized (0 1))
+  (origs (n-a (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (k skey) (n-a n-b text) (a b c name))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-a)
+  (facts (remember n-a 0) (remember k 1))
+  (rule uniq-at)
+  (operation encryption-test (added-strand serv 2)
+    (enc b k n-a n-b (ltk a c)) (0 1))
+  (strand-map 0)
+  (traces
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c))))))
+  (label 7)
+  (parent 6)
+  (unrealized (1 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom-plus-uniq-at
+  (vars (k skey) (n-a n-b text) (a b c name))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand resp 2 (n-a n-a) (n-b n-b) (b b) (a a) (c c))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-a)
+  (facts (remember n-a 0) (remember k 1))
+  (rule uniq-at)
+  (operation encryption-test (added-strand resp 2)
+    (enc a n-a n-b (ltk b c)) (1 0))
+  (strand-map 0 1)
+  (traces
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))))
+  (label 8)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (c c) (n-a n-a) (n-b n-b) (k k))))
+  (origs (k (1 1)) (n-a (0 0))))
+
+(comment "Nothing left to do")
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,7 +1,7 @@
 (herald "Unique generation test protocols."
   (comment "Skeletons 2, 4, and 7 should have no shapes."))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/uniq-gen-test.scm")
 
 (defprotocol uniqgentest basic
@@ -27,6 +27,7 @@
   (label 0)
   (unrealized (0 1))
   (origs)
+  (ugens (k (0 0)))
   (comment "2 in cohort - 2 not yet seen"))
 
 (defskeleton uniqgentest
@@ -36,6 +37,7 @@
   (precedes ((0 0) (1 0)) ((1 1) (0 1)))
   (uniq-gen k)
   (operation encryption-test (added-strand resp 2) (enc a a k) (0 1))
+  (strand-map 0)
   (traces ((send (enc a k)) (recv (enc a a k)))
     ((recv (enc a k)) (send (enc a a k))))
   (label 1)
@@ -43,7 +45,8 @@
   (realized)
   (shape)
   (maps ((0) ((k k) (a a))))
-  (origs))
+  (origs)
+  (ugens (k (0 0))))
 
 (defskeleton uniqgentest
   (vars (k skey) (a name))
@@ -52,6 +55,7 @@
   (precedes ((0 0) (1 0)) ((1 1) (0 1)))
   (uniq-gen k)
   (operation encryption-test (added-listener k) (enc a a k) (0 1))
+  (strand-map 0)
   (traces ((send (enc a k)) (recv (enc a a k))) ((recv k) (send k)))
   (label 2)
   (parent 0)
@@ -93,6 +97,7 @@
   (precedes ((1 0) (0 1)))
   (non-orig k)
   (operation encryption-test (added-strand doubler 1) (enc a a k) (0 1))
+  (strand-map 0)
   (traces ((send (enc a k)) (recv (enc a a k))) ((send (enc a a k))))
   (label 4)
   (parent 3)
@@ -108,6 +113,7 @@
   (precedes ((1 1) (0 1)))
   (non-orig k)
   (operation encryption-test (added-strand resp 2) (enc a a k) (0 1))
+  (strand-map 0)
   (traces ((send (enc a k)) (recv (enc a a k)))
     ((recv (enc a k)) (send (enc a a k))))
   (label 5)
@@ -122,6 +128,7 @@
   (precedes ((0 0) (1 0)) ((1 1) (0 1)))
   (non-orig k)
   (operation encryption-test (displaced 2 0 init 1) (enc a k) (1 0))
+  (strand-map 0 1)
   (traces ((send (enc a k)) (recv (enc a a k)))
     ((recv (enc a k)) (send (enc a a k))))
   (label 6)
@@ -139,6 +146,7 @@
   (precedes ((1 1) (0 1)) ((2 0) (1 0)))
   (non-orig k)
   (operation encryption-test (added-strand init 1) (enc a k) (1 0))
+  (strand-map 0 1)
   (traces ((send (enc a k)) (recv (enc a a k)))
     ((recv (enc a k)) (send (enc a a k))) ((send (enc a k))))
   (label 7)
diff --git a/tst/uniq-gen-test_shapes.tst b/tst/uniq-gen-test_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/uniq-gen-test_shapes.tst
@@ -0,0 +1,127 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Unique generation test protocols."
+  (comment "Skeletons 2, 4, and 7 should have no shapes."))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/uniq-gen-test.scm")
+
+(defprotocol uniqgentest basic
+  (defrole init
+    (vars (a name) (k skey))
+    (trace (send (enc a k)) (recv (enc a a k))))
+  (defrole doubler (vars (a name) (k skey)) (trace (send (enc a a k))))
+  (defrole resp
+    (vars (a name) (k skey))
+    (trace (recv (enc a k)) (send (enc a a k))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton uniqgentest
+  (vars (k skey) (a name))
+  (defstrand init 2 (k k) (a a))
+  (uniq-gen k)
+  (traces ((send (enc a k)) (recv (enc a a k))))
+  (label 0)
+  (unrealized (0 1))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton uniqgentest
+  (vars (k skey) (a name))
+  (defstrand init 2 (k k) (a a))
+  (defstrand resp 2 (k k) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (uniq-gen k)
+  (operation encryption-test (added-strand resp 2) (enc a a k) (0 1))
+  (traces ((send (enc a k)) (recv (enc a a k)))
+    ((recv (enc a k)) (send (enc a a k))))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((k k) (a a))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol uniqgentest basic
+  (defrole init
+    (vars (a name) (k skey))
+    (trace (send (enc a k)) (recv (enc a a k))))
+  (defrole doubler (vars (a name) (k skey)) (trace (send (enc a a k))))
+  (defrole resp
+    (vars (a name) (k skey))
+    (trace (recv (enc a k)) (send (enc a a k))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton uniqgentest
+  (vars (k skey) (a name))
+  (defstrand init 2 (k k) (a a))
+  (non-orig k)
+  (traces ((send (enc a k)) (recv (enc a a k))))
+  (label 3)
+  (unrealized (0 1))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton uniqgentest
+  (vars (k skey) (a name))
+  (defstrand init 2 (k k) (a a))
+  (defstrand doubler 1 (k k) (a a))
+  (precedes ((1 0) (0 1)))
+  (non-orig k)
+  (operation encryption-test (added-strand doubler 1) (enc a a k) (0 1))
+  (traces ((send (enc a k)) (recv (enc a a k))) ((send (enc a a k))))
+  (label 4)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((k k) (a a))))
+  (origs))
+
+(defskeleton uniqgentest
+  (vars (k skey) (a name))
+  (defstrand init 2 (k k) (a a))
+  (defstrand resp 2 (k k) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig k)
+  (operation encryption-test (displaced 2 0 init 1) (enc a k) (1 0))
+  (traces ((send (enc a k)) (recv (enc a a k)))
+    ((recv (enc a k)) (send (enc a a k))))
+  (label 6)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((k k) (a a))))
+  (origs))
+
+(defskeleton uniqgentest
+  (vars (k skey) (a name))
+  (defstrand init 2 (k k) (a a))
+  (defstrand resp 2 (k k) (a a))
+  (defstrand init 1 (k k) (a a))
+  (precedes ((1 1) (0 1)) ((2 0) (1 0)))
+  (non-orig k)
+  (operation encryption-test (added-strand init 1) (enc a k) (1 0))
+  (traces ((send (enc a k)) (recv (enc a a k)))
+    ((recv (enc a k)) (send (enc a a k))) ((send (enc a k))))
+  (label 7)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps ((0) ((k k) (a a))))
+  (origs))
+
+(comment "Nothing left to do")
diff --git a/tst/uo.tst b/tst/uo.tst
--- a/tst/uo.tst
+++ b/tst/uo.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/uo.scm")
 
 (defprotocol uniq-orig basic
diff --git a/tst/uo_shapes.tst b/tst/uo_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/uo_shapes.tst
@@ -0,0 +1,44 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/uo.scm")
+
+(defprotocol uniq-orig basic
+  (defrole init (vars (n text)) (trace (send n)) (uniq-orig n))
+  (defrole resp (vars (m n text)) (trace (send (enc m n)) (recv n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton uniq-orig
+  (vars (n m text))
+  (defstrand init 1 (n n))
+  (defstrand resp 2 (m m) (n n))
+  (uniq-orig n)
+  (traces ((send n)) ((send (enc m n)) (recv n)))
+  (label 0)
+  (unrealized (1 1))
+  (preskeleton)
+  (origs (n (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton uniq-orig
+  (vars (n m text))
+  (defstrand init 1 (n n))
+  (defstrand resp 2 (m m) (n n))
+  (precedes ((0 0) (1 1)))
+  (uniq-orig n)
+  (traces ((send n)) ((send (enc m n)) (recv n)))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((n n) (m m))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/updatetst b/tst/updatetst
deleted file mode 100644
--- a/tst/updatetst
+++ /dev/null
@@ -1,19 +0,0 @@
-#! /bin/sh
-
-for f in *.scm
-do
-  if test -f "$f"
-  then
-    b=`basename $f .scm`
-    mv "$b.txt" "$b.tst"
-  fi
-done
-
-for f in *.lsp
-do
-  if test -f "$f"
-  then
-    b=`basename $f .lsp`
-    mv "$b.txt" "$b.tst"
-  fi
-done
diff --git a/tst/wang-hash.tst b/tst/wang-hash.tst
--- a/tst/wang-hash.tst
+++ b/tst/wang-hash.tst
@@ -1,6 +1,6 @@
 (herald "Wang's Fair Exchange Protocol" (bound 10))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/wang-hash.scm")
 (comment "Strand count bounded at 10")
 
@@ -336,6 +336,7 @@
   (non-orig (privk "encr" t))
   (uniq-orig m k)
   (operation nonce-test (added-listener k) m (1 0) (enc m k))
+  (strand-map 0 1)
   (traces
     ((send
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -361,6 +362,7 @@
   (operation nonce-test (displaced 0 3 init1 3) k (2 0)
     (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
       (pubk "encr" t)))
+  (strand-map 2 0 1)
   (traces ((recv m) (send m)) ((recv k) (send k))
     ((send
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -391,6 +393,7 @@
   (operation nonce-test (added-strand ttp-rc1 3) k (2 0)
     (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
       (pubk "encr" t)))
+  (strand-map 0 1 2)
   (traces
     ((send
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -439,6 +442,7 @@
   (non-orig (privk "encr" t))
   (uniq-orig m k)
   (operation generalization deleted (1 0))
+  (strand-map 0 2)
   (traces ((recv m) (send m))
     ((send
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -468,6 +472,7 @@
   (non-orig (privk "encr" t))
   (uniq-orig m k)
   (operation generalization deleted (2 0))
+  (strand-map 0 1 3)
   (traces
     ((send
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -844,6 +849,7 @@
   (operation nonce-test (displaced 0 2 init1 3) k (1 0)
     (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
       (pubk "encr" t)))
+  (strand-map 1 0)
   (traces ((recv k) (send k))
     ((send
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -875,6 +881,7 @@
   (operation nonce-test (added-strand ttp-rc1 3) k (1 0)
     (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
       (pubk "encr" t)))
+  (strand-map 0 1)
   (traces
     ((send
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -1231,6 +1238,7 @@
     (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
       (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
         (pubk "encr" t)) (privk "sign" b)) (0 1))
+  (strand-map 0)
   (traces
     ((send
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -1274,6 +1282,7 @@
     (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
       (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
         (pubk "encr" t)) (privk "sign" b)) (0 1))
+  (strand-map 0)
   (traces
     ((send
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -1627,6 +1636,7 @@
     (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
       (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
         (pubk "encr" t)) (privk "sign" b)) (0 2))
+  (strand-map 0)
   (traces
     ((send
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -1672,6 +1682,7 @@
     (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
       (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
         (pubk "encr" t)) (privk "sign" b)) (0 2))
+  (strand-map 0)
   (traces
     ((send
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -2031,6 +2042,7 @@
     (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
       (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
         (pubk "encr" t)) (privk "sign" b)) (0 1))
+  (strand-map 0)
   (traces
     ((send
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -2080,6 +2092,7 @@
     (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
       (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
         (pubk "encr" t)) (privk "sign" b)) (0 1))
+  (strand-map 0)
   (traces
     ((send
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -2437,6 +2450,7 @@
     (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
       (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
         (pubk "encr" t)) (privk "sign" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -2797,6 +2811,7 @@
     (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
       (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
         (pubk "encr" t)) (privk "sign" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -3164,6 +3179,7 @@
     (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
       (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
         (pubk "encr" t)) (privk "sign" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -3223,6 +3239,7 @@
   (non-orig (privk "sign" a))
   (operation encryption-test (added-strand init3 2)
     (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -3297,6 +3314,7 @@
   (non-orig (privk "sign" a))
   (operation encryption-test (displaced 1 2 init3 2)
     (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -3364,6 +3382,7 @@
   (non-orig (privk "sign" a))
   (operation encryption-test (displaced 1 2 init5 3)
     (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -3436,6 +3455,7 @@
   (non-orig (privk "sign" a))
   (operation encryption-test (added-strand init5 3)
     (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
@@ -3816,6 +3836,7 @@
   (operation encryption-test (added-strand ttp-ab1 3)
     (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
       (privk "sign" t)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
@@ -3846,6 +3867,7 @@
   (operation encryption-test (added-strand ttp-rc2 3)
     (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
       (privk "sign" t)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
@@ -3889,6 +3911,7 @@
   (operation encryption-test (added-strand ttp-cf2 3)
     (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
       (privk "sign" t)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
@@ -4229,6 +4252,7 @@
   (non-orig (privk "encr" t) (privk "sign" a))
   (operation encryption-test (added-strand init3 2)
     (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
@@ -4265,6 +4289,7 @@
   (non-orig (privk "encr" t) (privk "sign" a))
   (operation encryption-test (added-strand init5 3)
     (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
@@ -4619,6 +4644,7 @@
     (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
       (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
         (pubk "encr" t)) (privk "sign" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (cat (cat a b t (hash (enc m k)) (hash k))
@@ -4663,6 +4689,7 @@
   (non-orig (privk "encr" t) (privk "sign" a))
   (operation encryption-test (added-strand init3 2)
     (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat (cat a b t (hash (enc m k)) (hash k))
@@ -4717,6 +4744,7 @@
   (non-orig (privk "encr" t) (privk "sign" a))
   (operation encryption-test (displaced 1 2 init3 2)
     (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat (cat a b t (hash (enc m k)) (hash k))
@@ -4764,6 +4792,7 @@
   (non-orig (privk "encr" t) (privk "sign" a))
   (operation encryption-test (displaced 1 2 init5 3)
     (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat (cat a b t (hash (enc m k)) (hash k))
@@ -4816,6 +4845,7 @@
   (non-orig (privk "encr" t) (privk "sign" a))
   (operation encryption-test (added-strand init5 3)
     (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat (cat a b t (hash (enc m k)) (hash k))
@@ -5188,6 +5218,7 @@
     (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
       (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
         (pubk "encr" t)) (privk "sign" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (cat (cat a b t (hash (enc m k)) (hash k))
@@ -5232,6 +5263,7 @@
   (non-orig (privk "encr" t) (privk "sign" a))
   (operation encryption-test (added-strand init3 2)
     (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat (cat a b t (hash (enc m k)) (hash k))
@@ -5286,6 +5318,7 @@
   (non-orig (privk "encr" t) (privk "sign" a))
   (operation encryption-test (displaced 1 2 init3 2)
     (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat (cat a b t (hash (enc m k)) (hash k))
@@ -5333,6 +5366,7 @@
   (non-orig (privk "encr" t) (privk "sign" a))
   (operation encryption-test (displaced 1 2 init5 3)
     (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat (cat a b t (hash (enc m k)) (hash k))
@@ -5385,6 +5419,7 @@
   (non-orig (privk "encr" t) (privk "sign" a))
   (operation encryption-test (added-strand init5 3)
     (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat (cat a b t (hash (enc m k)) (hash k))
diff --git a/tst/wang-hash_shapes.tst b/tst/wang-hash_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/wang-hash_shapes.tst
@@ -0,0 +1,5146 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Wang's Fair Exchange Protocol" (bound 10))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/wang-hash.scm")
+
+(comment "Strand count bounded at 10")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (hash e1) x) e1 e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash e1) x) e2 (privk "sign" b))))
+      (recv
+        (enc "abcf" (enc "abrq" a b t (hash e1) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (hash a b t y x) e (privk "sign" b))))
+      (send (enc "eortag" (hash a b t y x) e (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (enc (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init1 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (deflistener m)
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (comment "Experiment 1 to prove Lemma 4.1.")
+  (traces
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))) ((recv m) (send m)))
+  (label 0)
+  (unrealized (1 0))
+  (preskeleton)
+  (origs (m (0 0)) (k (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (deflistener m)
+  (defstrand init1 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (operation generalization deleted (1 0))
+  (traces ((recv m) (send m))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (send (cat k r))))
+  (label 5)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((1 0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs (m (1 0)) (k (1 0))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init1 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (deflistener m)
+  (defstrand ttp-rc1 3 (y (hash (enc m k))) (k k) (r r) (a a) (b b)
+    (t t))
+  (precedes ((0 0) (2 0)) ((2 2) (1 0)))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (operation generalization deleted (2 0))
+  (traces
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))) ((recv m) (send m))
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k))
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (label 6)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs (m (0 0)) (k (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (hash e1) x) e1 e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash e1) x) e2 (privk "sign" b))))
+      (recv
+        (enc "abcf" (enc "abrq" a b t (hash e1) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (hash a b t y x) e (privk "sign" b))))
+      (send (enc "eortag" (hash a b t y x) e (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (enc (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init1 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (deflistener k)
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (comment "Experiment 2 to prove Lemma 4.1.")
+  (traces
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))) ((recv k) (send k)))
+  (label 7)
+  (unrealized (1 0))
+  (preskeleton)
+  (origs (m (0 0)) (k (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (deflistener k)
+  (defstrand init1 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (operation nonce-test (displaced 0 2 init1 3) k (1 0)
+    (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+      (pubk "encr" t)))
+  (traces ((recv k) (send k))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (send (cat k r))))
+  (label 9)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((1 0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs (m (1 0)) (k (1 0))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init1 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (deflistener k)
+  (defstrand ttp-rc1 3 (y (hash (enc m k))) (k k) (r r) (a a) (b b)
+    (t t))
+  (precedes ((0 0) (2 0)) ((2 2) (1 0)))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (operation nonce-test (added-strand ttp-rc1 3) k (1 0)
+    (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+      (pubk "encr" t)))
+  (traces
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))) ((recv k) (send k))
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k))
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (label 10)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((0 1) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs (m (0 0)) (k (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (hash e1) x) e1 e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash e1) x) e2 (privk "sign" b))))
+      (recv
+        (enc "abcf" (enc "abrq" a b t (hash e1) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (hash a b t y x) e (privk "sign" b))))
+      (send (enc "eortag" (hash a b t y x) e (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (enc (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init1 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (non-orig (privk "sign" b))
+  (comment "First of three experiments to prove Lemma 4.2, clause 1.")
+  (traces
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (send (cat k r))))
+  (label 11)
+  (unrealized (0 1))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init1 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand resp1 2 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp1 2)
+    (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+      (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+        (pubk "encr" t)) (privk "sign" b)) (0 1))
+  (traces
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (send (cat k r)))
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (label 12)
+  (parent 11)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init1 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand resp3 2 (e1 (enc m k))
+    (e2
+      (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+        (pubk "encr" t))) (x (hash k)) (a a) (b b) (t t))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp3 2)
+    (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+      (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+        (pubk "encr" t)) (privk "sign" b)) (0 1))
+  (traces
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (send (cat k r)))
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))))
+  (label 13)
+  (parent 11)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (hash e1) x) e1 e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash e1) x) e2 (privk "sign" b))))
+      (recv
+        (enc "abcf" (enc "abrq" a b t (hash e1) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (hash a b t y x) e (privk "sign" b))))
+      (send (enc "eortag" (hash a b t y x) e (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (enc (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init3 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (non-orig (privk "sign" b))
+  (comment "Second of three experiments to prove Lemma 4.2, clause 1.")
+  (traces
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (label 14)
+  (unrealized (0 2))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init3 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand resp1 2 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 1) (0 2)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp1 2)
+    (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+      (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+        (pubk "encr" t)) (privk "sign" b)) (0 2))
+  (traces
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))))
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (label 15)
+  (parent 14)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init3 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand resp3 2 (e1 (enc m k))
+    (e2
+      (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+        (pubk "encr" t))) (x (hash k)) (a a) (b b) (t t))
+  (precedes ((1 1) (0 2)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp3 2)
+    (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+      (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+        (pubk "encr" t)) (privk "sign" b)) (0 2))
+  (traces
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))))
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))))
+  (label 16)
+  (parent 14)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (hash e1) x) e1 e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash e1) x) e2 (privk "sign" b))))
+      (recv
+        (enc "abcf" (enc "abrq" a b t (hash e1) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (hash a b t y x) e (privk "sign" b))))
+      (send (enc "eortag" (hash a b t y x) e (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (enc (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init5 4 (m m) (k k) (r r) (a a) (b b) (t t))
+  (non-orig (privk "sign" b))
+  (comment "Third of three experiments to prove Lemma 4.2, clause 1.")
+  (traces
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (label 17)
+  (unrealized (0 1) (0 3))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init5 4 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand resp1 2 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp1 2)
+    (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+      (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+        (pubk "encr" t)) (privk "sign" b)) (0 1))
+  (traces
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))))
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (label 18)
+  (parent 17)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init5 4 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand resp3 2 (e1 (enc m k))
+    (e2
+      (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+        (pubk "encr" t))) (x (hash k)) (a a) (b b) (t t))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp3 2)
+    (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+      (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+        (pubk "encr" t)) (privk "sign" b)) (0 1))
+  (traces
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))))
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))))
+  (label 19)
+  (parent 17)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (hash e1) x) e1 e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash e1) x) e2 (privk "sign" b))))
+      (recv
+        (enc "abcf" (enc "abrq" a b t (hash e1) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (hash a b t y x) e (privk "sign" b))))
+      (send (enc "eortag" (hash a b t y x) e (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (enc (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a t b name))
+  (defstrand resp1 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (non-orig (privk "sign" a))
+  (comment "First of two experiments to prove Lemma 4.2, clause 2.")
+  (traces
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (recv (cat k r))))
+  (label 20)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a t b name))
+  (defstrand resp1 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand init5 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (added-strand init5 1)
+    (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+      (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+        (pubk "encr" t)) (privk "sign" a)) (0 0))
+  (traces
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (recv (cat k r)))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))))
+  (label 21)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (t t) (m m) (r r) (k k) (b b))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (hash e1) x) e1 e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash e1) x) e2 (privk "sign" b))))
+      (recv
+        (enc "abcf" (enc "abrq" a b t (hash e1) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (hash a b t y x) e (privk "sign" b))))
+      (send (enc "eortag" (hash a b t y x) e (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (enc (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a t b name))
+  (defstrand resp2 4 (m m) (k k) (r r) (a a) (b b) (t t))
+  (non-orig (privk "sign" a))
+  (comment "Second of two experiments to prove Lemma 4.2, clause 2.")
+  (traces
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b)))) (recv (cat k r))))
+  (label 22)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a t b name))
+  (defstrand resp2 4 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand init5 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (added-strand init5 1)
+    (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+      (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+        (pubk "encr" t)) (privk "sign" a)) (0 0))
+  (traces
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b)))) (recv (cat k r)))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))))
+  (label 23)
+  (parent 22)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (t t) (m m) (r r) (k k) (b b))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (hash e1) x) e1 e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash e1) x) e2 (privk "sign" b))))
+      (recv
+        (enc "abcf" (enc "abrq" a b t (hash e1) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (hash a b t y x) e (privk "sign" b))))
+      (send (enc "eortag" (hash a b t y x) e (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (enc (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (e1 e2 x mesg) (a t b name))
+  (defstrand resp3 4 (e1 e1) (e2 e2) (x x) (a a) (b b) (t t))
+  (non-orig (privk "sign" a))
+  (comment "Experiments to prove Lemma 4.2, clause 3.")
+  (traces
+    ((recv
+       (cat (cat a b t (hash e1) x) e1 e2
+         (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash e1) x) e2 (privk "sign" b))))
+      (recv
+        (enc "abcf" (enc "abrq" a b t (hash e1) x (privk "sign" a))
+          (privk "sign" t)))))
+  (label 24)
+  (unrealized (0 0) (0 3))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r r-0 text) (a t b name))
+  (defstrand resp3 4 (e1 (enc m k))
+    (e2
+      (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+        (pubk "encr" t))) (x (hash k)) (a a) (b b) (t t))
+  (defstrand init5 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand init3 2 (m m) (k k) (r r-0) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((2 1) (0 3)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (added-strand init3 2)
+    (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 3))
+  (traces
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a)))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r-0
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r-0
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))))
+  (label 26)
+  (parent 24)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (t t) (b b) (e1 (enc m k))
+        (e2
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))) (x (hash k)))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a t b name))
+  (defstrand resp3 4 (e1 (enc m k))
+    (e2
+      (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+        (pubk "encr" t))) (x (hash k)) (a a) (b b) (t t))
+  (defstrand init3 2 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((1 1) (0 3)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init3 2)
+    (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 3))
+  (traces
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))))
+  (label 27)
+  (parent 24)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (t t) (b b) (e1 (enc m k))
+        (e2
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))) (x (hash k)))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a t b name))
+  (defstrand resp3 4 (e1 (enc m k))
+    (e2
+      (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+        (pubk "encr" t))) (x (hash k)) (a a) (b b) (t t))
+  (defstrand init5 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((1 2) (0 3)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init5 3)
+    (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 3))
+  (traces
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))))
+  (label 28)
+  (parent 24)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (t t) (b b) (e1 (enc m k))
+        (e2
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))) (x (hash k)))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r r-0 text) (a t b name))
+  (defstrand resp3 4 (e1 (enc m k))
+    (e2
+      (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+        (pubk "encr" t))) (x (hash k)) (a a) (b b) (t t))
+  (defstrand init5 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand init5 3 (m m) (k k) (r r-0) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((2 2) (0 3)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (added-strand init5 3)
+    (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 3))
+  (traces
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a)))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r-0
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r-0
+             (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r-0
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))))
+  (label 29)
+  (parent 24)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (t t) (b b) (e1 (enc m k))
+        (e2
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))) (x (hash k)))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (hash e1) x) e1 e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash e1) x) e2 (privk "sign" b))))
+      (recv
+        (enc "abcf" (enc "abrq" a b t (hash e1) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (hash a b t y x) e (privk "sign" b))))
+      (send (enc "eortag" (hash a b t y x) e (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (enc (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (y x mesg) (a b t name))
+  (deflistener
+    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+      (privk "sign" t)))
+  (non-orig (privk "sign" t))
+  (comment "Experiments to prove Lemma 4.3, clause 1.")
+  (traces
+    ((recv
+       (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+         (privk "sign" t)))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (label 30)
+  (unrealized (0 0))
+  (origs)
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton wang
+  (vars (y x mesg) (a b t name))
+  (deflistener
+    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+      (privk "sign" t)))
+  (defstrand ttp-ab1 3 (y y) (x x) (a a) (b b) (t t))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sign" t))
+  (operation encryption-test (added-strand ttp-ab1 3)
+    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+      (privk "sign" t)) (0 0))
+  (traces
+    ((recv
+       (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+         (privk "sign" t)))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t))))
+    ((recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (label 31)
+  (parent 30)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (y y) (x x))))
+  (origs))
+
+(defskeleton wang
+  (vars (y mesg) (k skey) (r text) (a b t name))
+  (deflistener
+    (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+      (privk "sign" t)))
+  (defstrand ttp-rc2 3 (y y) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sign" t))
+  (operation encryption-test (added-strand ttp-rc2 3)
+    (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+      (privk "sign" t)) (0 0))
+  (traces
+    ((recv
+       (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+         (privk "sign" t)))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t))))
+    ((recv
+       (cat (cat a b t y (hash k))
+         (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+         (enc "eootag" (hash a b t y (hash k))
+           (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag" (hash a b t y (hash k))
+           (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq" (cat a b t y (hash k))
+           (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (label 32)
+  (parent 30)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (y y) (x (hash k)))))
+  (origs))
+
+(defskeleton wang
+  (vars (y mesg) (k skey) (r text) (a b t name))
+  (deflistener
+    (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+      (privk "sign" t)))
+  (defstrand ttp-cf2 3 (y y) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sign" t))
+  (operation encryption-test (added-strand ttp-cf2 3)
+    (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+      (privk "sign" t)) (0 0))
+  (traces
+    ((recv
+       (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+         (privk "sign" t)))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t))))
+    ((recv
+       (cat (cat a b t y (hash k))
+         (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+         (enc "eootag" (hash a b t y (hash k))
+           (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag" (hash a b t y (hash k))
+           (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "cfrq" (cat a b t y (hash k))
+           (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (label 33)
+  (parent 30)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (y y) (x (hash k)))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (hash e1) x) e1 e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash e1) x) e2 (privk "sign" b))))
+      (recv
+        (enc "abcf" (enc "abrq" a b t (hash e1) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (hash a b t y x) e (privk "sign" b))))
+      (send (enc "eortag" (hash a b t y x) e (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (enc (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (y x mesg) (a b t name))
+  (defstrand ttp-ab1 3 (y y) (x x) (a a) (b b) (t t))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (comment "Experiment 1 to prove Lemma 4.3, clause 2.")
+  (traces
+    ((recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (label 34)
+  (unrealized (0 0))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a b t name))
+  (defstrand ttp-ab1 3 (y (hash (enc m k))) (x (hash k)) (a a) (b b)
+    (t t))
+  (defstrand init3 2 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 1) (0 0)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init3 2)
+    (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 0))
+  (traces
+    ((recv
+       (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (send
+        (cat "sync-abrq"
+          (enc "abrq" a b t (hash (enc m k)) (hash k)
+            (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))))
+  (label 35)
+  (parent 34)
+  (realized)
+  (shape)
+  (maps ((0) ((y (hash (enc m k))) (x (hash k)) (a a) (b b) (t t))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a b t name))
+  (defstrand ttp-ab1 3 (y (hash (enc m k))) (x (hash k)) (a a) (b b)
+    (t t))
+  (defstrand init5 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init5 3)
+    (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 0))
+  (traces
+    ((recv
+       (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (send
+        (cat "sync-abrq"
+          (enc "abrq" a b t (hash (enc m k)) (hash k)
+            (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))))
+  (label 36)
+  (parent 34)
+  (realized)
+  (shape)
+  (maps ((0) ((y (hash (enc m k))) (x (hash k)) (a a) (b b) (t t))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (hash e1) x) e1 e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash e1) x) e2 (privk "sign" b))))
+      (recv
+        (enc "abcf" (enc "abrq" a b t (hash e1) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (hash a b t y x) e (privk "sign" b))))
+      (send (enc "eortag" (hash a b t y x) e (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (enc (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (y mesg) (k skey) (r text) (a b t name))
+  (defstrand ttp-rc2 3 (y y) (k k) (r r) (a a) (b b) (t t))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (comment "Experiment 2 to prove Lemma 4.3, clause 2.")
+  (traces
+    ((recv
+       (cat (cat a b t y (hash k))
+         (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+         (enc "eootag" (hash a b t y (hash k))
+           (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag" (hash a b t y (hash k))
+           (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq" (cat a b t y (hash k))
+           (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (label 37)
+  (unrealized (0 0) (0 1))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r r-0 text) (a b t name))
+  (defstrand ttp-rc2 3 (y (hash (enc m k))) (k k) (r r) (a a) (b b)
+    (t t))
+  (defstrand init5 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand init3 2 (m m) (k k) (r r-0) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((2 1) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init3 2)
+    (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k))
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t (hash (enc m k)) (hash k)
+            (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a)))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r-0
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r-0
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))))
+  (label 39)
+  (parent 37)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (r r) (k k) (y (hash (enc m k))))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a b t name))
+  (defstrand ttp-rc2 3 (y (hash (enc m k))) (k k) (r r) (a a) (b b)
+    (t t))
+  (defstrand init3 2 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((1 1) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init3 2)
+    (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k))
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t (hash (enc m k)) (hash k)
+            (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))))
+  (label 40)
+  (parent 37)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (r r) (k k) (y (hash (enc m k))))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a b t name))
+  (defstrand ttp-rc2 3 (y (hash (enc m k))) (k k) (r r) (a a) (b b)
+    (t t))
+  (defstrand init5 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((1 2) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init5 3)
+    (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k))
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t (hash (enc m k)) (hash k)
+            (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))))
+  (label 41)
+  (parent 37)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (r r) (k k) (y (hash (enc m k))))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r r-0 text) (a b t name))
+  (defstrand ttp-rc2 3 (y (hash (enc m k))) (k k) (r r) (a a) (b b)
+    (t t))
+  (defstrand init5 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand init5 3 (m m) (k k) (r r-0) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((2 2) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init5 3)
+    (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k))
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t (hash (enc m k)) (hash k)
+            (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a)))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r-0
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r-0
+             (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r-0
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))))
+  (label 42)
+  (parent 37)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (r r) (k k) (y (hash (enc m k))))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t))
+          (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash (enc m k)) (hash k))
+            (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+              (pubk "encr" t)) (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (hash e1) x) e1 e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))))
+      (send
+        (cat (cat a b t (hash e1) x) e2
+          (enc "eootag" (hash a b t (hash e1) x) e2 (privk "sign" a))
+          (enc "eortag" (hash a b t (hash e1) x) e2 (privk "sign" b))
+          (enc "rcrq" (cat a b t (hash e1) x) e2 (privk "sign" b))))
+      (recv
+        (enc "abcf" (enc "abrq" a b t (hash e1) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (hash a b t y x) e (privk "sign" b))))
+      (send (enc "eortag" (hash a b t y x) e (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (enc (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (hash k))
+          (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+          (enc "eootag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag" (hash a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "cfrq" (cat a b t y (hash k))
+            (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (y mesg) (k skey) (r text) (a b t name))
+  (defstrand ttp-cf2 3 (y y) (k k) (r r) (a a) (b b) (t t))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (comment "Experiment 3 to prove Lemma 4.3, clause 2.")
+  (traces
+    ((recv
+       (cat (cat a b t y (hash k))
+         (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+         (enc "eootag" (hash a b t y (hash k))
+           (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag" (hash a b t y (hash k))
+           (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "cfrq" (cat a b t y (hash k))
+           (enc "keytag" (hash a b t y (hash k)) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (hash k) (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y (hash k) (privk "sign" a))
+          (privk "sign" t)))))
+  (label 43)
+  (unrealized (0 0) (0 1))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r r-0 text) (a b t name))
+  (defstrand ttp-cf2 3 (y (hash (enc m k))) (k k) (r r) (a a) (b b)
+    (t t))
+  (defstrand init5 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand init3 2 (m m) (k k) (r r-0) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((2 1) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init3 2)
+    (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k))
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "cfrq" (cat a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t (hash (enc m k)) (hash k)
+            (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a)))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r-0
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r-0
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))))
+  (label 45)
+  (parent 43)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (r r) (k k) (y (hash (enc m k))))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a b t name))
+  (defstrand ttp-cf2 3 (y (hash (enc m k))) (k k) (r r) (a a) (b b)
+    (t t))
+  (defstrand init3 2 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((1 1) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init3 2)
+    (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k))
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "cfrq" (cat a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t (hash (enc m k)) (hash k)
+            (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))))
+  (label 46)
+  (parent 43)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (r r) (k k) (y (hash (enc m k))))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a b t name))
+  (defstrand ttp-cf2 3 (y (hash (enc m k))) (k k) (r r) (a a) (b b)
+    (t t))
+  (defstrand init5 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((1 2) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init5 3)
+    (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k))
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "cfrq" (cat a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t (hash (enc m k)) (hash k)
+            (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))))
+  (label 47)
+  (parent 43)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (r r) (k k) (y (hash (enc m k))))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r r-0 text) (a b t name))
+  (defstrand ttp-cf2 3 (y (hash (enc m k))) (k k) (r r) (a a) (b b)
+    (t t))
+  (defstrand init5 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand init5 3 (m m) (k k) (r r-0) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((2 2) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init5 3)
+    (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat (cat a b t (hash (enc m k)) (hash k))
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "cfrq" (cat a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t (hash (enc m k)) (hash k)
+            (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a))
+          (privk "sign" t))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r
+             (pubk "encr" t)) (privk "sign" a)))))
+    ((send
+       (cat (cat a b t (hash (enc m k)) (hash k)) (enc m k)
+         (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r-0
+           (pubk "encr" t))
+         (enc "eootag" (hash a b t (hash (enc m k)) (hash k))
+           (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r-0
+             (pubk "encr" t)) (privk "sign" a))))
+      (recv
+        (enc "eortag" (hash a b t (hash (enc m k)) (hash k))
+          (enc "keytag" (hash a b t (hash (enc m k)) (hash k)) k r-0
+            (pubk "encr" t)) (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (hash (enc m k)) (hash k) (privk "sign" a)))))
+  (label 48)
+  (parent 43)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (r r) (k k) (y (hash (enc m k))))))
+  (origs))
+
+(comment "Nothing left to do")
diff --git a/tst/wang-key-hash-tst.tst b/tst/wang-key-hash-tst.tst
deleted file mode 100644
--- a/tst/wang-key-hash-tst.tst
+++ /dev/null
@@ -1,19236 +0,0 @@
-(herald "Wang's Fair Exchange Protocol" (bound 10))
-
-(comment "CPSA 4.3.0")
-(comment "All input read from tst/wang-key-hash-tst.scm")
-(comment "Strand count bounded at 10")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (deflistener m)
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (comment "Experiment 1 to prove Lemma 4.1.")
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))) ((recv m) (send m)))
-  (label 0)
-  (unrealized (1 0))
-  (preskeleton)
-  (origs (m (0 0)) (k (0 0)))
-  (comment "Not a skeleton"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (deflistener m)
-  (precedes ((0 0) (1 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))) ((recv m) (send m)))
-  (label 1)
-  (parent 0)
-  (unrealized (1 0))
-  (origs (m (0 0)) (k (0 0)))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (deflistener m)
-  (deflistener k)
-  (precedes ((0 0) (2 0)) ((2 1) (1 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (operation nonce-test (added-listener k) m (1 0) (enc m k))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))) ((recv m) (send m)) ((recv k) (send k)))
-  (label 2)
-  (parent 1)
-  (unrealized (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (deflistener m)
-  (deflistener k)
-  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 1) (0 0)) ((2 2) (1 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (operation nonce-test (displaced 0 3 init1 3) k (2 0)
-    (enc "keytag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-  (traces ((recv m) (send m)) ((recv k) (send k))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (label 3)
-  (parent 2)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (deflistener m)
-  (deflistener k)
-  (defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (precedes ((0 0) (3 0)) ((2 1) (1 0)) ((3 2) (2 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (operation nonce-test (added-strand ttp-rc1 3) k (2 0)
-    (enc "keytag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))) ((recv m) (send m)) ((recv k) (send k))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "rcrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (send
-        (cat "sync-rc-req"
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (send (cat k r))))
-  (label 4)
-  (parent 2)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (deflistener m)
-  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 2) (0 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (operation generalization deleted (1 0))
-  (traces ((recv m) (send m))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (label 5)
-  (parent 3)
-  (realized)
-  (shape)
-  (maps ((1 0) ((b b) (t t) (m m) (r r) (k k) (a a))))
-  (origs (m (1 0)) (k (1 0))))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (deflistener m)
-  (defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (precedes ((0 0) (2 0)) ((2 2) (1 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))) ((recv m) (send m))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "rcrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (send
-        (cat "sync-rc-req"
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (send (cat k r))))
-  (label 6)
-  (parent 4)
-  (realized)
-  (shape)
-  (maps ((0 1) ((b b) (t t) (m m) (r r) (k k) (a a))))
-  (origs (m (0 0)) (k (0 0))))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (deflistener k)
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (comment "Experiment 2 to prove Lemma 4.1.")
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))) ((recv k) (send k)))
-  (label 7)
-  (unrealized (1 0))
-  (preskeleton)
-  (origs (m (0 0)) (k (0 0)))
-  (comment "Not a skeleton"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (deflistener k)
-  (precedes ((0 0) (1 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))) ((recv k) (send k)))
-  (label 8)
-  (parent 7)
-  (unrealized (1 0))
-  (origs (m (0 0)) (k (0 0)))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (deflistener k)
-  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 2) (0 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (operation nonce-test (displaced 0 2 init1 3) k (1 0)
-    (enc "keytag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-  (traces ((recv k) (send k))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (label 9)
-  (parent 8)
-  (realized)
-  (shape)
-  (maps ((1 0) ((b b) (t t) (m m) (r r) (k k) (a a))))
-  (origs (m (1 0)) (k (1 0))))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (deflistener k)
-  (defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (precedes ((0 0) (2 0)) ((2 2) (1 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (operation nonce-test (added-strand ttp-rc1 3) k (1 0)
-    (enc "keytag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))) ((recv k) (send k))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "rcrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (send
-        (cat "sync-rc-req"
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (send (cat k r))))
-  (label 10)
-  (parent 8)
-  (realized)
-  (shape)
-  (maps ((0 1) ((b b) (t t) (m m) (r r) (k k) (a a))))
-  (origs (m (0 0)) (k (0 0))))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (non-orig (privk "sign" b))
-  (comment "First of three experiments to prove Lemma 4.2, clause 1.")
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (label 11)
-  (unrealized (0 1))
-  (origs)
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 1) (0 1)))
-  (non-orig (privk "sign" b))
-  (operation encryption-test (added-strand resp1 2)
-    (enc "eortag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" b)) (0 1))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r)))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (label 12)
-  (parent 11)
-  (realized)
-  (shape)
-  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand resp3 2 (e1 (enc m k))
-    (e2
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (precedes ((1 1) (0 1)))
-  (non-orig (privk "sign" b))
-  (operation encryption-test (added-strand resp3 2)
-    (enc "eortag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" b)) (0 1))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r)))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))))
-  (label 13)
-  (parent 11)
-  (realized)
-  (shape)
-  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (non-orig (privk "sign" b))
-  (comment "Second of three experiments to prove Lemma 4.2, clause 1.")
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (label 14)
-  (unrealized (0 2))
-  (origs)
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 1) (0 2)))
-  (non-orig (privk "sign" b))
-  (operation encryption-test (added-strand resp1 2)
-    (enc "eortag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" b)) (0 2))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (label 15)
-  (parent 14)
-  (realized)
-  (shape)
-  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand resp3 2 (e1 (enc m k))
-    (e2
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (precedes ((1 1) (0 2)))
-  (non-orig (privk "sign" b))
-  (operation encryption-test (added-strand resp3 2)
-    (enc "eortag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" b)) (0 2))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))))
-  (label 16)
-  (parent 14)
-  (realized)
-  (shape)
-  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
-  (non-orig (privk "sign" b))
-  (comment "Third of three experiments to prove Lemma 4.2, clause 1.")
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (label 17)
-  (unrealized (0 1) (0 3))
-  (origs)
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 1) (0 1)))
-  (non-orig (privk "sign" b))
-  (operation encryption-test (added-strand resp1 2)
-    (enc "eortag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" b)) (0 1))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (label 18)
-  (parent 17)
-  (realized)
-  (shape)
-  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand resp3 2 (e1 (enc m k))
-    (e2
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (precedes ((1 1) (0 1)))
-  (non-orig (privk "sign" b))
-  (operation encryption-test (added-strand resp3 2)
-    (enc "eortag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" b)) (0 1))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))))
-  (label 19)
-  (parent 17)
-  (realized)
-  (shape)
-  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (r text) (m data) (a t b name) (k skey))
-  (defstrand resp1 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (non-orig (privk "sign" a))
-  (comment "First of two experiments to prove Lemma 4.2, clause 2.")
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (label 20)
-  (unrealized (0 0))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (a t b name) (k skey))
-  (defstrand resp1 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk "sign" a))
-  (operation encryption-test (added-strand init5 1)
-    (enc "eootag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" a)) (0 0))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r)))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))))
-  (label 21)
-  (parent 20)
-  (realized)
-  (shape)
-  (maps ((0) ((a a) (t t) (m m) (r r) (k k) (b b))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (r text) (m data) (a t b name) (k skey))
-  (defstrand resp2 4 (r r) (m m) (a a) (b b) (t t) (k k))
-  (non-orig (privk "sign" a))
-  (comment "Second of two experiments to prove Lemma 4.2, clause 2.")
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (label 22)
-  (unrealized (0 0))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (a t b name) (k skey))
-  (defstrand resp2 4 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk "sign" a))
-  (operation encryption-test (added-strand init5 1)
-    (enc "eootag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" a)) (0 0))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r)))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))))
-  (label 23)
-  (parent 22)
-  (realized)
-  (shape)
-  (maps ((0) ((a a) (t t) (m m) (r r) (k k) (b b))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (e1 e2 x mesg) (a t b name))
-  (defstrand resp3 4 (e1 e1) (e2 e2) (x x) (a a) (b b) (t t))
-  (non-orig (privk "sign" a))
-  (comment "Experiments to prove Lemma 4.2, clause 3.")
-  (traces
-    ((recv
-       (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-         (enc "eootag"
-           (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-           (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (label 24)
-  (unrealized (0 0) (0 3))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (a t b name) (k skey))
-  (defstrand resp3 4 (e1 (enc m k))
-    (e2
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk "sign" a))
-  (operation encryption-test (added-strand init5 1)
-    (enc "eootag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" a)) (0 0))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))))
-  (label 25)
-  (parent 24)
-  (unrealized (0 3))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton wang
-  (vars (r r-0 text) (m data) (a t b name) (k skey))
-  (defstrand resp3 4 (e1 (enc m k))
-    (e2
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand init3 2 (r r-0) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((2 1) (0 3)))
-  (non-orig (privk "sign" a))
-  (operation encryption-test (added-strand init3 2)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a)))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 26)
-  (parent 25)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (t t) (b b) (e1 (enc m k))
-        (e2
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-        (x (enc "h" (cat "h" k))))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (a t b name) (k skey))
-  (defstrand resp3 4 (e1 (enc m k))
-    (e2
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((1 1) (0 3)))
-  (non-orig (privk "sign" a))
-  (operation encryption-test (displaced 1 2 init3 2)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 27)
-  (parent 25)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (t t) (b b) (e1 (enc m k))
-        (e2
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-        (x (enc "h" (cat "h" k))))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (a t b name) (k skey))
-  (defstrand resp3 4 (e1 (enc m k))
-    (e2
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((1 2) (0 3)))
-  (non-orig (privk "sign" a))
-  (operation encryption-test (displaced 1 2 init5 3)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 28)
-  (parent 25)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (t t) (b b) (e1 (enc m k))
-        (e2
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-        (x (enc "h" (cat "h" k))))))
-  (origs))
-
-(defskeleton wang
-  (vars (r r-0 text) (m data) (a t b name) (k skey))
-  (defstrand resp3 4 (e1 (enc m k))
-    (e2
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand init5 3 (r r-0) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((2 2) (0 3)))
-  (non-orig (privk "sign" a))
-  (operation encryption-test (added-strand init5 3)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a)))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 29)
-  (parent 25)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (t t) (b b) (e1 (enc m k))
-        (e2
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-        (x (enc "h" (cat "h" k))))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (y x mesg) (a b t name))
-  (deflistener
-    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-      (privk "sign" t)))
-  (non-orig (privk "sign" t))
-  (comment "Experiments to prove Lemma 4.3, clause 1.")
-  (traces
-    ((recv
-       (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-         (privk "sign" t)))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (label 30)
-  (unrealized (0 0))
-  (origs)
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton wang
-  (vars (y x mesg) (a b t name))
-  (deflistener
-    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-      (privk "sign" t)))
-  (defstrand ttp-ab1 3 (y y) (x x) (a a) (b b) (t t))
-  (precedes ((1 2) (0 0)))
-  (non-orig (privk "sign" t))
-  (operation encryption-test (added-strand ttp-ab1 3)
-    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-      (privk "sign" t)) (0 0))
-  (traces
-    ((recv
-       (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-         (privk "sign" t)))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t))))
-    ((recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (label 31)
-  (parent 30)
-  (realized)
-  (shape)
-  (maps ((0) ((a a) (b b) (t t) (y y) (x x))))
-  (origs))
-
-(defskeleton wang
-  (vars (y mesg) (r text) (a b t name) (k skey))
-  (deflistener
-    (enc "abcf"
-      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-      (privk "sign" t)))
-  (defstrand ttp-rc2 3 (y y) (r r) (a a) (b b) (t t) (k k))
-  (precedes ((1 2) (0 0)))
-  (non-orig (privk "sign" t))
-  (operation encryption-test (added-strand ttp-rc2 3)
-    (enc "abcf"
-      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-      (privk "sign" t)) (0 0))
-  (traces
-    ((recv
-       (enc "abcf"
-         (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-         (privk "sign" t)))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t))))
-    ((recv
-       (cat (cat a b t y (enc "h" (cat "h" k)))
-         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           k r (pubk "encr" t))
-         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" a))
-         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" b))
-         (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (label 32)
-  (parent 30)
-  (realized)
-  (shape)
-  (maps ((0) ((a a) (b b) (t t) (y y) (x (enc "h" (cat "h" k))))))
-  (origs))
-
-(defskeleton wang
-  (vars (y mesg) (r text) (a b t name) (k skey))
-  (deflistener
-    (enc "abcf"
-      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-      (privk "sign" t)))
-  (defstrand ttp-cf2 3 (y y) (r r) (a a) (b b) (t t) (k k))
-  (precedes ((1 2) (0 0)))
-  (non-orig (privk "sign" t))
-  (operation encryption-test (added-strand ttp-cf2 3)
-    (enc "abcf"
-      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-      (privk "sign" t)) (0 0))
-  (traces
-    ((recv
-       (enc "abcf"
-         (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-         (privk "sign" t)))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t))))
-    ((recv
-       (cat (cat a b t y (enc "h" (cat "h" k)))
-         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           k r (pubk "encr" t))
-         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" a))
-         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" b))
-         (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (label 33)
-  (parent 30)
-  (realized)
-  (shape)
-  (maps ((0) ((a a) (b b) (t t) (y y) (x (enc "h" (cat "h" k))))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (y x mesg) (a b t name))
-  (defstrand ttp-ab1 3 (y y) (x x) (a a) (b b) (t t))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (comment "Experiment 1 to prove Lemma 4.3, clause 2.")
-  (traces
-    ((recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (label 34)
-  (unrealized (0 0))
-  (origs)
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (a b t name) (k skey))
-  (defstrand ttp-ab1 3 (y (enc "h" (cat "h" (enc m k))))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 1) (0 0)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (added-strand init3 2)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 0))
-  (traces
-    ((recv
-       (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-         (enc "h" (cat "h" k)) (privk "sign" a)))
-      (send
-        (cat "sync-abrq"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 35)
-  (parent 34)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((y (enc "h" (cat "h" (enc m k)))) (x (enc "h" (cat "h" k))) (a a)
-        (b b) (t t))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (a b t name) (k skey))
-  (defstrand ttp-ab1 3 (y (enc "h" (cat "h" (enc m k))))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 2) (0 0)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (added-strand init5 3)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 0))
-  (traces
-    ((recv
-       (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-         (enc "h" (cat "h" k)) (privk "sign" a)))
-      (send
-        (cat "sync-abrq"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 36)
-  (parent 34)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((y (enc "h" (cat "h" (enc m k)))) (x (enc "h" (cat "h" k))) (a a)
-        (b b) (t t))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (y mesg) (r text) (a b t name) (k skey))
-  (defstrand ttp-rc2 3 (y y) (r r) (a a) (b b) (t t) (k k))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (comment "Experiment 2 to prove Lemma 4.3, clause 2.")
-  (traces
-    ((recv
-       (cat (cat a b t y (enc "h" (cat "h" k)))
-         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           k r (pubk "encr" t))
-         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" a))
-         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" b))
-         (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (label 37)
-  (unrealized (0 0) (0 1))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (a b t name) (k skey))
-  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (added-strand init5 1)
-    (enc "eootag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" a)) (0 0))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "rcrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))))
-  (label 38)
-  (parent 37)
-  (unrealized (0 1))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton wang
-  (vars (r r-0 text) (m data) (a b t name) (k skey))
-  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand init3 2 (r r-0) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((2 1) (0 1)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (added-strand init3 2)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "rcrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a)))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 39)
-  (parent 38)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (t t) (r r) (k k)
-        (y (enc "h" (cat "h" (enc m k)))))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (a b t name) (k skey))
-  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((1 1) (0 1)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (displaced 1 2 init3 2)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "rcrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 40)
-  (parent 38)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (t t) (r r) (k k)
-        (y (enc "h" (cat "h" (enc m k)))))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (a b t name) (k skey))
-  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((1 2) (0 1)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (displaced 1 2 init5 3)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "rcrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 41)
-  (parent 38)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (t t) (r r) (k k)
-        (y (enc "h" (cat "h" (enc m k)))))))
-  (origs))
-
-(defskeleton wang
-  (vars (r r-0 text) (m data) (a b t name) (k skey))
-  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand init5 3 (r r-0) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((2 2) (0 1)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (added-strand init5 3)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "rcrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a)))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 42)
-  (parent 38)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (t t) (r r) (k k)
-        (y (enc "h" (cat "h" (enc m k)))))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (y mesg) (r text) (a b t name) (k skey))
-  (defstrand ttp-cf2 3 (y y) (r r) (a a) (b b) (t t) (k k))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (comment "Experiment 3 to prove Lemma 4.3, clause 2.")
-  (traces
-    ((recv
-       (cat (cat a b t y (enc "h" (cat "h" k)))
-         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           k r (pubk "encr" t))
-         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" a))
-         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" b))
-         (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (label 43)
-  (unrealized (0 0) (0 1))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (a b t name) (k skey))
-  (defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (added-strand init5 1)
-    (enc "eootag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" a)) (0 0))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "cfrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))))
-  (label 44)
-  (parent 43)
-  (unrealized (0 1))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton wang
-  (vars (r r-0 text) (m data) (a b t name) (k skey))
-  (defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand init3 2 (r r-0) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((2 1) (0 1)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (added-strand init3 2)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "cfrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a)))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 45)
-  (parent 44)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (t t) (r r) (k k)
-        (y (enc "h" (cat "h" (enc m k)))))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (a b t name) (k skey))
-  (defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((1 1) (0 1)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (displaced 1 2 init3 2)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "cfrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 46)
-  (parent 44)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (t t) (r r) (k k)
-        (y (enc "h" (cat "h" (enc m k)))))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (a b t name) (k skey))
-  (defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((1 2) (0 1)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (displaced 1 2 init5 3)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "cfrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 47)
-  (parent 44)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (t t) (r r) (k k)
-        (y (enc "h" (cat "h" (enc m k)))))))
-  (origs))
-
-(defskeleton wang
-  (vars (r r-0 text) (m data) (a b t name) (k skey))
-  (defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand init5 3 (r r-0) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((2 2) (0 1)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (added-strand init5 3)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "cfrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a)))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 48)
-  (parent 44)
-  (realized)
-  (shape)
-  (maps
-    ((0)
-      ((a a) (b b) (t t) (r r) (k k)
-        (y (enc "h" (cat "h" (enc m k)))))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (deflistener m)
-  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (goals
-    (forall ((r text) (m data) (b t a name) (k skey) (z z-0 strd))
-      (implies
-        (and (p "init1" z 1) (p "" z-0 2) (p "init1" "r" z r)
-          (p "init1" "m" z m) (p "init1" "a" z a) (p "init1" "b" z b)
-          (p "init1" "t" z t) (p "init1" "k" z k) (p "" "x" z-0 m)
-          (non (privk "encr" t)) (uniq-at m z 0) (uniq-at k z 0))
-        (or (and (p "init1" z 3) (prec z 2 z-0 0))
-          (exists ((z-1 strd))
-            (and (p "ttp-rc1" z-1 3)
-              (p "ttp-rc1" "y" z-1 (enc "h" (cat "h" (enc m k))))
-              (p "ttp-rc1" "r" z-1 r) (p "ttp-rc1" "a" z-1 a)
-              (p "ttp-rc1" "b" z-1 b) (p "ttp-rc1" "t" z-1 t)
-              (p "ttp-rc1" "k" z-1 k) (prec z 0 z-1 0)
-              (prec z-1 2 z-0 0)))))))
-  (traces ((recv m) (send m))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))))
-  (label 49)
-  (unrealized (0 0))
-  (preskeleton)
-  (origs (m (1 0)) (k (1 0)))
-  (comment "Not a skeleton"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (deflistener m)
-  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (traces ((recv m) (send m))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))))
-  (label 50)
-  (parent 49)
-  (unrealized (0 0))
-  (origs (m (1 0)) (k (1 0)))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (deflistener m)
-  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (deflistener k)
-  (precedes ((1 0) (2 0)) ((2 1) (0 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (operation nonce-test (added-listener k) m (0 0) (enc m k))
-  (traces ((recv m) (send m))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))) ((recv k) (send k)))
-  (label 51)
-  (parent 50)
-  (unrealized (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (deflistener m)
-  (deflistener k)
-  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 1) (0 0)) ((2 2) (1 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (operation nonce-test (displaced 1 3 init1 3) k (2 0)
-    (enc "keytag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-  (traces ((recv m) (send m)) ((recv k) (send k))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (label 52)
-  (parent 51)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (deflistener m)
-  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (deflistener k)
-  (defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (precedes ((1 0) (3 0)) ((2 1) (0 0)) ((3 2) (2 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (operation nonce-test (added-strand ttp-rc1 3) k (2 0)
-    (enc "keytag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-  (traces ((recv m) (send m))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))) ((recv k) (send k))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "rcrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (send
-        (cat "sync-rc-req"
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (send (cat k r))))
-  (label 53)
-  (parent 51)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (deflistener m)
-  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 2) (0 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (operation generalization deleted (1 0))
-  (traces ((recv m) (send m))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (label 54)
-  (parent 52)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps ((0 1) ((r r) (m m) (b b) (t t) (a a) (k k))))
-  (origs (m (1 0)) (k (1 0))))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (deflistener m)
-  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (precedes ((1 0) (2 0)) ((2 2) (0 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (operation generalization deleted (2 0))
-  (traces ((recv m) (send m))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a)))))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "rcrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (send
-        (cat "sync-rc-req"
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (send (cat k r))))
-  (label 55)
-  (parent 53)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps ((0 1) ((r r) (m m) (b b) (t t) (a a) (k k))))
-  (origs (m (1 0)) (k (1 0))))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (deflistener k)
-  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (goals
-    (forall ((r text) (m data) (b t a name) (k skey) (z z-0 strd))
-      (implies
-        (and (p "init1" z 1) (p "" z-0 2) (p "init1" "r" z r)
-          (p "init1" "m" z m) (p "init1" "a" z a) (p "init1" "b" z b)
-          (p "init1" "t" z t) (p "init1" "k" z k) (p "" "x" z-0 k)
-          (non (privk "encr" t)) (uniq-at m z 0) (uniq-at k z 0))
-        (or (and (p "init1" z 3) (prec z 2 z-0 0))
-          (exists ((z-1 strd))
-            (and (p "ttp-rc1" z-1 3)
-              (p "ttp-rc1" "y" z-1 (enc "h" (cat "h" (enc m k))))
-              (p "ttp-rc1" "r" z-1 r) (p "ttp-rc1" "a" z-1 a)
-              (p "ttp-rc1" "b" z-1 b) (p "ttp-rc1" "t" z-1 t)
-              (p "ttp-rc1" "k" z-1 k) (prec z 0 z-1 0)
-              (prec z-1 2 z-0 0)))))))
-  (traces ((recv k) (send k))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))))
-  (label 56)
-  (unrealized (0 0))
-  (preskeleton)
-  (origs (m (1 0)) (k (1 0)))
-  (comment "Not a skeleton"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (deflistener k)
-  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (traces ((recv k) (send k))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))))
-  (label 57)
-  (parent 56)
-  (unrealized (0 0))
-  (origs (m (1 0)) (k (1 0)))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (deflistener k)
-  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 2) (0 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (operation nonce-test (displaced 1 2 init1 3) k (0 0)
-    (enc "keytag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-  (traces ((recv k) (send k))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (label 58)
-  (parent 57)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps ((0 1) ((r r) (m m) (b b) (t t) (a a) (k k))))
-  (origs (m (1 0)) (k (1 0))))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (deflistener k)
-  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (precedes ((1 0) (2 0)) ((2 2) (0 0)))
-  (non-orig (privk "encr" t))
-  (uniq-orig m k)
-  (operation nonce-test (added-strand ttp-rc1 3) k (0 0)
-    (enc "keytag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-  (traces ((recv k) (send k))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a)))))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "rcrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (send
-        (cat "sync-rc-req"
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (send (cat k r))))
-  (label 59)
-  (parent 57)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps ((0 1) ((r r) (m m) (b b) (t t) (a a) (k k))))
-  (origs (m (1 0)) (k (1 0))))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (non-orig (privk "sign" b))
-  (goals
-    (forall ((r text) (m data) (b t a name) (k skey) (z strd))
-      (implies
-        (and (p "init1" z 3) (p "init1" "r" z r) (p "init1" "m" z m)
-          (p "init1" "a" z a) (p "init1" "b" z b) (p "init1" "t" z t)
-          (p "init1" "k" z k) (non (privk "sign" b)))
-        (or
-          (exists ((z-0 strd))
-            (and (p "resp1" z-0 2) (p "resp1" "r" z-0 r)
-              (p "resp1" "m" z-0 m) (p "resp1" "a" z-0 a)
-              (p "resp1" "b" z-0 b) (p "resp1" "t" z-0 t)
-              (p "resp1" "k" z-0 k) (prec z-0 1 z 1)))
-          (exists ((z-0 strd))
-            (and (p "resp3" z-0 2) (p "resp3" "e1" z-0 (enc m k))
-              (p "resp3" "e2" z-0
-                (enc "keytag"
-                  (enc "h"
-                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-              (p "resp3" "x" z-0 (enc "h" (cat "h" k)))
-              (p "resp3" "a" z-0 a) (p "resp3" "b" z-0 b)
-              (p "resp3" "t" z-0 t) (prec z-0 1 z 1)))))))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (label 60)
-  (unrealized (0 1))
-  (origs)
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 1) (0 1)))
-  (non-orig (privk "sign" b))
-  (operation encryption-test (added-strand resp1 2)
-    (enc "eortag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" b)) (0 1))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r)))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (label 61)
-  (parent 60)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand resp3 2 (e1 (enc m k))
-    (e2
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (precedes ((1 1) (0 1)))
-  (non-orig (privk "sign" b))
-  (operation encryption-test (added-strand resp3 2)
-    (enc "eortag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" b)) (0 1))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r)))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))))
-  (label 62)
-  (parent 60)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (non-orig (privk "sign" b))
-  (goals
-    (forall ((r text) (m data) (b t a name) (k skey) (z strd))
-      (implies
-        (and (p "init3" z 3) (p "init3" "r" z r) (p "init3" "m" z m)
-          (p "init3" "a" z a) (p "init3" "b" z b) (p "init3" "t" z t)
-          (p "init3" "k" z k) (non (privk "sign" b)))
-        (or
-          (exists ((z-0 strd))
-            (and (p "resp1" z-0 2) (p "resp1" "r" z-0 r)
-              (p "resp1" "m" z-0 m) (p "resp1" "a" z-0 a)
-              (p "resp1" "b" z-0 b) (p "resp1" "t" z-0 t)
-              (p "resp1" "k" z-0 k) (prec z-0 1 z 2)))
-          (exists ((z-0 strd))
-            (and (p "resp3" z-0 2) (p "resp3" "e1" z-0 (enc m k))
-              (p "resp3" "e2" z-0
-                (enc "keytag"
-                  (enc "h"
-                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-              (p "resp3" "x" z-0 (enc "h" (cat "h" k)))
-              (p "resp3" "a" z-0 a) (p "resp3" "b" z-0 b)
-              (p "resp3" "t" z-0 t) (prec z-0 1 z 2)))))))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (label 63)
-  (unrealized (0 2))
-  (origs)
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 1) (0 2)))
-  (non-orig (privk "sign" b))
-  (operation encryption-test (added-strand resp1 2)
-    (enc "eortag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" b)) (0 2))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (label 64)
-  (parent 63)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand resp3 2 (e1 (enc m k))
-    (e2
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (precedes ((1 1) (0 2)))
-  (non-orig (privk "sign" b))
-  (operation encryption-test (added-strand resp3 2)
-    (enc "eortag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" b)) (0 2))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))))
-  (label 65)
-  (parent 63)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
-  (non-orig (privk "sign" b))
-  (goals
-    (forall ((r text) (m data) (b t a name) (k skey) (z strd))
-      (implies
-        (and (p "init5" z 4) (p "init5" "r" z r) (p "init5" "m" z m)
-          (p "init5" "a" z a) (p "init5" "b" z b) (p "init5" "t" z t)
-          (p "init5" "k" z k) (non (privk "sign" b)))
-        (or
-          (exists ((z-0 strd))
-            (and (p "resp1" z-0 2) (p "resp1" "r" z-0 r)
-              (p "resp1" "m" z-0 m) (p "resp1" "a" z-0 a)
-              (p "resp1" "b" z-0 b) (p "resp1" "t" z-0 t)
-              (p "resp1" "k" z-0 k) (prec z-0 1 z 1)))
-          (exists ((z-0 strd))
-            (and (p "resp3" z-0 2) (p "resp3" "e1" z-0 (enc m k))
-              (p "resp3" "e2" z-0
-                (enc "keytag"
-                  (enc "h"
-                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-              (p "resp3" "x" z-0 (enc "h" (cat "h" k)))
-              (p "resp3" "a" z-0 a) (p "resp3" "b" z-0 b)
-              (p "resp3" "t" z-0 t) (prec z-0 1 z 1)))))))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (label 66)
-  (unrealized (0 1) (0 3))
-  (origs)
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 1) (0 1)))
-  (non-orig (privk "sign" b))
-  (operation encryption-test (added-strand resp1 2)
-    (enc "eortag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" b)) (0 1))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (label 67)
-  (parent 66)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (b t a name) (k skey))
-  (defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand resp3 2 (e1 (enc m k))
-    (e2
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (precedes ((1 1) (0 1)))
-  (non-orig (privk "sign" b))
-  (operation encryption-test (added-strand resp3 2)
-    (enc "eortag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" b)) (0 1))
-  (traces
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))))
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))))
-  (label 68)
-  (parent 66)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (r text) (m data) (a t b name) (k skey))
-  (defstrand resp1 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (non-orig (privk "sign" a))
-  (goals
-    (forall ((r text) (m data) (a t b name) (k skey) (z strd))
-      (implies
-        (and (p "resp1" z 3) (p "resp1" "r" z r) (p "resp1" "m" z m)
-          (p "resp1" "a" z a) (p "resp1" "b" z b) (p "resp1" "t" z t)
-          (p "resp1" "k" z k) (non (privk "sign" a)))
-        (exists ((z-0 strd))
-          (and (p "init5" z-0 1) (p "init5" "r" z-0 r)
-            (p "init5" "m" z-0 m) (p "init5" "a" z-0 a)
-            (p "init5" "b" z-0 b) (p "init5" "t" z-0 t)
-            (p "init5" "k" z-0 k) (prec z-0 0 z 0))))))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (label 69)
-  (unrealized (0 0))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (a t b name) (k skey))
-  (defstrand resp1 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk "sign" a))
-  (operation encryption-test (added-strand init5 1)
-    (enc "eootag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" a)) (0 0))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r)))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))))
-  (label 70)
-  (parent 69)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps ((0) ((r r) (m m) (a a) (t t) (b b) (k k))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (r text) (m data) (a t b name) (k skey))
-  (defstrand resp2 4 (r r) (m m) (a a) (b b) (t t) (k k))
-  (non-orig (privk "sign" a))
-  (goals
-    (forall ((r text) (m data) (a t b name) (k skey) (z strd))
-      (implies
-        (and (p "resp2" z 4) (p "resp2" "r" z r) (p "resp2" "m" z m)
-          (p "resp2" "a" z a) (p "resp2" "b" z b) (p "resp2" "t" z t)
-          (p "resp2" "k" z k) (non (privk "sign" a)))
-        (exists ((z-0 strd))
-          (and (p "init5" z-0 1) (p "init5" "r" z-0 r)
-            (p "init5" "m" z-0 m) (p "init5" "a" z-0 a)
-            (p "init5" "b" z-0 b) (p "init5" "t" z-0 t)
-            (p "init5" "k" z-0 k) (prec z-0 0 z 0))))))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (label 71)
-  (unrealized (0 0))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (a t b name) (k skey))
-  (defstrand resp2 4 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk "sign" a))
-  (operation encryption-test (added-strand init5 1)
-    (enc "eootag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" a)) (0 0))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r)))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))))
-  (label 72)
-  (parent 71)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps ((0) ((r r) (m m) (a a) (t t) (b b) (k k))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (e1 e2 x mesg) (a t b name))
-  (defstrand resp3 4 (e1 e1) (e2 e2) (x x) (a a) (b b) (t t))
-  (non-orig (privk "sign" a))
-  (goals
-    (forall ((e1 e2 x mesg) (a t b name) (z strd))
-      (implies
-        (and (p "resp3" z 4) (p "resp3" "e1" z e1) (p "resp3" "e2" z e2)
-          (p "resp3" "x" z x) (p "resp3" "a" z a) (p "resp3" "b" z b)
-          (p "resp3" "t" z t) (non (privk "sign" a)))
-        (or
-          (exists ((r text) (m data) (k skey) (z-0 strd))
-            (and (= e1 (enc m k))
-              (= e2
-                (enc "keytag"
-                  (enc "h"
-                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-              (= x (enc "h" (cat "h" k))) (p "init3" z-0 2)
-              (p "resp3" "e1" z (enc m k))
-              (p "resp3" "e2" z
-                (enc "keytag"
-                  (enc "h"
-                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-              (p "resp3" "x" z (enc "h" (cat "h" k)))
-              (p "init3" "r" z-0 r) (p "init3" "m" z-0 m)
-              (p "init3" "a" z-0 a) (p "init3" "b" z-0 b)
-              (p "init3" "t" z-0 t) (p "init3" "k" z-0 k)
-              (prec z-0 0 z 0) (prec z-0 1 z 3)))
-          (exists ((r r-0 text) (m data) (k skey) (z-0 z-1 strd))
-            (and (= e1 (enc m k))
-              (= e2
-                (enc "keytag"
-                  (enc "h"
-                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-              (= x (enc "h" (cat "h" k))) (p "init5" z-0 1)
-              (p "init3" z-1 2) (p "resp3" "e1" z (enc m k))
-              (p "resp3" "e2" z
-                (enc "keytag"
-                  (enc "h"
-                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-              (p "resp3" "x" z (enc "h" (cat "h" k)))
-              (p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
-              (p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
-              (p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
-              (p "init3" "r" z-1 r-0) (p "init3" "m" z-1 m)
-              (p "init3" "a" z-1 a) (p "init3" "b" z-1 b)
-              (p "init3" "t" z-1 t) (p "init3" "k" z-1 k)
-              (prec z-0 0 z 0) (prec z-1 1 z 3)))
-          (exists ((r text) (m data) (k skey) (z-0 strd))
-            (and (= e1 (enc m k))
-              (= e2
-                (enc "keytag"
-                  (enc "h"
-                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-              (= x (enc "h" (cat "h" k))) (p "init5" z-0 3)
-              (p "resp3" "e1" z (enc m k))
-              (p "resp3" "e2" z
-                (enc "keytag"
-                  (enc "h"
-                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-              (p "resp3" "x" z (enc "h" (cat "h" k)))
-              (p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
-              (p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
-              (p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
-              (prec z-0 0 z 0) (prec z-0 2 z 3)))
-          (exists ((r r-0 text) (m data) (k skey) (z-0 z-1 strd))
-            (and (= e1 (enc m k))
-              (= e2
-                (enc "keytag"
-                  (enc "h"
-                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-              (= x (enc "h" (cat "h" k))) (p "init5" z-0 1)
-              (p "init5" z-1 3) (p "resp3" "e1" z (enc m k))
-              (p "resp3" "e2" z
-                (enc "keytag"
-                  (enc "h"
-                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-              (p "resp3" "x" z (enc "h" (cat "h" k)))
-              (p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
-              (p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
-              (p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
-              (p "init5" "r" z-1 r-0) (p "init5" "m" z-1 m)
-              (p "init5" "a" z-1 a) (p "init5" "b" z-1 b)
-              (p "init5" "t" z-1 t) (p "init5" "k" z-1 k)
-              (prec z-0 0 z 0) (prec z-1 2 z 3)))))))
-  (traces
-    ((recv
-       (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-         (enc "eootag"
-           (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-           (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (label 73)
-  (unrealized (0 0) (0 3))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (a t b name) (k skey))
-  (defstrand resp3 4 (e1 (enc m k))
-    (e2
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk "sign" a))
-  (operation encryption-test (added-strand init5 1)
-    (enc "eootag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" a)) (0 0))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))))
-  (label 74)
-  (parent 73)
-  (unrealized (0 3))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton wang
-  (vars (r r-0 text) (m data) (a t b name) (k skey))
-  (defstrand resp3 4 (e1 (enc m k))
-    (e2
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand init3 2 (r r-0) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((2 1) (0 3)))
-  (non-orig (privk "sign" a))
-  (operation encryption-test (added-strand init3 2)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a)))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 75)
-  (parent 74)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps
-    ((0)
-      ((e1 (enc m k))
-        (e2
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-        (x (enc "h" (cat "h" k))) (a a) (t t) (b b))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (a t b name) (k skey))
-  (defstrand resp3 4 (e1 (enc m k))
-    (e2
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((1 1) (0 3)))
-  (non-orig (privk "sign" a))
-  (operation encryption-test (displaced 1 2 init3 2)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 76)
-  (parent 74)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps
-    ((0)
-      ((e1 (enc m k))
-        (e2
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-        (x (enc "h" (cat "h" k))) (a a) (t t) (b b))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (a t b name) (k skey))
-  (defstrand resp3 4 (e1 (enc m k))
-    (e2
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((1 2) (0 3)))
-  (non-orig (privk "sign" a))
-  (operation encryption-test (displaced 1 2 init5 3)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 77)
-  (parent 74)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps
-    ((0)
-      ((e1 (enc m k))
-        (e2
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-        (x (enc "h" (cat "h" k))) (a a) (t t) (b b))))
-  (origs))
-
-(defskeleton wang
-  (vars (r r-0 text) (m data) (a t b name) (k skey))
-  (defstrand resp3 4 (e1 (enc m k))
-    (e2
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand init5 3 (r r-0) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((2 2) (0 3)))
-  (non-orig (privk "sign" a))
-  (operation encryption-test (added-strand init5 3)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a)))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 78)
-  (parent 74)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps
-    ((0)
-      ((e1 (enc m k))
-        (e2
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
-        (x (enc "h" (cat "h" k))) (a a) (t t) (b b))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (y x mesg) (a b t name))
-  (deflistener
-    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-      (privk "sign" t)))
-  (non-orig (privk "sign" t))
-  (goals
-    (forall ((y x mesg) (a b t name) (z strd))
-      (implies
-        (and (p "" z 2)
-          (p "" "x" z
-            (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-              (privk "sign" t))) (non (privk "sign" t)))
-        (or
-          (exists ((z-0 strd))
-            (and (p "ttp-ab1" z-0 3) (p "ttp-ab1" "y" z-0 y)
-              (p "ttp-ab1" "x" z-0 x) (p "ttp-ab1" "a" z-0 a)
-              (p "ttp-ab1" "b" z-0 b) (p "ttp-ab1" "t" z-0 t)
-              (prec z-0 2 z 0)))
-          (exists ((r text) (k skey) (z-0 strd))
-            (and (= x (enc "h" (cat "h" k))) (p "ttp-rc2" z-0 3)
-              (p "" "x" z
-                (enc "abcf"
-                  (enc "abrq" a b t y (enc "h" (cat "h" k))
-                    (privk "sign" a)) (privk "sign" t)))
-              (p "ttp-rc2" "y" z-0 y) (p "ttp-rc2" "r" z-0 r)
-              (p "ttp-rc2" "a" z-0 a) (p "ttp-rc2" "b" z-0 b)
-              (p "ttp-rc2" "t" z-0 t) (p "ttp-rc2" "k" z-0 k)
-              (prec z-0 2 z 0)))
-          (exists ((r text) (k skey) (z-0 strd))
-            (and (= x (enc "h" (cat "h" k))) (p "ttp-cf2" z-0 3)
-              (p "" "x" z
-                (enc "abcf"
-                  (enc "abrq" a b t y (enc "h" (cat "h" k))
-                    (privk "sign" a)) (privk "sign" t)))
-              (p "ttp-cf2" "y" z-0 y) (p "ttp-cf2" "r" z-0 r)
-              (p "ttp-cf2" "a" z-0 a) (p "ttp-cf2" "b" z-0 b)
-              (p "ttp-cf2" "t" z-0 t) (p "ttp-cf2" "k" z-0 k)
-              (prec z-0 2 z 0)))))))
-  (traces
-    ((recv
-       (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-         (privk "sign" t)))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (label 79)
-  (unrealized (0 0))
-  (origs)
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton wang
-  (vars (y x mesg) (a b t name))
-  (deflistener
-    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-      (privk "sign" t)))
-  (defstrand ttp-ab1 3 (y y) (x x) (a a) (b b) (t t))
-  (precedes ((1 2) (0 0)))
-  (non-orig (privk "sign" t))
-  (operation encryption-test (added-strand ttp-ab1 3)
-    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-      (privk "sign" t)) (0 0))
-  (traces
-    ((recv
-       (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-         (privk "sign" t)))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t))))
-    ((recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (label 80)
-  (parent 79)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps ((0) ((y y) (x x) (a a) (b b) (t t))))
-  (origs))
-
-(defskeleton wang
-  (vars (y mesg) (r text) (a b t name) (k skey))
-  (deflistener
-    (enc "abcf"
-      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-      (privk "sign" t)))
-  (defstrand ttp-rc2 3 (y y) (r r) (a a) (b b) (t t) (k k))
-  (precedes ((1 2) (0 0)))
-  (non-orig (privk "sign" t))
-  (operation encryption-test (added-strand ttp-rc2 3)
-    (enc "abcf"
-      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-      (privk "sign" t)) (0 0))
-  (traces
-    ((recv
-       (enc "abcf"
-         (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-         (privk "sign" t)))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t))))
-    ((recv
-       (cat (cat a b t y (enc "h" (cat "h" k)))
-         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           k r (pubk "encr" t))
-         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" a))
-         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" b))
-         (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (label 81)
-  (parent 79)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps ((0) ((y y) (x (enc "h" (cat "h" k))) (a a) (b b) (t t))))
-  (origs))
-
-(defskeleton wang
-  (vars (y mesg) (r text) (a b t name) (k skey))
-  (deflistener
-    (enc "abcf"
-      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-      (privk "sign" t)))
-  (defstrand ttp-cf2 3 (y y) (r r) (a a) (b b) (t t) (k k))
-  (precedes ((1 2) (0 0)))
-  (non-orig (privk "sign" t))
-  (operation encryption-test (added-strand ttp-cf2 3)
-    (enc "abcf"
-      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-      (privk "sign" t)) (0 0))
-  (traces
-    ((recv
-       (enc "abcf"
-         (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-         (privk "sign" t)))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t))))
-    ((recv
-       (cat (cat a b t y (enc "h" (cat "h" k)))
-         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           k r (pubk "encr" t))
-         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" a))
-         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" b))
-         (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (label 82)
-  (parent 79)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps ((0) ((y y) (x (enc "h" (cat "h" k))) (a a) (b b) (t t))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (y x mesg) (a b t name))
-  (defstrand ttp-ab1 3 (y y) (x x) (a a) (b b) (t t))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (goals
-    (forall ((y x mesg) (a b t name) (z strd))
-      (implies
-        (and (p "ttp-ab1" z 3) (p "ttp-ab1" "y" z y)
-          (p "ttp-ab1" "x" z x) (p "ttp-ab1" "a" z a)
-          (p "ttp-ab1" "b" z b) (p "ttp-ab1" "t" z t)
-          (non (privk "encr" t)) (non (privk "sign" a)))
-        (or
-          (exists ((r text) (m data) (k skey) (z-0 strd))
-            (and (= y (enc "h" (cat "h" (enc m k))))
-              (= x (enc "h" (cat "h" k))) (p "init3" z-0 2)
-              (p "ttp-ab1" "y" z (enc "h" (cat "h" (enc m k))))
-              (p "ttp-ab1" "x" z (enc "h" (cat "h" k)))
-              (p "init3" "r" z-0 r) (p "init3" "m" z-0 m)
-              (p "init3" "a" z-0 a) (p "init3" "b" z-0 b)
-              (p "init3" "t" z-0 t) (p "init3" "k" z-0 k)
-              (prec z-0 1 z 0)))
-          (exists ((r text) (m data) (k skey) (z-0 strd))
-            (and (= y (enc "h" (cat "h" (enc m k))))
-              (= x (enc "h" (cat "h" k))) (p "init5" z-0 3)
-              (p "ttp-ab1" "y" z (enc "h" (cat "h" (enc m k))))
-              (p "ttp-ab1" "x" z (enc "h" (cat "h" k)))
-              (p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
-              (p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
-              (p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
-              (prec z-0 2 z 0)))))))
-  (traces
-    ((recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (label 83)
-  (unrealized (0 0))
-  (origs)
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (a b t name) (k skey))
-  (defstrand ttp-ab1 3 (y (enc "h" (cat "h" (enc m k))))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 1) (0 0)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (added-strand init3 2)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 0))
-  (traces
-    ((recv
-       (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-         (enc "h" (cat "h" k)) (privk "sign" a)))
-      (send
-        (cat "sync-abrq"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 84)
-  (parent 83)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps
-    ((0)
-      ((y (enc "h" (cat "h" (enc m k)))) (x (enc "h" (cat "h" k))) (a a)
-        (b b) (t t))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (a b t name) (k skey))
-  (defstrand ttp-ab1 3 (y (enc "h" (cat "h" (enc m k))))
-    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
-  (defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 2) (0 0)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (added-strand init5 3)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 0))
-  (traces
-    ((recv
-       (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-         (enc "h" (cat "h" k)) (privk "sign" a)))
-      (send
-        (cat "sync-abrq"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 85)
-  (parent 83)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps
-    ((0)
-      ((y (enc "h" (cat "h" (enc m k)))) (x (enc "h" (cat "h" k))) (a a)
-        (b b) (t t))))
-  (origs))
-
-(comment "Nothing left to do")
-
-(defprotocol wang basic
-  (defrole init1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (send (cat k r))))
-  (defrole init2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init3
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole init4
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
-  (defrole init5
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))))
-  (defrole resp1
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b))) (recv (cat k r))))
-  (defrole resp2
-    (vars (a b t name) (m data) (r text) (k skey))
-    (trace
-      (recv
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k))) (enc m k)
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))))
-      (send
-        (cat
-          (cat a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (enc "eootag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b))
-          (enc "rcrq"
-            (cat a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h"
-                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-            (privk "sign" b)))) (recv (cat k r))))
-  (defrole resp3
-    (vars (a b t name) (e1 e2 x mesg))
-    (trace
-      (recv
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))))
-      (send
-        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
-          (enc "eootag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
-            (privk "sign" b))
-          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
-            (privk "sign" b))))
-      (recv
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab1
-    (vars (a b t name) (y x mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
-      (send
-        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-ab2
-    (vars (a b t name) (y x e mesg))
-    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
-      (recv
-        (cat "sync-abrq"
-          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-            (privk "sign" b))))
-      (send
-        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
-          (privk "sign" b)))))
-  (defrole ttp-rc1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
-  (defrole ttp-rc2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrole ttp-cf1
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (send
-        (enc (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
-  (defrole ttp-cf2
-    (vars (a b t name) (r text) (k skey) (y mesg))
-    (trace
-      (recv
-        (cat (cat a b t y (enc "h" (cat "h" k)))
-          (enc "keytag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-            (pubk "encr" t))
-          (enc "eootag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" a))
-          (enc "eortag"
-            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))
-          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
-            (enc "keytag"
-              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-              (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-cf-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
-
-(defskeleton wang
-  (vars (y mesg) (r text) (a b t name) (k skey))
-  (defstrand ttp-rc2 3 (y y) (r r) (a a) (b b) (t t) (k k))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (goals
-    (forall ((y mesg) (r text) (a b t name) (k skey) (z strd))
-      (implies
-        (and (p "ttp-rc2" z 3) (p "ttp-rc2" "y" z y)
-          (p "ttp-rc2" "r" z r) (p "ttp-rc2" "a" z a)
-          (p "ttp-rc2" "b" z b) (p "ttp-rc2" "t" z t)
-          (p "ttp-rc2" "k" z k) (non (privk "encr" t))
-          (non (privk "sign" a)))
-        (or
-          (exists ((m data) (z-0 strd))
-            (and (= y (enc "h" (cat "h" (enc m k)))) (p "init3" z-0 2)
-              (p "ttp-rc2" "y" z (enc "h" (cat "h" (enc m k))))
-              (p "init3" "r" z-0 r) (p "init3" "m" z-0 m)
-              (p "init3" "a" z-0 a) (p "init3" "b" z-0 b)
-              (p "init3" "t" z-0 t) (p "init3" "k" z-0 k)
-              (prec z-0 0 z 0) (prec z-0 1 z 1)))
-          (exists ((r-0 text) (m data) (z-0 z-1 strd))
-            (and (= y (enc "h" (cat "h" (enc m k)))) (p "init5" z-0 1)
-              (p "init3" z-1 2)
-              (p "ttp-rc2" "y" z (enc "h" (cat "h" (enc m k))))
-              (p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
-              (p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
-              (p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
-              (p "init3" "r" z-1 r-0) (p "init3" "m" z-1 m)
-              (p "init3" "a" z-1 a) (p "init3" "b" z-1 b)
-              (p "init3" "t" z-1 t) (p "init3" "k" z-1 k)
-              (prec z-0 0 z 0) (prec z-1 1 z 1)))
-          (exists ((m data) (z-0 strd))
-            (and (= y (enc "h" (cat "h" (enc m k)))) (p "init5" z-0 3)
-              (p "ttp-rc2" "y" z (enc "h" (cat "h" (enc m k))))
-              (p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
-              (p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
-              (p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
-              (prec z-0 0 z 0) (prec z-0 2 z 1)))
-          (exists ((r-0 text) (m data) (z-0 z-1 strd))
-            (and (= y (enc "h" (cat "h" (enc m k)))) (p "init5" z-0 1)
-              (p "init5" z-1 3)
-              (p "ttp-rc2" "y" z (enc "h" (cat "h" (enc m k))))
-              (p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
-              (p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
-              (p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
-              (p "init5" "r" z-1 r-0) (p "init5" "m" z-1 m)
-              (p "init5" "a" z-1 a) (p "init5" "b" z-1 b)
-              (p "init5" "t" z-1 t) (p "init5" "k" z-1 k)
-              (prec z-0 0 z 0) (prec z-1 2 z 1)))))))
-  (traces
-    ((recv
-       (cat (cat a b t y (enc "h" (cat "h" k)))
-         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           k r (pubk "encr" t))
-         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" a))
-         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" b))
-         (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
-             (pubk "encr" t)) (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
-          (privk "sign" t)))))
-  (label 86)
-  (unrealized (0 0) (0 1))
-  (origs)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wang
-  (vars (r text) (m data) (a b t name) (k skey))
-  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (added-strand init5 1)
-    (enc "eootag"
-      (enc "h"
-        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k))))
-      (enc "keytag"
-        (enc "h"
-          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-      (privk "sign" a)) (0 0))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "rcrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))))
-  (label 87)
-  (parent 86)
-  (unrealized (0 1))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton wang
-  (vars (r r-0 text) (m data) (a b t name) (k skey))
-  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand init3 2 (r r-0) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((2 1) (0 1)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (added-strand init3 2)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "rcrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a)))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 88)
-  (parent 87)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps
-    ((0)
-      ((y (enc "h" (cat "h" (enc m k)))) (r r) (a a) (b b) (t t)
-        (k k))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (a b t name) (k skey))
-  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((1 1) (0 1)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (displaced 1 2 init3 2)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "rcrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 89)
-  (parent 87)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps
-    ((0)
-      ((y (enc "h" (cat "h" (enc m k)))) (r r) (a a) (b b) (t t)
-        (k k))))
-  (origs))
-
-(defskeleton wang
-  (vars (r text) (m data) (a b t name) (k skey))
-  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((1 2) (0 1)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (displaced 1 2 init5 3)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "rcrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 90)
-  (parent 87)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps
-    ((0)
-      ((y (enc "h" (cat "h" (enc m k)))) (r r) (a a) (b b) (t t)
-        (k k))))
-  (origs))
-
-(defskeleton wang
-  (vars (r r-0 text) (m data) (a b t name) (k skey))
-  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
-    (b b) (t t) (k k))
-  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
-  (defstrand init5 3 (r r-0) (m m) (a a) (b b) (t t) (k k))
-  (precedes ((1 0) (0 0)) ((2 2) (0 1)))
-  (non-orig (privk "encr" t) (privk "sign" a))
-  (operation encryption-test (added-strand init5 3)
-    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
-  (traces
-    ((recv
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a))
-         (enc "eortag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))
-         (enc "rcrq"
-           (cat a b t (enc "h" (cat "h" (enc m k)))
-             (enc "h" (cat "h" k)))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" b))))
-      (recv
-        (cat "sync-rc-req"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a))))
-      (send
-        (enc "abcf"
-          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
-           (privk "sign" a)))))
-    ((send
-       (cat
-         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
-         (enc m k)
-         (enc "keytag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-         (enc "eootag"
-           (enc "h"
-             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-               (enc "h" (cat "h" k))))
-           (enc "keytag"
-             (enc "h"
-               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-           (privk "sign" a))))
-      (recv
-        (enc "eortag"
-          (enc "h"
-            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-              (enc "h" (cat "h" k))))
-          (enc "keytag"
-            (enc "h"
-              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
-                (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
-          (privk "sign" b)))
-      (send
-        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
-          (enc "h" (cat "h" k)) (privk "sign" a)))))
-  (label 91)
-  (parent 87)
-  (realized)
-  (shape)
-  (satisfies yes)
-  (maps
-    ((0)
-      ((y (enc "h" (cat "h" (enc m k)))) (r r) (a a) (b b) (t t)
-        (k k))))
-  (origs))
-
-(comment "Nothing left to do")
diff --git a/tst/wang-key-hash-tst_shapes.tst b/tst/wang-key-hash-tst_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/wang-key-hash-tst_shapes.tst
@@ -0,0 +1,18256 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Wang's Fair Exchange Protocol" (bound 10))
+
+(comment "CPSA 4.3.0")
+
+(comment "All input read from tst/wang-key-hash-tst.scm")
+
+(comment "Strand count bounded at 10")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (deflistener m)
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (comment "Experiment 1 to prove Lemma 4.1.")
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))) ((recv m) (send m)))
+  (label 0)
+  (unrealized (1 0))
+  (preskeleton)
+  (origs (m (0 0)) (k (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (deflistener m)
+  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (operation generalization deleted (1 0))
+  (traces ((recv m) (send m))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (label 5)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((1 0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs (m (1 0)) (k (1 0))))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (deflistener m)
+  (defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
+    (b b) (t t) (k k))
+  (precedes ((0 0) (2 0)) ((2 2) (1 0)))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (operation generalization deleted (2 0))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))) ((recv m) (send m))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (send
+        (cat "sync-rc-req"
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (label 6)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs (m (0 0)) (k (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (deflistener k)
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (comment "Experiment 2 to prove Lemma 4.1.")
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))) ((recv k) (send k)))
+  (label 7)
+  (unrealized (1 0))
+  (preskeleton)
+  (origs (m (0 0)) (k (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (deflistener k)
+  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (operation nonce-test (displaced 0 2 init1 3) k (1 0)
+    (enc "keytag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+  (traces ((recv k) (send k))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (label 9)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((1 0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs (m (1 0)) (k (1 0))))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (deflistener k)
+  (defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
+    (b b) (t t) (k k))
+  (precedes ((0 0) (2 0)) ((2 2) (1 0)))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (operation nonce-test (added-strand ttp-rc1 3) k (1 0)
+    (enc "keytag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))) ((recv k) (send k))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (send
+        (cat "sync-rc-req"
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (label 10)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((0 1) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs (m (0 0)) (k (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (non-orig (privk "sign" b))
+  (comment "First of three experiments to prove Lemma 4.2, clause 1.")
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (label 11)
+  (unrealized (0 1))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp1 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 1))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r)))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (label 12)
+  (parent 11)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand resp3 2 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp3 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 1))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r)))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))))
+  (label 13)
+  (parent 11)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (non-orig (privk "sign" b))
+  (comment "Second of three experiments to prove Lemma 4.2, clause 1.")
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (label 14)
+  (unrealized (0 2))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 1) (0 2)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp1 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 2))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (label 15)
+  (parent 14)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand resp3 2 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (precedes ((1 1) (0 2)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp3 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 2))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))))
+  (label 16)
+  (parent 14)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
+  (non-orig (privk "sign" b))
+  (comment "Third of three experiments to prove Lemma 4.2, clause 1.")
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (label 17)
+  (unrealized (0 1) (0 3))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp1 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 1))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (label 18)
+  (parent 17)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand resp3 2 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp3 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 1))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))))
+  (label 19)
+  (parent 17)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (r text) (m data) (a t b name) (k skey))
+  (defstrand resp1 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (non-orig (privk "sign" a))
+  (comment "First of two experiments to prove Lemma 4.2, clause 2.")
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (label 20)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (r text) (m data) (a t b name) (k skey))
+  (defstrand resp1 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (added-strand init5 1)
+    (enc "eootag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" a)) (0 0))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r)))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))))
+  (label 21)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (t t) (m m) (r r) (k k) (b b))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (r text) (m data) (a t b name) (k skey))
+  (defstrand resp2 4 (r r) (m m) (a a) (b b) (t t) (k k))
+  (non-orig (privk "sign" a))
+  (comment "Second of two experiments to prove Lemma 4.2, clause 2.")
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (label 22)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (r text) (m data) (a t b name) (k skey))
+  (defstrand resp2 4 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (added-strand init5 1)
+    (enc "eootag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" a)) (0 0))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r)))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))))
+  (label 23)
+  (parent 22)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (t t) (m m) (r r) (k k) (b b))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (e1 e2 x mesg) (a t b name))
+  (defstrand resp3 4 (e1 e1) (e2 e2) (x x) (a a) (b b) (t t))
+  (non-orig (privk "sign" a))
+  (comment "Experiments to prove Lemma 4.2, clause 3.")
+  (traces
+    ((recv
+       (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+         (enc "eootag"
+           (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+           (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (label 24)
+  (unrealized (0 0) (0 3))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (r r-0 text) (m data) (a t b name) (k skey))
+  (defstrand resp3 4 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand init3 2 (r r-0) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((2 1) (0 3)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (added-strand init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 26)
+  (parent 24)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (t t) (b b) (e1 (enc m k))
+        (e2
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+        (x (enc "h" (cat "h" k))))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (a t b name) (k skey))
+  (defstrand resp3 4 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((1 1) (0 3)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 27)
+  (parent 24)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (t t) (b b) (e1 (enc m k))
+        (e2
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+        (x (enc "h" (cat "h" k))))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (a t b name) (k skey))
+  (defstrand resp3 4 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((1 2) (0 3)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 28)
+  (parent 24)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (t t) (b b) (e1 (enc m k))
+        (e2
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+        (x (enc "h" (cat "h" k))))))
+  (origs))
+
+(defskeleton wang
+  (vars (r r-0 text) (m data) (a t b name) (k skey))
+  (defstrand resp3 4 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand init5 3 (r r-0) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((2 2) (0 3)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (added-strand init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 29)
+  (parent 24)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (t t) (b b) (e1 (enc m k))
+        (e2
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+        (x (enc "h" (cat "h" k))))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (y x mesg) (a b t name))
+  (deflistener
+    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+      (privk "sign" t)))
+  (non-orig (privk "sign" t))
+  (comment "Experiments to prove Lemma 4.3, clause 1.")
+  (traces
+    ((recv
+       (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+         (privk "sign" t)))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (label 30)
+  (unrealized (0 0))
+  (origs)
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton wang
+  (vars (y x mesg) (a b t name))
+  (deflistener
+    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+      (privk "sign" t)))
+  (defstrand ttp-ab1 3 (y y) (x x) (a a) (b b) (t t))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sign" t))
+  (operation encryption-test (added-strand ttp-ab1 3)
+    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+      (privk "sign" t)) (0 0))
+  (traces
+    ((recv
+       (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+         (privk "sign" t)))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t))))
+    ((recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (label 31)
+  (parent 30)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (y y) (x x))))
+  (origs))
+
+(defskeleton wang
+  (vars (y mesg) (r text) (a b t name) (k skey))
+  (deflistener
+    (enc "abcf"
+      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+      (privk "sign" t)))
+  (defstrand ttp-rc2 3 (y y) (r r) (a a) (b b) (t t) (k k))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sign" t))
+  (operation encryption-test (added-strand ttp-rc2 3)
+    (enc "abcf"
+      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+      (privk "sign" t)) (0 0))
+  (traces
+    ((recv
+       (enc "abcf"
+         (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+         (privk "sign" t)))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t))))
+    ((recv
+       (cat (cat a b t y (enc "h" (cat "h" k)))
+         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           k r (pubk "encr" t))
+         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (label 32)
+  (parent 30)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (y y) (x (enc "h" (cat "h" k))))))
+  (origs))
+
+(defskeleton wang
+  (vars (y mesg) (r text) (a b t name) (k skey))
+  (deflistener
+    (enc "abcf"
+      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+      (privk "sign" t)))
+  (defstrand ttp-cf2 3 (y y) (r r) (a a) (b b) (t t) (k k))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sign" t))
+  (operation encryption-test (added-strand ttp-cf2 3)
+    (enc "abcf"
+      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+      (privk "sign" t)) (0 0))
+  (traces
+    ((recv
+       (enc "abcf"
+         (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+         (privk "sign" t)))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t))))
+    ((recv
+       (cat (cat a b t y (enc "h" (cat "h" k)))
+         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           k r (pubk "encr" t))
+         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (label 33)
+  (parent 30)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (y y) (x (enc "h" (cat "h" k))))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (y x mesg) (a b t name))
+  (defstrand ttp-ab1 3 (y y) (x x) (a a) (b b) (t t))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (comment "Experiment 1 to prove Lemma 4.3, clause 2.")
+  (traces
+    ((recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (label 34)
+  (unrealized (0 0))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wang
+  (vars (r text) (m data) (a b t name) (k skey))
+  (defstrand ttp-ab1 3 (y (enc "h" (cat "h" (enc m k))))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 1) (0 0)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 0))
+  (traces
+    ((recv
+       (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+         (enc "h" (cat "h" k)) (privk "sign" a)))
+      (send
+        (cat "sync-abrq"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 35)
+  (parent 34)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((y (enc "h" (cat "h" (enc m k)))) (x (enc "h" (cat "h" k))) (a a)
+        (b b) (t t))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (a b t name) (k skey))
+  (defstrand ttp-ab1 3 (y (enc "h" (cat "h" (enc m k))))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 0))
+  (traces
+    ((recv
+       (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+         (enc "h" (cat "h" k)) (privk "sign" a)))
+      (send
+        (cat "sync-abrq"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 36)
+  (parent 34)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((y (enc "h" (cat "h" (enc m k)))) (x (enc "h" (cat "h" k))) (a a)
+        (b b) (t t))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (y mesg) (r text) (a b t name) (k skey))
+  (defstrand ttp-rc2 3 (y y) (r r) (a a) (b b) (t t) (k k))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (comment "Experiment 2 to prove Lemma 4.3, clause 2.")
+  (traces
+    ((recv
+       (cat (cat a b t y (enc "h" (cat "h" k)))
+         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           k r (pubk "encr" t))
+         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (label 37)
+  (unrealized (0 0) (0 1))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (r r-0 text) (m data) (a b t name) (k skey))
+  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
+    (b b) (t t) (k k))
+  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand init3 2 (r r-0) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((2 1) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 39)
+  (parent 37)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (t t) (r r) (k k)
+        (y (enc "h" (cat "h" (enc m k)))))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (a b t name) (k skey))
+  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
+    (b b) (t t) (k k))
+  (defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((1 1) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 40)
+  (parent 37)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (t t) (r r) (k k)
+        (y (enc "h" (cat "h" (enc m k)))))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (a b t name) (k skey))
+  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
+    (b b) (t t) (k k))
+  (defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((1 2) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 41)
+  (parent 37)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (t t) (r r) (k k)
+        (y (enc "h" (cat "h" (enc m k)))))))
+  (origs))
+
+(defskeleton wang
+  (vars (r r-0 text) (m data) (a b t name) (k skey))
+  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
+    (b b) (t t) (k k))
+  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand init5 3 (r r-0) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((2 2) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 42)
+  (parent 37)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (t t) (r r) (k k)
+        (y (enc "h" (cat "h" (enc m k)))))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (y mesg) (r text) (a b t name) (k skey))
+  (defstrand ttp-cf2 3 (y y) (r r) (a a) (b b) (t t) (k k))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (comment "Experiment 3 to prove Lemma 4.3, clause 2.")
+  (traces
+    ((recv
+       (cat (cat a b t y (enc "h" (cat "h" k)))
+         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           k r (pubk "encr" t))
+         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (label 43)
+  (unrealized (0 0) (0 1))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (r r-0 text) (m data) (a b t name) (k skey))
+  (defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
+    (b b) (t t) (k k))
+  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand init3 2 (r r-0) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((2 1) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "cfrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 45)
+  (parent 43)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (t t) (r r) (k k)
+        (y (enc "h" (cat "h" (enc m k)))))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (a b t name) (k skey))
+  (defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
+    (b b) (t t) (k k))
+  (defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((1 1) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "cfrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 46)
+  (parent 43)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (t t) (r r) (k k)
+        (y (enc "h" (cat "h" (enc m k)))))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (a b t name) (k skey))
+  (defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
+    (b b) (t t) (k k))
+  (defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((1 2) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "cfrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 47)
+  (parent 43)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (t t) (r r) (k k)
+        (y (enc "h" (cat "h" (enc m k)))))))
+  (origs))
+
+(defskeleton wang
+  (vars (r r-0 text) (m data) (a b t name) (k skey))
+  (defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
+    (b b) (t t) (k k))
+  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand init5 3 (r r-0) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((2 2) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "cfrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 48)
+  (parent 43)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (t t) (r r) (k k)
+        (y (enc "h" (cat "h" (enc m k)))))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (deflistener m)
+  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (goals
+    (forall ((r text) (m data) (b t a name) (k skey) (z z-0 strd))
+      (implies
+        (and (p "init1" z 1) (p "" z-0 2) (p "init1" "r" z r)
+          (p "init1" "m" z m) (p "init1" "a" z a) (p "init1" "b" z b)
+          (p "init1" "t" z t) (p "init1" "k" z k) (p "" "x" z-0 m)
+          (non (privk "encr" t)) (uniq-at m z 0) (uniq-at k z 0))
+        (or (and (p "init1" z 3) (prec z 2 z-0 0))
+          (exists ((z-1 strd))
+            (and (p "ttp-rc1" z-1 3)
+              (p "ttp-rc1" "y" z-1 (enc "h" (cat "h" (enc m k))))
+              (p "ttp-rc1" "r" z-1 r) (p "ttp-rc1" "a" z-1 a)
+              (p "ttp-rc1" "b" z-1 b) (p "ttp-rc1" "t" z-1 t)
+              (p "ttp-rc1" "k" z-1 k) (prec z 0 z-1 0)
+              (prec z-1 2 z-0 0)))))))
+  (traces ((recv m) (send m))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))))
+  (label 49)
+  (unrealized (0 0))
+  (preskeleton)
+  (origs (m (1 0)) (k (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (deflistener m)
+  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (operation generalization deleted (1 0))
+  (traces ((recv m) (send m))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (label 54)
+  (parent 49)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0 1) ((r r) (m m) (b b) (t t) (a a) (k k))))
+  (origs (m (1 0)) (k (1 0))))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (deflistener m)
+  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
+    (b b) (t t) (k k))
+  (precedes ((1 0) (2 0)) ((2 2) (0 0)))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (operation generalization deleted (2 0))
+  (traces ((recv m) (send m))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (send
+        (cat "sync-rc-req"
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (label 55)
+  (parent 49)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0 1) ((r r) (m m) (b b) (t t) (a a) (k k))))
+  (origs (m (1 0)) (k (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (deflistener k)
+  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (goals
+    (forall ((r text) (m data) (b t a name) (k skey) (z z-0 strd))
+      (implies
+        (and (p "init1" z 1) (p "" z-0 2) (p "init1" "r" z r)
+          (p "init1" "m" z m) (p "init1" "a" z a) (p "init1" "b" z b)
+          (p "init1" "t" z t) (p "init1" "k" z k) (p "" "x" z-0 k)
+          (non (privk "encr" t)) (uniq-at m z 0) (uniq-at k z 0))
+        (or (and (p "init1" z 3) (prec z 2 z-0 0))
+          (exists ((z-1 strd))
+            (and (p "ttp-rc1" z-1 3)
+              (p "ttp-rc1" "y" z-1 (enc "h" (cat "h" (enc m k))))
+              (p "ttp-rc1" "r" z-1 r) (p "ttp-rc1" "a" z-1 a)
+              (p "ttp-rc1" "b" z-1 b) (p "ttp-rc1" "t" z-1 t)
+              (p "ttp-rc1" "k" z-1 k) (prec z 0 z-1 0)
+              (prec z-1 2 z-0 0)))))))
+  (traces ((recv k) (send k))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))))
+  (label 56)
+  (unrealized (0 0))
+  (preskeleton)
+  (origs (m (1 0)) (k (1 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (deflistener k)
+  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (operation nonce-test (displaced 1 2 init1 3) k (0 0)
+    (enc "keytag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+  (traces ((recv k) (send k))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (label 58)
+  (parent 56)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0 1) ((r r) (m m) (b b) (t t) (a a) (k k))))
+  (origs (m (1 0)) (k (1 0))))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (deflistener k)
+  (defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
+    (b b) (t t) (k k))
+  (precedes ((1 0) (2 0)) ((2 2) (0 0)))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (operation nonce-test (added-strand ttp-rc1 3) k (0 0)
+    (enc "keytag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+  (traces ((recv k) (send k))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (send
+        (cat "sync-rc-req"
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (label 59)
+  (parent 56)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0 1) ((r r) (m m) (b b) (t t) (a a) (k k))))
+  (origs (m (1 0)) (k (1 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (non-orig (privk "sign" b))
+  (goals
+    (forall ((r text) (m data) (b t a name) (k skey) (z strd))
+      (implies
+        (and (p "init1" z 3) (p "init1" "r" z r) (p "init1" "m" z m)
+          (p "init1" "a" z a) (p "init1" "b" z b) (p "init1" "t" z t)
+          (p "init1" "k" z k) (non (privk "sign" b)))
+        (or
+          (exists ((z-0 strd))
+            (and (p "resp1" z-0 2) (p "resp1" "r" z-0 r)
+              (p "resp1" "m" z-0 m) (p "resp1" "a" z-0 a)
+              (p "resp1" "b" z-0 b) (p "resp1" "t" z-0 t)
+              (p "resp1" "k" z-0 k) (prec z-0 1 z 1)))
+          (exists ((z-0 strd))
+            (and (p "resp3" z-0 2) (p "resp3" "e1" z-0 (enc m k))
+              (p "resp3" "e2" z-0
+                (enc "keytag"
+                  (enc "h"
+                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+              (p "resp3" "x" z-0 (enc "h" (cat "h" k)))
+              (p "resp3" "a" z-0 a) (p "resp3" "b" z-0 b)
+              (p "resp3" "t" z-0 t) (prec z-0 1 z 1)))))))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (label 60)
+  (unrealized (0 1))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp1 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 1))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r)))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (label 61)
+  (parent 60)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand resp3 2 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp3 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 1))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r)))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))))
+  (label 62)
+  (parent 60)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (non-orig (privk "sign" b))
+  (goals
+    (forall ((r text) (m data) (b t a name) (k skey) (z strd))
+      (implies
+        (and (p "init3" z 3) (p "init3" "r" z r) (p "init3" "m" z m)
+          (p "init3" "a" z a) (p "init3" "b" z b) (p "init3" "t" z t)
+          (p "init3" "k" z k) (non (privk "sign" b)))
+        (or
+          (exists ((z-0 strd))
+            (and (p "resp1" z-0 2) (p "resp1" "r" z-0 r)
+              (p "resp1" "m" z-0 m) (p "resp1" "a" z-0 a)
+              (p "resp1" "b" z-0 b) (p "resp1" "t" z-0 t)
+              (p "resp1" "k" z-0 k) (prec z-0 1 z 2)))
+          (exists ((z-0 strd))
+            (and (p "resp3" z-0 2) (p "resp3" "e1" z-0 (enc m k))
+              (p "resp3" "e2" z-0
+                (enc "keytag"
+                  (enc "h"
+                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+              (p "resp3" "x" z-0 (enc "h" (cat "h" k)))
+              (p "resp3" "a" z-0 a) (p "resp3" "b" z-0 b)
+              (p "resp3" "t" z-0 t) (prec z-0 1 z 2)))))))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (label 63)
+  (unrealized (0 2))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 1) (0 2)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp1 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 2))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (label 64)
+  (parent 63)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand resp3 2 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (precedes ((1 1) (0 2)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp3 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 2))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))))
+  (label 65)
+  (parent 63)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
+  (non-orig (privk "sign" b))
+  (goals
+    (forall ((r text) (m data) (b t a name) (k skey) (z strd))
+      (implies
+        (and (p "init5" z 4) (p "init5" "r" z r) (p "init5" "m" z m)
+          (p "init5" "a" z a) (p "init5" "b" z b) (p "init5" "t" z t)
+          (p "init5" "k" z k) (non (privk "sign" b)))
+        (or
+          (exists ((z-0 strd))
+            (and (p "resp1" z-0 2) (p "resp1" "r" z-0 r)
+              (p "resp1" "m" z-0 m) (p "resp1" "a" z-0 a)
+              (p "resp1" "b" z-0 b) (p "resp1" "t" z-0 t)
+              (p "resp1" "k" z-0 k) (prec z-0 1 z 1)))
+          (exists ((z-0 strd))
+            (and (p "resp3" z-0 2) (p "resp3" "e1" z-0 (enc m k))
+              (p "resp3" "e2" z-0
+                (enc "keytag"
+                  (enc "h"
+                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+              (p "resp3" "x" z-0 (enc "h" (cat "h" k)))
+              (p "resp3" "a" z-0 a) (p "resp3" "b" z-0 b)
+              (p "resp3" "t" z-0 t) (prec z-0 1 z 1)))))))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (label 66)
+  (unrealized (0 1) (0 3))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp1 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 1))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (label 67)
+  (parent 66)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (b t a name) (k skey))
+  (defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand resp3 2 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp3 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 1))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))))
+  (label 68)
+  (parent 66)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (r text) (m data) (a t b name) (k skey))
+  (defstrand resp1 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (non-orig (privk "sign" a))
+  (goals
+    (forall ((r text) (m data) (a t b name) (k skey) (z strd))
+      (implies
+        (and (p "resp1" z 3) (p "resp1" "r" z r) (p "resp1" "m" z m)
+          (p "resp1" "a" z a) (p "resp1" "b" z b) (p "resp1" "t" z t)
+          (p "resp1" "k" z k) (non (privk "sign" a)))
+        (exists ((z-0 strd))
+          (and (p "init5" z-0 1) (p "init5" "r" z-0 r)
+            (p "init5" "m" z-0 m) (p "init5" "a" z-0 a)
+            (p "init5" "b" z-0 b) (p "init5" "t" z-0 t)
+            (p "init5" "k" z-0 k) (prec z-0 0 z 0))))))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (label 69)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (r text) (m data) (a t b name) (k skey))
+  (defstrand resp1 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (added-strand init5 1)
+    (enc "eootag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" a)) (0 0))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r)))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))))
+  (label 70)
+  (parent 69)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((r r) (m m) (a a) (t t) (b b) (k k))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (r text) (m data) (a t b name) (k skey))
+  (defstrand resp2 4 (r r) (m m) (a a) (b b) (t t) (k k))
+  (non-orig (privk "sign" a))
+  (goals
+    (forall ((r text) (m data) (a t b name) (k skey) (z strd))
+      (implies
+        (and (p "resp2" z 4) (p "resp2" "r" z r) (p "resp2" "m" z m)
+          (p "resp2" "a" z a) (p "resp2" "b" z b) (p "resp2" "t" z t)
+          (p "resp2" "k" z k) (non (privk "sign" a)))
+        (exists ((z-0 strd))
+          (and (p "init5" z-0 1) (p "init5" "r" z-0 r)
+            (p "init5" "m" z-0 m) (p "init5" "a" z-0 a)
+            (p "init5" "b" z-0 b) (p "init5" "t" z-0 t)
+            (p "init5" "k" z-0 k) (prec z-0 0 z 0))))))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (label 71)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (r text) (m data) (a t b name) (k skey))
+  (defstrand resp2 4 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (added-strand init5 1)
+    (enc "eootag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" a)) (0 0))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r)))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))))
+  (label 72)
+  (parent 71)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((r r) (m m) (a a) (t t) (b b) (k k))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (e1 e2 x mesg) (a t b name))
+  (defstrand resp3 4 (e1 e1) (e2 e2) (x x) (a a) (b b) (t t))
+  (non-orig (privk "sign" a))
+  (goals
+    (forall ((e1 e2 x mesg) (a t b name) (z strd))
+      (implies
+        (and (p "resp3" z 4) (p "resp3" "e1" z e1) (p "resp3" "e2" z e2)
+          (p "resp3" "x" z x) (p "resp3" "a" z a) (p "resp3" "b" z b)
+          (p "resp3" "t" z t) (non (privk "sign" a)))
+        (or
+          (exists ((r text) (m data) (k skey) (z-0 strd))
+            (and (= e1 (enc m k))
+              (= e2
+                (enc "keytag"
+                  (enc "h"
+                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+              (= x (enc "h" (cat "h" k))) (p "init3" z-0 2)
+              (p "resp3" "e1" z (enc m k))
+              (p "resp3" "e2" z
+                (enc "keytag"
+                  (enc "h"
+                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+              (p "resp3" "x" z (enc "h" (cat "h" k)))
+              (p "init3" "r" z-0 r) (p "init3" "m" z-0 m)
+              (p "init3" "a" z-0 a) (p "init3" "b" z-0 b)
+              (p "init3" "t" z-0 t) (p "init3" "k" z-0 k)
+              (prec z-0 0 z 0) (prec z-0 1 z 3)))
+          (exists ((r r-0 text) (m data) (k skey) (z-0 z-1 strd))
+            (and (= e1 (enc m k))
+              (= e2
+                (enc "keytag"
+                  (enc "h"
+                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+              (= x (enc "h" (cat "h" k))) (p "init5" z-0 1)
+              (p "init3" z-1 2) (p "resp3" "e1" z (enc m k))
+              (p "resp3" "e2" z
+                (enc "keytag"
+                  (enc "h"
+                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+              (p "resp3" "x" z (enc "h" (cat "h" k)))
+              (p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
+              (p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
+              (p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
+              (p "init3" "r" z-1 r-0) (p "init3" "m" z-1 m)
+              (p "init3" "a" z-1 a) (p "init3" "b" z-1 b)
+              (p "init3" "t" z-1 t) (p "init3" "k" z-1 k)
+              (prec z-0 0 z 0) (prec z-1 1 z 3)))
+          (exists ((r text) (m data) (k skey) (z-0 strd))
+            (and (= e1 (enc m k))
+              (= e2
+                (enc "keytag"
+                  (enc "h"
+                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+              (= x (enc "h" (cat "h" k))) (p "init5" z-0 3)
+              (p "resp3" "e1" z (enc m k))
+              (p "resp3" "e2" z
+                (enc "keytag"
+                  (enc "h"
+                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+              (p "resp3" "x" z (enc "h" (cat "h" k)))
+              (p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
+              (p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
+              (p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
+              (prec z-0 0 z 0) (prec z-0 2 z 3)))
+          (exists ((r r-0 text) (m data) (k skey) (z-0 z-1 strd))
+            (and (= e1 (enc m k))
+              (= e2
+                (enc "keytag"
+                  (enc "h"
+                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+              (= x (enc "h" (cat "h" k))) (p "init5" z-0 1)
+              (p "init5" z-1 3) (p "resp3" "e1" z (enc m k))
+              (p "resp3" "e2" z
+                (enc "keytag"
+                  (enc "h"
+                    (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                      (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+              (p "resp3" "x" z (enc "h" (cat "h" k)))
+              (p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
+              (p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
+              (p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
+              (p "init5" "r" z-1 r-0) (p "init5" "m" z-1 m)
+              (p "init5" "a" z-1 a) (p "init5" "b" z-1 b)
+              (p "init5" "t" z-1 t) (p "init5" "k" z-1 k)
+              (prec z-0 0 z 0) (prec z-1 2 z 3)))))))
+  (traces
+    ((recv
+       (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+         (enc "eootag"
+           (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+           (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (label 73)
+  (unrealized (0 0) (0 3))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (r r-0 text) (m data) (a t b name) (k skey))
+  (defstrand resp3 4 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand init3 2 (r r-0) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((2 1) (0 3)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (added-strand init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 75)
+  (parent 73)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps
+    ((0)
+      ((e1 (enc m k))
+        (e2
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+        (x (enc "h" (cat "h" k))) (a a) (t t) (b b))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (a t b name) (k skey))
+  (defstrand resp3 4 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((1 1) (0 3)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 76)
+  (parent 73)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps
+    ((0)
+      ((e1 (enc m k))
+        (e2
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+        (x (enc "h" (cat "h" k))) (a a) (t t) (b b))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (a t b name) (k skey))
+  (defstrand resp3 4 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((1 2) (0 3)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 77)
+  (parent 73)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps
+    ((0)
+      ((e1 (enc m k))
+        (e2
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+        (x (enc "h" (cat "h" k))) (a a) (t t) (b b))))
+  (origs))
+
+(defskeleton wang
+  (vars (r r-0 text) (m data) (a t b name) (k skey))
+  (defstrand resp3 4 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand init5 3 (r r-0) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((2 2) (0 3)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (added-strand init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 78)
+  (parent 73)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps
+    ((0)
+      ((e1 (enc m k))
+        (e2
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+        (x (enc "h" (cat "h" k))) (a a) (t t) (b b))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (y x mesg) (a b t name))
+  (deflistener
+    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+      (privk "sign" t)))
+  (non-orig (privk "sign" t))
+  (goals
+    (forall ((y x mesg) (a b t name) (z strd))
+      (implies
+        (and (p "" z 2)
+          (p "" "x" z
+            (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+              (privk "sign" t))) (non (privk "sign" t)))
+        (or
+          (exists ((z-0 strd))
+            (and (p "ttp-ab1" z-0 3) (p "ttp-ab1" "y" z-0 y)
+              (p "ttp-ab1" "x" z-0 x) (p "ttp-ab1" "a" z-0 a)
+              (p "ttp-ab1" "b" z-0 b) (p "ttp-ab1" "t" z-0 t)
+              (prec z-0 2 z 0)))
+          (exists ((r text) (k skey) (z-0 strd))
+            (and (= x (enc "h" (cat "h" k))) (p "ttp-rc2" z-0 3)
+              (p "" "x" z
+                (enc "abcf"
+                  (enc "abrq" a b t y (enc "h" (cat "h" k))
+                    (privk "sign" a)) (privk "sign" t)))
+              (p "ttp-rc2" "y" z-0 y) (p "ttp-rc2" "r" z-0 r)
+              (p "ttp-rc2" "a" z-0 a) (p "ttp-rc2" "b" z-0 b)
+              (p "ttp-rc2" "t" z-0 t) (p "ttp-rc2" "k" z-0 k)
+              (prec z-0 2 z 0)))
+          (exists ((r text) (k skey) (z-0 strd))
+            (and (= x (enc "h" (cat "h" k))) (p "ttp-cf2" z-0 3)
+              (p "" "x" z
+                (enc "abcf"
+                  (enc "abrq" a b t y (enc "h" (cat "h" k))
+                    (privk "sign" a)) (privk "sign" t)))
+              (p "ttp-cf2" "y" z-0 y) (p "ttp-cf2" "r" z-0 r)
+              (p "ttp-cf2" "a" z-0 a) (p "ttp-cf2" "b" z-0 b)
+              (p "ttp-cf2" "t" z-0 t) (p "ttp-cf2" "k" z-0 k)
+              (prec z-0 2 z 0)))))))
+  (traces
+    ((recv
+       (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+         (privk "sign" t)))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (label 79)
+  (unrealized (0 0))
+  (origs)
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton wang
+  (vars (y x mesg) (a b t name))
+  (deflistener
+    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+      (privk "sign" t)))
+  (defstrand ttp-ab1 3 (y y) (x x) (a a) (b b) (t t))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sign" t))
+  (operation encryption-test (added-strand ttp-ab1 3)
+    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+      (privk "sign" t)) (0 0))
+  (traces
+    ((recv
+       (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+         (privk "sign" t)))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t))))
+    ((recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (label 80)
+  (parent 79)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((y y) (x x) (a a) (b b) (t t))))
+  (origs))
+
+(defskeleton wang
+  (vars (y mesg) (r text) (a b t name) (k skey))
+  (deflistener
+    (enc "abcf"
+      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+      (privk "sign" t)))
+  (defstrand ttp-rc2 3 (y y) (r r) (a a) (b b) (t t) (k k))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sign" t))
+  (operation encryption-test (added-strand ttp-rc2 3)
+    (enc "abcf"
+      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+      (privk "sign" t)) (0 0))
+  (traces
+    ((recv
+       (enc "abcf"
+         (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+         (privk "sign" t)))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t))))
+    ((recv
+       (cat (cat a b t y (enc "h" (cat "h" k)))
+         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           k r (pubk "encr" t))
+         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (label 81)
+  (parent 79)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((y y) (x (enc "h" (cat "h" k))) (a a) (b b) (t t))))
+  (origs))
+
+(defskeleton wang
+  (vars (y mesg) (r text) (a b t name) (k skey))
+  (deflistener
+    (enc "abcf"
+      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+      (privk "sign" t)))
+  (defstrand ttp-cf2 3 (y y) (r r) (a a) (b b) (t t) (k k))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sign" t))
+  (operation encryption-test (added-strand ttp-cf2 3)
+    (enc "abcf"
+      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+      (privk "sign" t)) (0 0))
+  (traces
+    ((recv
+       (enc "abcf"
+         (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+         (privk "sign" t)))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t))))
+    ((recv
+       (cat (cat a b t y (enc "h" (cat "h" k)))
+         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           k r (pubk "encr" t))
+         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (label 82)
+  (parent 79)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps ((0) ((y y) (x (enc "h" (cat "h" k))) (a a) (b b) (t t))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (y x mesg) (a b t name))
+  (defstrand ttp-ab1 3 (y y) (x x) (a a) (b b) (t t))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (goals
+    (forall ((y x mesg) (a b t name) (z strd))
+      (implies
+        (and (p "ttp-ab1" z 3) (p "ttp-ab1" "y" z y)
+          (p "ttp-ab1" "x" z x) (p "ttp-ab1" "a" z a)
+          (p "ttp-ab1" "b" z b) (p "ttp-ab1" "t" z t)
+          (non (privk "encr" t)) (non (privk "sign" a)))
+        (or
+          (exists ((r text) (m data) (k skey) (z-0 strd))
+            (and (= y (enc "h" (cat "h" (enc m k))))
+              (= x (enc "h" (cat "h" k))) (p "init3" z-0 2)
+              (p "ttp-ab1" "y" z (enc "h" (cat "h" (enc m k))))
+              (p "ttp-ab1" "x" z (enc "h" (cat "h" k)))
+              (p "init3" "r" z-0 r) (p "init3" "m" z-0 m)
+              (p "init3" "a" z-0 a) (p "init3" "b" z-0 b)
+              (p "init3" "t" z-0 t) (p "init3" "k" z-0 k)
+              (prec z-0 1 z 0)))
+          (exists ((r text) (m data) (k skey) (z-0 strd))
+            (and (= y (enc "h" (cat "h" (enc m k))))
+              (= x (enc "h" (cat "h" k))) (p "init5" z-0 3)
+              (p "ttp-ab1" "y" z (enc "h" (cat "h" (enc m k))))
+              (p "ttp-ab1" "x" z (enc "h" (cat "h" k)))
+              (p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
+              (p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
+              (p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
+              (prec z-0 2 z 0)))))))
+  (traces
+    ((recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (label 83)
+  (unrealized (0 0))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wang
+  (vars (r text) (m data) (a b t name) (k skey))
+  (defstrand ttp-ab1 3 (y (enc "h" (cat "h" (enc m k))))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 1) (0 0)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 0))
+  (traces
+    ((recv
+       (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+         (enc "h" (cat "h" k)) (privk "sign" a)))
+      (send
+        (cat "sync-abrq"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 84)
+  (parent 83)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps
+    ((0)
+      ((y (enc "h" (cat "h" (enc m k)))) (x (enc "h" (cat "h" k))) (a a)
+        (b b) (t t))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (a b t name) (k skey))
+  (defstrand ttp-ab1 3 (y (enc "h" (cat "h" (enc m k))))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 0))
+  (traces
+    ((recv
+       (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+         (enc "h" (cat "h" k)) (privk "sign" a)))
+      (send
+        (cat "sync-abrq"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 85)
+  (parent 83)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps
+    ((0)
+      ((y (enc "h" (cat "h" (enc m k)))) (x (enc "h" (cat "h" k))) (a a)
+        (b b) (t t))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wang
+  (vars (y mesg) (r text) (a b t name) (k skey))
+  (defstrand ttp-rc2 3 (y y) (r r) (a a) (b b) (t t) (k k))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (goals
+    (forall ((y mesg) (r text) (a b t name) (k skey) (z strd))
+      (implies
+        (and (p "ttp-rc2" z 3) (p "ttp-rc2" "y" z y)
+          (p "ttp-rc2" "r" z r) (p "ttp-rc2" "a" z a)
+          (p "ttp-rc2" "b" z b) (p "ttp-rc2" "t" z t)
+          (p "ttp-rc2" "k" z k) (non (privk "encr" t))
+          (non (privk "sign" a)))
+        (or
+          (exists ((m data) (z-0 strd))
+            (and (= y (enc "h" (cat "h" (enc m k)))) (p "init3" z-0 2)
+              (p "ttp-rc2" "y" z (enc "h" (cat "h" (enc m k))))
+              (p "init3" "r" z-0 r) (p "init3" "m" z-0 m)
+              (p "init3" "a" z-0 a) (p "init3" "b" z-0 b)
+              (p "init3" "t" z-0 t) (p "init3" "k" z-0 k)
+              (prec z-0 0 z 0) (prec z-0 1 z 1)))
+          (exists ((r-0 text) (m data) (z-0 z-1 strd))
+            (and (= y (enc "h" (cat "h" (enc m k)))) (p "init5" z-0 1)
+              (p "init3" z-1 2)
+              (p "ttp-rc2" "y" z (enc "h" (cat "h" (enc m k))))
+              (p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
+              (p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
+              (p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
+              (p "init3" "r" z-1 r-0) (p "init3" "m" z-1 m)
+              (p "init3" "a" z-1 a) (p "init3" "b" z-1 b)
+              (p "init3" "t" z-1 t) (p "init3" "k" z-1 k)
+              (prec z-0 0 z 0) (prec z-1 1 z 1)))
+          (exists ((m data) (z-0 strd))
+            (and (= y (enc "h" (cat "h" (enc m k)))) (p "init5" z-0 3)
+              (p "ttp-rc2" "y" z (enc "h" (cat "h" (enc m k))))
+              (p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
+              (p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
+              (p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
+              (prec z-0 0 z 0) (prec z-0 2 z 1)))
+          (exists ((r-0 text) (m data) (z-0 z-1 strd))
+            (and (= y (enc "h" (cat "h" (enc m k)))) (p "init5" z-0 1)
+              (p "init5" z-1 3)
+              (p "ttp-rc2" "y" z (enc "h" (cat "h" (enc m k))))
+              (p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
+              (p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
+              (p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
+              (p "init5" "r" z-1 r-0) (p "init5" "m" z-1 m)
+              (p "init5" "a" z-1 a) (p "init5" "b" z-1 b)
+              (p "init5" "t" z-1 t) (p "init5" "k" z-1 k)
+              (prec z-0 0 z 0) (prec z-1 2 z 1)))))))
+  (traces
+    ((recv
+       (cat (cat a b t y (enc "h" (cat "h" k)))
+         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           k r (pubk "encr" t))
+         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (label 86)
+  (unrealized (0 0) (0 1))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (r r-0 text) (m data) (a b t name) (k skey))
+  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
+    (b b) (t t) (k k))
+  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand init3 2 (r r-0) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((2 1) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 88)
+  (parent 86)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps
+    ((0)
+      ((y (enc "h" (cat "h" (enc m k)))) (r r) (a a) (b b) (t t)
+        (k k))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (a b t name) (k skey))
+  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
+    (b b) (t t) (k k))
+  (defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((1 1) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 89)
+  (parent 86)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps
+    ((0)
+      ((y (enc "h" (cat "h" (enc m k)))) (r r) (a a) (b b) (t t)
+        (k k))))
+  (origs))
+
+(defskeleton wang
+  (vars (r text) (m data) (a b t name) (k skey))
+  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
+    (b b) (t t) (k k))
+  (defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((1 2) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 90)
+  (parent 86)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps
+    ((0)
+      ((y (enc "h" (cat "h" (enc m k)))) (r r) (a a) (b b) (t t)
+        (k k))))
+  (origs))
+
+(defskeleton wang
+  (vars (r r-0 text) (m data) (a b t name) (k skey))
+  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
+    (b b) (t t) (k k))
+  (defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
+  (defstrand init5 3 (r r-0) (m m) (a a) (b b) (t t) (k k))
+  (precedes ((1 0) (0 0)) ((2 2) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 91)
+  (parent 86)
+  (realized)
+  (shape)
+  (satisfies yes)
+  (maps
+    ((0)
+      ((y (enc "h" (cat "h" (enc m k)))) (r r) (a a) (b b) (t t)
+        (k k))))
+  (origs))
+
+(comment "Nothing left to do")
diff --git a/tst/wang-key-hash.tst b/tst/wang-key-hash.tst
--- a/tst/wang-key-hash.tst
+++ b/tst/wang-key-hash.tst
@@ -1,6 +1,6 @@
 (herald "Wang's Fair Exchange Protocol" (bound 10))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/wang-key-hash.scm")
 (comment "Strand count bounded at 10")
 
@@ -569,6 +569,7 @@
   (non-orig (privk "encr" t))
   (uniq-orig m k)
   (operation nonce-test (added-listener k) m (1 0) (enc m k))
+  (strand-map 0 1)
   (traces
     ((send
        (cat
@@ -605,6 +606,7 @@
       (enc "h"
         (cat "h" a b t (enc "h" (cat "h" (enc m k)))
           (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+  (strand-map 2 0 1)
   (traces ((recv m) (send m)) ((recv k) (send k))
     ((send
        (cat
@@ -653,6 +655,7 @@
       (enc "h"
         (cat "h" a b t (enc "h" (cat "h" (enc m k)))
           (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+  (strand-map 0 1 2)
   (traces
     ((send
        (cat
@@ -751,6 +754,7 @@
   (non-orig (privk "encr" t))
   (uniq-orig m k)
   (operation generalization deleted (1 0))
+  (strand-map 0 2)
   (traces ((recv m) (send m))
     ((send
        (cat
@@ -796,6 +800,7 @@
   (non-orig (privk "encr" t))
   (uniq-orig m k)
   (operation generalization deleted (2 0))
+  (strand-map 0 1 3)
   (traces
     ((send
        (cat
@@ -1458,6 +1463,7 @@
       (enc "h"
         (cat "h" a b t (enc "h" (cat "h" (enc m k)))
           (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+  (strand-map 1 0)
   (traces ((recv k) (send k))
     ((send
        (cat
@@ -1507,6 +1513,7 @@
       (enc "h"
         (cat "h" a b t (enc "h" (cat "h" (enc m k)))
           (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+  (strand-map 0 1)
   (traces
     ((send
        (cat
@@ -2149,6 +2156,7 @@
           (cat "h" a b t (enc "h" (cat "h" (enc m k)))
             (enc "h" (cat "h" k)))) k r (pubk "encr" t))
       (privk "sign" b)) (0 1))
+  (strand-map 0)
   (traces
     ((send
        (cat
@@ -2233,6 +2241,7 @@
           (cat "h" a b t (enc "h" (cat "h" (enc m k)))
             (enc "h" (cat "h" k)))) k r (pubk "encr" t))
       (privk "sign" b)) (0 1))
+  (strand-map 0)
   (traces
     ((send
        (cat
@@ -2864,6 +2873,7 @@
           (cat "h" a b t (enc "h" (cat "h" (enc m k)))
             (enc "h" (cat "h" k)))) k r (pubk "encr" t))
       (privk "sign" b)) (0 2))
+  (strand-map 0)
   (traces
     ((send
        (cat
@@ -2951,6 +2961,7 @@
           (cat "h" a b t (enc "h" (cat "h" (enc m k)))
             (enc "h" (cat "h" k)))) k r (pubk "encr" t))
       (privk "sign" b)) (0 2))
+  (strand-map 0)
   (traces
     ((send
        (cat
@@ -3595,6 +3606,7 @@
           (cat "h" a b t (enc "h" (cat "h" (enc m k)))
             (enc "h" (cat "h" k)))) k r (pubk "encr" t))
       (privk "sign" b)) (0 1))
+  (strand-map 0)
   (traces
     ((send
        (cat
@@ -3692,6 +3704,7 @@
           (cat "h" a b t (enc "h" (cat "h" (enc m k)))
             (enc "h" (cat "h" k)))) k r (pubk "encr" t))
       (privk "sign" b)) (0 1))
+  (strand-map 0)
   (traces
     ((send
        (cat
@@ -4333,6 +4346,7 @@
           (cat "h" a b t (enc "h" (cat "h" (enc m k)))
             (enc "h" (cat "h" k)))) k r (pubk "encr" t))
       (privk "sign" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (cat
@@ -4985,6 +4999,7 @@
           (cat "h" a b t (enc "h" (cat "h" (enc m k)))
             (enc "h" (cat "h" k)))) k r (pubk "encr" t))
       (privk "sign" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (cat
@@ -5643,6 +5658,7 @@
           (cat "h" a b t (enc "h" (cat "h" (enc m k)))
             (enc "h" (cat "h" k)))) k r (pubk "encr" t))
       (privk "sign" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (cat
@@ -5763,6 +5779,7 @@
   (operation encryption-test (added-strand init3 2)
     (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
       (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat
@@ -5912,6 +5929,7 @@
   (operation encryption-test (displaced 1 2 init3 2)
     (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
       (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat
@@ -6044,6 +6062,7 @@
   (operation encryption-test (displaced 1 2 init5 3)
     (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
       (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat
@@ -6187,6 +6206,7 @@
   (operation encryption-test (added-strand init5 3)
     (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
       (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat
@@ -6857,6 +6877,7 @@
   (operation encryption-test (added-strand ttp-ab1 3)
     (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
       (privk "sign" t)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
@@ -6889,6 +6910,7 @@
     (enc "abcf"
       (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
       (privk "sign" t)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (enc "abcf"
@@ -6941,6 +6963,7 @@
     (enc "abcf"
       (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
       (privk "sign" t)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (enc "abcf"
@@ -7502,6 +7525,7 @@
   (operation encryption-test (added-strand init3 2)
     (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
       (enc "h" (cat "h" k)) (privk "sign" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
@@ -7554,6 +7578,7 @@
   (operation encryption-test (added-strand init5 3)
     (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
       (enc "h" (cat "h" k)) (privk "sign" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
@@ -8153,6 +8178,7 @@
           (cat "h" a b t (enc "h" (cat "h" (enc m k)))
             (enc "h" (cat "h" k)))) k r (pubk "encr" t))
       (privk "sign" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (cat
@@ -8228,6 +8254,7 @@
   (operation encryption-test (added-strand init3 2)
     (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
       (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat
@@ -8327,6 +8354,7 @@
   (operation encryption-test (displaced 1 2 init3 2)
     (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
       (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat
@@ -8409,6 +8437,7 @@
   (operation encryption-test (displaced 1 2 init5 3)
     (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
       (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat
@@ -8502,6 +8531,7 @@
   (operation encryption-test (added-strand init5 3)
     (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
       (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat
@@ -9148,6 +9178,7 @@
           (cat "h" a b t (enc "h" (cat "h" (enc m k)))
             (enc "h" (cat "h" k)))) k r (pubk "encr" t))
       (privk "sign" a)) (0 0))
+  (strand-map 0)
   (traces
     ((recv
        (cat
@@ -9223,6 +9254,7 @@
   (operation encryption-test (added-strand init3 2)
     (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
       (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat
@@ -9322,6 +9354,7 @@
   (operation encryption-test (displaced 1 2 init3 2)
     (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
       (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat
@@ -9404,6 +9437,7 @@
   (operation encryption-test (displaced 1 2 init5 3)
     (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
       (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat
@@ -9497,6 +9531,7 @@
   (operation encryption-test (added-strand init5 3)
     (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
       (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (strand-map 0 1)
   (traces
     ((recv
        (cat
diff --git a/tst/wang-key-hash_shapes.tst b/tst/wang-key-hash_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/wang-key-hash_shapes.tst
@@ -0,0 +1,9071 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Wang's Fair Exchange Protocol" (bound 10))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/wang-key-hash.scm")
+
+(comment "Strand count bounded at 10")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init1 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (deflistener m)
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (comment "Experiment 1 to prove Lemma 4.1.")
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))) ((recv m) (send m)))
+  (label 0)
+  (unrealized (1 0))
+  (preskeleton)
+  (origs (m (0 0)) (k (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (deflistener m)
+  (defstrand init1 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (operation generalization deleted (1 0))
+  (traces ((recv m) (send m))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (label 5)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((1 0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs (m (1 0)) (k (1 0))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init1 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (deflistener m)
+  (defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (k k) (r r)
+    (a a) (b b) (t t))
+  (precedes ((0 0) (2 0)) ((2 2) (1 0)))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (operation generalization deleted (2 0))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))) ((recv m) (send m))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (send
+        (cat "sync-rc-req"
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (label 6)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs (m (0 0)) (k (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init1 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (deflistener k)
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (comment "Experiment 2 to prove Lemma 4.1.")
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))) ((recv k) (send k)))
+  (label 7)
+  (unrealized (1 0))
+  (preskeleton)
+  (origs (m (0 0)) (k (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (deflistener k)
+  (defstrand init1 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (operation nonce-test (displaced 0 2 init1 3) k (1 0)
+    (enc "keytag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+  (traces ((recv k) (send k))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (label 9)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((1 0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs (m (1 0)) (k (1 0))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init1 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (deflistener k)
+  (defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (k k) (r r)
+    (a a) (b b) (t t))
+  (precedes ((0 0) (2 0)) ((2 2) (1 0)))
+  (non-orig (privk "encr" t))
+  (uniq-orig m k)
+  (operation nonce-test (added-strand ttp-rc1 3) k (1 0)
+    (enc "keytag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))) ((recv k) (send k))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (send
+        (cat "sync-rc-req"
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (send (cat k r))))
+  (label 10)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((0 1) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs (m (0 0)) (k (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init1 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (non-orig (privk "sign" b))
+  (comment "First of three experiments to prove Lemma 4.2, clause 1.")
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (label 11)
+  (unrealized (0 1))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init1 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand resp1 2 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp1 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 1))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r)))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (label 12)
+  (parent 11)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init1 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand resp3 2 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp3 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 1))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r)))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))))
+  (label 13)
+  (parent 11)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init3 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (non-orig (privk "sign" b))
+  (comment "Second of three experiments to prove Lemma 4.2, clause 1.")
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (label 14)
+  (unrealized (0 2))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init3 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand resp1 2 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 1) (0 2)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp1 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 2))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (label 15)
+  (parent 14)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init3 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand resp3 2 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (precedes ((1 1) (0 2)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp3 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 2))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))))
+  (label 16)
+  (parent 14)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init5 4 (m m) (k k) (r r) (a a) (b b) (t t))
+  (non-orig (privk "sign" b))
+  (comment "Third of three experiments to prove Lemma 4.2, clause 1.")
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (label 17)
+  (unrealized (0 1) (0 3))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init5 4 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand resp1 2 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp1 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 1))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (label 18)
+  (parent 17)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (b t a name))
+  (defstrand init5 4 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand resp3 2 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (precedes ((1 1) (0 1)))
+  (non-orig (privk "sign" b))
+  (operation encryption-test (added-strand resp3 2)
+    (enc "eortag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" b)) (0 1))
+  (traces
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))))
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))))
+  (label 19)
+  (parent 17)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a t b name))
+  (defstrand resp1 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (non-orig (privk "sign" a))
+  (comment "First of two experiments to prove Lemma 4.2, clause 2.")
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (label 20)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a t b name))
+  (defstrand resp1 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand init5 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (added-strand init5 1)
+    (enc "eootag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" a)) (0 0))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r)))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))))
+  (label 21)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (t t) (m m) (r r) (k k) (b b))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a t b name))
+  (defstrand resp2 4 (m m) (k k) (r r) (a a) (b b) (t t))
+  (non-orig (privk "sign" a))
+  (comment "Second of two experiments to prove Lemma 4.2, clause 2.")
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (label 22)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a t b name))
+  (defstrand resp2 4 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand init5 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (added-strand init5 1)
+    (enc "eootag"
+      (enc "h"
+        (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k))))
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+      (privk "sign" a)) (0 0))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r)))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))))
+  (label 23)
+  (parent 22)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (t t) (m m) (r r) (k k) (b b))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (e1 e2 x mesg) (a t b name))
+  (defstrand resp3 4 (e1 e1) (e2 e2) (x x) (a a) (b b) (t t))
+  (non-orig (privk "sign" a))
+  (comment "Experiments to prove Lemma 4.2, clause 3.")
+  (traces
+    ((recv
+       (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+         (enc "eootag"
+           (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+           (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (label 24)
+  (unrealized (0 0) (0 3))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r r-0 text) (a t b name))
+  (defstrand resp3 4 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init5 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand init3 2 (m m) (k k) (r r-0) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((2 1) (0 3)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (added-strand init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 26)
+  (parent 24)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (t t) (b b) (e1 (enc m k))
+        (e2
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+        (x (enc "h" (cat "h" k))))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a t b name))
+  (defstrand resp3 4 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init3 2 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((1 1) (0 3)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 27)
+  (parent 24)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (t t) (b b) (e1 (enc m k))
+        (e2
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+        (x (enc "h" (cat "h" k))))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a t b name))
+  (defstrand resp3 4 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init5 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((1 2) (0 3)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 28)
+  (parent 24)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (t t) (b b) (e1 (enc m k))
+        (e2
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+        (x (enc "h" (cat "h" k))))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r r-0 text) (a t b name))
+  (defstrand resp3 4 (e1 (enc m k))
+    (e2
+      (enc "keytag"
+        (enc "h"
+          (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init5 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand init5 3 (m m) (k k) (r r-0) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((2 2) (0 3)))
+  (non-orig (privk "sign" a))
+  (operation encryption-test (added-strand init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 29)
+  (parent 24)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (t t) (b b) (e1 (enc m k))
+        (e2
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t)))
+        (x (enc "h" (cat "h" k))))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (y x mesg) (a b t name))
+  (deflistener
+    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+      (privk "sign" t)))
+  (non-orig (privk "sign" t))
+  (comment "Experiments to prove Lemma 4.3, clause 1.")
+  (traces
+    ((recv
+       (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+         (privk "sign" t)))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (label 30)
+  (unrealized (0 0))
+  (origs)
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton wang
+  (vars (y x mesg) (a b t name))
+  (deflistener
+    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+      (privk "sign" t)))
+  (defstrand ttp-ab1 3 (y y) (x x) (a a) (b b) (t t))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sign" t))
+  (operation encryption-test (added-strand ttp-ab1 3)
+    (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+      (privk "sign" t)) (0 0))
+  (traces
+    ((recv
+       (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+         (privk "sign" t)))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t))))
+    ((recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (label 31)
+  (parent 30)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (y y) (x x))))
+  (origs))
+
+(defskeleton wang
+  (vars (y mesg) (k skey) (r text) (a b t name))
+  (deflistener
+    (enc "abcf"
+      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+      (privk "sign" t)))
+  (defstrand ttp-rc2 3 (y y) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sign" t))
+  (operation encryption-test (added-strand ttp-rc2 3)
+    (enc "abcf"
+      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+      (privk "sign" t)) (0 0))
+  (traces
+    ((recv
+       (enc "abcf"
+         (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+         (privk "sign" t)))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t))))
+    ((recv
+       (cat (cat a b t y (enc "h" (cat "h" k)))
+         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           k r (pubk "encr" t))
+         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (label 32)
+  (parent 30)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (y y) (x (enc "h" (cat "h" k))))))
+  (origs))
+
+(defskeleton wang
+  (vars (y mesg) (k skey) (r text) (a b t name))
+  (deflistener
+    (enc "abcf"
+      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+      (privk "sign" t)))
+  (defstrand ttp-cf2 3 (y y) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "sign" t))
+  (operation encryption-test (added-strand ttp-cf2 3)
+    (enc "abcf"
+      (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+      (privk "sign" t)) (0 0))
+  (traces
+    ((recv
+       (enc "abcf"
+         (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+         (privk "sign" t)))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t))))
+    ((recv
+       (cat (cat a b t y (enc "h" (cat "h" k)))
+         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           k r (pubk "encr" t))
+         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (label 33)
+  (parent 30)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (y y) (x (enc "h" (cat "h" k))))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (y x mesg) (a b t name))
+  (defstrand ttp-ab1 3 (y y) (x x) (a a) (b b) (t t))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (comment "Experiment 1 to prove Lemma 4.3, clause 2.")
+  (traces
+    ((recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (label 34)
+  (unrealized (0 0))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a b t name))
+  (defstrand ttp-ab1 3 (y (enc "h" (cat "h" (enc m k))))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init3 2 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 1) (0 0)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 0))
+  (traces
+    ((recv
+       (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+         (enc "h" (cat "h" k)) (privk "sign" a)))
+      (send
+        (cat "sync-abrq"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 35)
+  (parent 34)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((y (enc "h" (cat "h" (enc m k)))) (x (enc "h" (cat "h" k))) (a a)
+        (b b) (t t))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a b t name))
+  (defstrand ttp-ab1 3 (y (enc "h" (cat "h" (enc m k))))
+    (x (enc "h" (cat "h" k))) (a a) (b b) (t t))
+  (defstrand init5 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 2) (0 0)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 0))
+  (traces
+    ((recv
+       (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+         (enc "h" (cat "h" k)) (privk "sign" a)))
+      (send
+        (cat "sync-abrq"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 36)
+  (parent 34)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((y (enc "h" (cat "h" (enc m k)))) (x (enc "h" (cat "h" k))) (a a)
+        (b b) (t t))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (y mesg) (k skey) (r text) (a b t name))
+  (defstrand ttp-rc2 3 (y y) (k k) (r r) (a a) (b b) (t t))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (comment "Experiment 2 to prove Lemma 4.3, clause 2.")
+  (traces
+    ((recv
+       (cat (cat a b t y (enc "h" (cat "h" k)))
+         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           k r (pubk "encr" t))
+         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (label 37)
+  (unrealized (0 0) (0 1))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r r-0 text) (a b t name))
+  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (k k) (r r)
+    (a a) (b b) (t t))
+  (defstrand init5 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand init3 2 (m m) (k k) (r r-0) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((2 1) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 39)
+  (parent 37)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (t t) (r r) (k k)
+        (y (enc "h" (cat "h" (enc m k)))))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a b t name))
+  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (k k) (r r)
+    (a a) (b b) (t t))
+  (defstrand init3 2 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((1 1) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 40)
+  (parent 37)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (t t) (r r) (k k)
+        (y (enc "h" (cat "h" (enc m k)))))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a b t name))
+  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (k k) (r r)
+    (a a) (b b) (t t))
+  (defstrand init5 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((1 2) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 41)
+  (parent 37)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (t t) (r r) (k k)
+        (y (enc "h" (cat "h" (enc m k)))))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r r-0 text) (a b t name))
+  (defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (k k) (r r)
+    (a a) (b b) (t t))
+  (defstrand init5 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand init5 3 (m m) (k k) (r r-0) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((2 2) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "rcrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 42)
+  (parent 37)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (t t) (r r) (k k)
+        (y (enc "h" (cat "h" (enc m k)))))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wang basic
+  (defrole init1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (send (cat k r))))
+  (defrole init2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init3
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole init4
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
+  (defrole init5
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))))
+  (defrole resp1
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b))) (recv (cat k r))))
+  (defrole resp2
+    (vars (a b t name) (m data) (r text) (k skey))
+    (trace
+      (recv
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k))) (enc m k)
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))))
+      (send
+        (cat
+          (cat a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (enc "eootag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b))
+          (enc "rcrq"
+            (cat a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h"
+                (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                  (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+            (privk "sign" b)))) (recv (cat k r))))
+  (defrole resp3
+    (vars (a b t name) (e1 e2 x mesg))
+    (trace
+      (recv
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))))
+      (send
+        (cat (cat a b t (enc "h" (cat "h" e1)) x) e2
+          (enc "eootag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
+            (privk "sign" b))
+          (enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
+            (privk "sign" b))))
+      (recv
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab1
+    (vars (a b t name) (y x mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
+      (send
+        (enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-ab2
+    (vars (a b t name) (y x e mesg))
+    (trace (recv (enc "abrq" a b t y x (privk "sign" a)))
+      (recv
+        (cat "sync-abrq"
+          (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+            (privk "sign" b))))
+      (send
+        (enc "eortag" (enc "h" (cat "h" a b t y x)) e
+          (privk "sign" b)))))
+  (defrole ttp-rc1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
+  (defrole ttp-rc2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-rc-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defrole ttp-cf1
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (send
+        (enc (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
+  (defrole ttp-cf2
+    (vars (a b t name) (r text) (k skey) (y mesg))
+    (trace
+      (recv
+        (cat (cat a b t y (enc "h" (cat "h" k)))
+          (enc "keytag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+            (pubk "encr" t))
+          (enc "eootag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" a))
+          (enc "eortag"
+            (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))
+          (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+            (enc "keytag"
+              (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+              (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wang
+  (vars (y mesg) (k skey) (r text) (a b t name))
+  (defstrand ttp-cf2 3 (y y) (k k) (r r) (a a) (b b) (t t))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (comment "Experiment 3 to prove Lemma 4.3, clause 2.")
+  (traces
+    ((recv
+       (cat (cat a b t y (enc "h" (cat "h" k)))
+         (enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           k r (pubk "encr" t))
+         (enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" a))
+         (enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))
+         (enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
+             (pubk "encr" t)) (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
+          (privk "sign" t)))))
+  (label 43)
+  (unrealized (0 0) (0 1))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r r-0 text) (a b t name))
+  (defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (k k) (r r)
+    (a a) (b b) (t t))
+  (defstrand init5 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand init3 2 (m m) (k k) (r r-0) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((2 1) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "cfrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 45)
+  (parent 43)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (t t) (r r) (k k)
+        (y (enc "h" (cat "h" (enc m k)))))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a b t name))
+  (defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (k k) (r r)
+    (a a) (b b) (t t))
+  (defstrand init3 2 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((1 1) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init3 2)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "cfrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 46)
+  (parent 43)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (t t) (r r) (k k)
+        (y (enc "h" (cat "h" (enc m k)))))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r text) (a b t name))
+  (defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (k k) (r r)
+    (a a) (b b) (t t))
+  (defstrand init5 3 (m m) (k k) (r r) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((1 2) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (displaced 1 2 init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "cfrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 47)
+  (parent 43)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (t t) (r r) (k k)
+        (y (enc "h" (cat "h" (enc m k)))))))
+  (origs))
+
+(defskeleton wang
+  (vars (m data) (k skey) (r r-0 text) (a b t name))
+  (defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (k k) (r r)
+    (a a) (b b) (t t))
+  (defstrand init5 1 (m m) (k k) (r r) (a a) (b b) (t t))
+  (defstrand init5 3 (m m) (k k) (r r-0) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)) ((2 2) (0 1)))
+  (non-orig (privk "encr" t) (privk "sign" a))
+  (operation encryption-test (added-strand init5 3)
+    (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+      (enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
+  (traces
+    ((recv
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a))
+         (enc "eortag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))
+         (enc "cfrq"
+           (cat a b t (enc "h" (cat "h" (enc m k)))
+             (enc "h" (cat "h" k)))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" b))))
+      (recv
+        (cat "sync-cf-req"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a))))
+      (send
+        (enc "abcf"
+          (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+            (enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r (pubk "encr" t))
+           (privk "sign" a)))))
+    ((send
+       (cat
+         (cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
+         (enc m k)
+         (enc "keytag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+         (enc "eootag"
+           (enc "h"
+             (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+               (enc "h" (cat "h" k))))
+           (enc "keytag"
+             (enc "h"
+               (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                 (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+           (privk "sign" a))))
+      (recv
+        (enc "eortag"
+          (enc "h"
+            (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+              (enc "h" (cat "h" k))))
+          (enc "keytag"
+            (enc "h"
+              (cat "h" a b t (enc "h" (cat "h" (enc m k)))
+                (enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
+          (privk "sign" b)))
+      (send
+        (enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
+          (enc "h" (cat "h" k)) (privk "sign" a)))))
+  (label 48)
+  (parent 43)
+  (realized)
+  (shape)
+  (maps
+    ((0)
+      ((a a) (b b) (t t) (r r) (k k)
+        (y (enc "h" (cat "h" (enc m k)))))))
+  (origs))
+
+(comment "Nothing left to do")
diff --git a/tst/wang.lisp b/tst/wang.lisp
deleted file mode 100644
--- a/tst/wang.lisp
+++ /dev/null
@@ -1,434 +0,0 @@
-(herald "Wang's Fair Exchange Protocol" (bound 10))
-
-;; CPSA input file to represent
-;; Wang's Fair Exchange Protocol
-
-;; This macro implements the CPSA
-;; convention of regarding a hash as
-;; an asymmetric encryption.  The
-;; decryption key inverse to (pubk
-;; hash) is assumed non-originating
-;; in roles using hashing.
-
-(defmacro (hash x)
-  (enc x (pubk hash_id)))
-
-;; Wang's encrypted format for the
-;; message payload.  Observe that m,
-;; k get their values from the
-;; like-named messages in the context
-;; where the macro is expanded.
-
-(defmacro (em)
-  (enc m k))
-
-;; The session label L as a fn of
-;; the values that *should be* the
-;; hashes of the encrypted message EM
-;; and the session key K.
-
-(defmacro (l-prime y x)
-  (cat a b t y x))
-
-;; The recipient can check that a
-;; session label has an l-prime where
-;; y is the hash of another parameter.
-;; Hence recipient roles use l-star.
-
-(defmacro (l-star e1 x)
-  (l-prime (hash e1) x))
-
-;; The Evidence of Origin is checked
-;; to be this fn of other parameters
-;; available to the recipient.
-
-(defmacro (eoo-star x e1 e2)
-  (enc (cat "eootag"
-	    (hash (l-star e1 x)) e2)
-       (privk "sign" a)))
-
-;; The Evidence of Receipt is computed
-;; as this fn of other parameters
-;; available to the recipient.
-
-(defmacro (eor-star x e1 e2)
-  (enc (cat "eortag"
-	    (hash (l-star e1 x)) e2)
-       (privk "sign" b)))
-
-;; The Recovery Request as computed by
-;; the recipient.
-
-(defmacro (rr-star x e1 e2)
-  (cat (l-star e1 x) e2
-       (eoo-star x e1 e2)
-       (eor-star x e1 e2)
-       (enc (cat "rcrq" (l-star e1 x) e2)
-            (privk "sign" b))))
-
-;; The Abort Token is checked
-;; to be this fn of other parameters
-;; available to the recipient.
-
-(defmacro (at-star e1 x)
-  (enc (enc "abrq" (l-star e1 x)
-            (privk "sign" a))
-       (privk "sign" t)))
-
-;; How the initiator computes the
-;; encrypted key package:
-
-(defmacro (ek l)
-  (enc (cat "keytag" (hash l) k r)
-       (pubk "encr" t)))
-
-;; The Initiator's computed
-;; version of L.
-
-(defmacro (l)
-  (l-prime (hash (enc m k)) (hash k)))
-
-;; The TTP can check that the session
-;; label L is this fn of other
-;; parameters available to the TTP.
-
-(defmacro (l-prime-prime y)
-  (cat a b t y (hash k)))
-
-;; The TTP can check that the EOO
-;; is this fn of other parameters
-;; available to the TTP.
-
-(defmacro (eoo-prime-prime y)
-  (enc (cat "eootag"
-            (hash (l-prime-prime y))
-	    (ek (l-prime-prime y)))
-       (privk "sign" a)))
-
-;; The TTP can check that the EOR
-;; is this fn of other parameters
-;; available to the TTP.
-
-(defmacro (eor-prime-prime y)
-  (enc (cat "eortag"
-	    (hash (l-prime-prime y))
-	    (ek (l-prime-prime y)))
-       (privk "sign" b)))
-
-;; The TTP can check that the RR
-;; is this fn of other parameters
-;; available to the TTP.
-
-(defmacro (rr-prime-prime y)
-  (cat (l-prime-prime y)
-       (ek (l-prime-prime y))
-       (eoo-prime-prime y)
-       (eor-prime-prime y)
-       (enc "rcrq" (l-prime-prime y)
-	    (ek (l-prime-prime y))
-            (privk "sign" b))))
-
-;; The TTP can check that the Confirmation
-;; Request is this fn of other parameters
-;; available to the TTP.
-
-(defmacro (cf-prime-prime y)
-  (cat (l-prime-prime y) (ek (l-prime-prime y))
-       (eoo-prime-prime y) (eor-prime-prime y)
-       (enc "cfrq" (l-prime-prime y)
-	    (ek (l-prime-prime y))
-            (privk "sign" b))))
-
-;; Defn of Wang's Fair Exchange Protocol.
-;; Closely follows the presentation in the
-;; figures in Section 3.  In the TTP roles,
-;; we have put a dummy send or receive in place
-;; of the state synchronization event to keep
-;; the indices matching the spec.
-
-(defprotocol wang basic
-
-  ;; Successful initiator run with no TTP involvement
-
-  (defrole init1
-    (vars (a b t hash_id name) (m data) (r text) (k skey))
-    (trace
-     (send (cat (l) (enc m k) (ek (l))
-                (eoo-star (hash k) (enc m k) (ek (l)))))
-     (recv (eor-star (hash k) (enc m k) (ek (l))))
-     (send (cat k r)))
-    (non-orig (privk hash_id)))
-
-  ;; Aborted initiator run
-
-  (defrole init2
-    (vars (a b t hash_id name) (m data) (r text) (k skey))
-    (trace
-     (send (cat (l) (enc m k) (ek (l))
-                (eoo-star (hash k) (enc m k) (ek (l)))))
-     (send (enc "abrq" (l) (privk "sign" a)))
-     (recv (enc "abcf"
-                (enc "abrq" (l) (privk "sign" a))
-                (privk "sign" t))))
-    (non-orig (privk hash_id)))
-
-  ;; Initiator run with abort request and forced recovery
-
-  (defrole init3
-    (vars (a b t hash_id name) (m data) (r text) (k skey))
-    (trace
-     (send (cat (l) (enc m k) (ek (l))
-                (eoo-star (hash k) (enc m k) (ek (l)))))
-     (send (enc "abrq" (l) (privk "sign" a)))
-     (recv (eor-star (hash k) (enc m k) (ek (l)))))
-    (non-orig (privk hash_id)))
-
-  ;; Aborted initiator run, but with EOR received
-
-  (defrole init4
-    (vars (a b t hash_id name) (m data) (r text) (k skey))
-    (trace
-     (send (cat (l) (enc m k) (ek (l))
-                (eoo-star (hash k) (enc m k) (ek (l)))))
-     (recv (eor-star (hash k) (enc m k) (ek (l))))
-     (send (enc "abrq" (l) (privk "sign" a)))
-     (recv (enc "abcf"
-                (enc "abrq" (l) (privk "sign" a))
-                (privk "sign" t))))
-    (non-orig (privk hash_id)))
-
-  ;; Initiator run with abort requested after EOR received,
-  ;; but recovery forced
-
-  (defrole init5
-    (vars (a b t hash_id name) (m data) (r text) (k skey))
-    (trace
-     (send (cat (l) (enc m k) (ek (l))
-                (eoo-star (hash k) (enc m k) (ek (l)))))
-     (recv (eor-star (hash k) (enc m k) (ek (l))))
-     (send (enc "abrq" (l) (privk "sign" a)))
-     (recv (eor-star (hash k) (enc m k) (ek (l)))))
-    (non-orig (privk hash_id)))
-
-  ;; Successful responder run with no TTP involvement
-
-  (defrole resp1
-    (vars (a b t hash_id name) (m data) (r text) (k skey))
-    (trace
-     (recv (cat (l) (enc m k) (ek (l))
-                (eoo-star (hash k) (enc m k) (ek (l)))))
-     (send (eor-star (hash k) (enc m k) (ek (l))))
-     (recv (cat k r)))
-    (non-orig (privk hash_id)))
-
-  ;;Responder run with recovery via TTP
-
-  (defrole resp2
-    (vars (a b t hash_id name) (m data) (r text) (k skey))
-    (trace
-     (recv (cat (l) (enc m k) (ek (l))
-                (eoo-star (hash k) (enc m k) (ek (l)))))
-     (send (cat (l) (ek (l)) (eoo-star (hash k) (enc m k) (ek (l)))
-                (eor-star (hash k) (enc m k) (ek (l)))))
-     (send (cat (l) (ek (l)) (eoo-star (hash k) (enc m k) (ek (l)))
-                (eor-star (hash k) (enc m k) (ek (l)))
-                (enc "rcrq" (l) (ek (l)) (privk "sign" b))))
-     (recv (cat k r)))
-    (non-orig (privk hash_id)))
-
-  ;; Responder run with recovery request and forced abort
-
-  (defrole resp3
-    (vars (a b t hash_id name) (e1 e2 x mesg))
-    (trace
-     (recv (cat (l-star e1 x) e1 e2 (eoo-star x e1 e2)))
-     (send (cat (l-star e1 x) e2 (eoo-star x e1 e2) (eor-star x e1 e2)))
-     (send (cat (l-star e1 x) e2 (eoo-star x e1 e2) (eor-star x e1 e2)
-                (enc "rcrq" (l-star e1 x) e2 (privk "sign" b))))
-     (recv (enc "abcf"
-                (enc "abrq" (l-star e1 x) (privk "sign" a))
-                (privk "sign" t))))
-    (non-orig (privk hash_id)))
-
-  ;; TTP handles an abort
-
-  (defrole ttp-ab1
-    (vars (a b t hash_id name) (y x mesg))
-    (trace
-     (recv (enc "abrq" (l-prime y x) (privk "sign" a)))
-     (send (cat "sync-abrq"
-                (enc "abrq" (l-prime y x) (privk "sign" a))))
-     (send (enc "abcf"
-                (enc "abrq" (l-prime y x) (privk "sign" a))
-                (privk "sign" t))))
-    (non-orig (privk hash_id)))
-
-  ;; TTP forces recovery in response to an abort request
-
-  (defrole ttp-ab2
-    (vars (a b t hash_id name) (y x e mesg))
-    (trace
-     (recv (enc "abrq" (l-prime y x) (privk "sign" a)))
-     (recv (cat "sync-abrq"
-                (enc "eortag" (hash (l-prime y x)) e
-                     (privk "sign" b))))
-     (send (enc "eortag" (hash (l-prime y x)) e
-                (privk "sign" b))))
-    (non-orig (privk hash_id)))
-
-  ;; TTP handles a recovery
-
-  (defrole ttp-rc1
-    (vars (a b t hash_id name) (r text) (k skey) (y mesg))
-    (trace
-     (recv (rr-prime-prime y))
-     (send (cat "sync-rc-req"
-                (rr-prime-prime y)))
-     (send (cat k r)))
-    (non-orig (privk hash_id)))
-
-  ;; TTP forces abort in response to a recovery request
-
-  (defrole ttp-rc2
-    (vars (a b t hash_id name) (r text) (k skey) (y mesg))
-    (trace
-     (recv (rr-prime-prime y))
-     (recv (cat "sync-rc-req"
-		(enc "abrq" (l-prime-prime y) (privk "sign" a))))
-     (send (enc "abcf"
-                (enc "abrq" (l-prime-prime y) (privk "sign" a))
-                (privk "sign" t))))
-    (non-orig (privk hash_id)))
-
-  ;; TTP handles a confirm request
-
-  (defrole ttp-cf1
-    (vars (a b t hash_id name) (r text) (k skey) (y mesg))
-    (trace
-     (recv (cf-prime-prime y))
-     (send (cat "sync-cf-req"
-                (cf-prime-prime y)))
-     (send (enc (cf-prime-prime y) (privk "sign" t))))
-    (non-orig (privk hash_id)))
-
-  ;; TTP replies with abort token given confirm request
-
-  (defrole ttp-cf2
-    (vars (a b t hash_id name) (r text) (k skey) (y mesg))
-    (trace
-     (recv (cf-prime-prime y))
-     (recv (cat "sync-cf-req"
-                (enc "abrq"(l-prime-prime y) (privk "sign" a))))
-     (send (enc "abcf"
-                (enc "abrq"(l-prime-prime y) (privk "sign" a))
-                (privk "sign" t))))
-    (non-orig (privk hash_id))))
-
-;; End of Wang's protocol defn.
-
-;; Two experiments to prove Lemma 4.1
-
-(defskeleton wang
-  (vars (a b t hash_id name) (m data) (r text) (k skey))
-  (defstrand init1 1 (b b) (t t) (m m) (r r) (k k))
-  (deflistener m)
-  (non-orig
-   (privk "encr" t))
-  (uniq-orig m k)
-  (comment "Experiment 1 to prove Lemma 4.1."))
-
-(defskeleton wang
-  (vars (a b t hash_id name) (m data) (r text) (k skey))
-  (defstrand init1 1 (b b) (t t) (m m) (r r) (k k))
-  (deflistener k)
-  (non-orig
-   (privk "encr" t))
-  (uniq-orig m k)
-  (comment "Experiment 2 to prove Lemma 4.1."))
-
-;; We now have three experiments
-;; to prove Lemma 4.2, clause 1.
-
-(defskeleton wang
-  (vars (a b t hash_id name) (m data) (r text) (k skey))
-  (defstrand init1 3 (b b) (t t) (m m) (r r) (k k))
-  (non-orig
-   (privk "sign" b))
-  (comment "First of three experiments to prove Lemma 4.2, clause 1."))
-
-(defskeleton wang
-  (vars (a b t hash_id name) (m data) (r text) (k skey))
-  (defstrand init3 3 (b b) (t t) (m m) (r r) (k k))
-  (non-orig
-   (privk "sign" b))
-  (comment "Second of three experiments to prove Lemma 4.2, clause 1."))
-
-(defskeleton wang
-  (vars (a b t hash_id name) (m data) (r text) (k skey))
-  (defstrand init5 4 (b b) (t t) (m m) (r r) (k k))
-  (non-orig
-   (privk "sign" b))
-  (comment "Third of three experiments to prove Lemma 4.2, clause 1."))
-
-;; Two experiments to prove 4.2, Clause 2.
-
-(defskeleton wang
-  (vars (a b t hash_id name) (m data) (r text) (k skey))
-  (defstrand resp1 3 (a a) (t t) (m m) (r r) (k k))
-  (non-orig
-   (privk "sign" a))
-  (comment
-   "First of two experiments to prove Lemma 4.2, clause 2."))
-
-(defskeleton wang
-  (vars (a b t hash_id name) (m data) (r text) (k skey))
-  (defstrand resp2 4 (a a) (t t) (m m) (r r) (k k))
-  (non-orig
-   (privk "sign" a))
-  (comment
-   "Second of two experiments to prove Lemma 4.2, clause 2."))
-
-;; Experiment to prove Lemma 4.2, clause 3.
-
-(defskeleton wang
-  (vars (a b t hash_id name) (e1 e2 x mesg))
-  (defstrand resp3 4 (a a) (t t))
-  (non-orig
-   (privk "sign" a))
-  (comment
-   "Experiments to prove Lemma 4.2, clause 3."))
-
-;; One experiment to prove Lemma 4.3, Clause 1.
-
-(defskeleton wang
-  (vars (a b t hash_id name) (y x mesg))
-  (deflistener
-    (enc "abcf" (enc "abrq" (l-prime y x) (privk "sign" a))
-	 (privk "sign" t)))
-  (non-orig
-   (privk "sign" t))
-  (comment
-   "Experiments to prove Lemma 4.3, clause 1."))
-
-;; Three experiments to prove Lemma 4.3, Clause 2.
-
-(defskeleton wang
-  (vars (y x mesg) (a b t name))
-  (defstrand ttp-ab1 3 (y y) (x x) (a a) (b b) (t t))
-  (non-orig (privk "sign" a)  (privk "encr" t))
-  (comment
-   "Experiment 1 to prove Lemma 4.3, clause 2."))
-
-(defskeleton wang
-  (vars (a b t hash_id name) (r text) (k skey) (y mesg))
-  (defstrand ttp-rc2 3 (a a) (b b) (t t))
-  (non-orig (privk "sign" a)  (privk "encr" t))
-  (comment
-   "Experiment 2 to prove Lemma 4.3, clause 2."))
-
-(defskeleton wang
-  (vars (a b t hash_id name) (r text) (k skey) (y mesg))
-  (defstrand ttp-cf2 3 (a a) (b b) (t t))
-  (non-orig (privk "sign" a)  (privk "encr" t))
-  (comment
-   "Experiment 3 to prove Lemma 4.3, clause 2."))
diff --git a/tst/weakened-subatomic-open-closed.tst b/tst/weakened-subatomic-open-closed.tst
deleted file mode 100644
--- a/tst/weakened-subatomic-open-closed.tst
+++ /dev/null
@@ -1,2509 +0,0 @@
-(herald weakened-subatomic-open-closed (bound 40))
-
-(comment "CPSA 4.3.0")
-(comment "All input read from tst/weakened-subatomic-open-closed.scm")
-(comment "Strand count bounded at 40")
-
-(defprotocol subatomic-open-closed basic
-  (defrole dev-up
-    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
-      (lk ls locn))
-    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
-      (load ls old1) (stor lk (cat "st-k" d o k))
-      (stor ls (cat "st" d o)) (send (enc "up" k)))
-    (auth start-ch)
-    (critical-sections (1 4))
-    (facts (same-dev ls lk)))
-  (defrole owner-power-dev
-    (vars (k skey) (d o name) (start-ch chan))
-    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    (conf start-ch))
-  (defrole owner-open
-    (vars (k skey) (n text) (d o name))
-    (trace (send (enc "open" d o n k)) (recv n)))
-  (defrole owner-close
-    (vars (k skey) (n text) (d o name))
-    (trace (send (enc "close" d o n k)) (recv n)))
-  (defrole dev-open
-    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
-    (trace (recv (enc "open" d o n k)) (load lk (cat "st-k" d o k))
-      (load ls (cat "st" d any)) (stor ls (cat "st" d o o)) (send n))
-    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
-    (facts (same-dev ls lk)))
-  (defrole dev-close
-    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
-    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
-      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n))
-    (gen-st (cat "st-k" d o k))
-    (critical-sections (1 3))
-    (facts (same-dev ls lk)))
-  (defrole dev-pass
-    (vars (k skey) (n text) (d o name) (lk ls locn))
-    (trace (load lk (cat "st-k" d o k)) (load ls (cat "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    (uniq-orig n)
-    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
-    (critical-sections (0 1))
-    (facts (same-dev ls lk)))
-  (defrole user-pass
-    (vars (k skey))
-    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule fact-dev-up-same-dev0
-    (forall ((z strd) (ls lk locn))
-      (implies
-        (and (p "dev-up" z 3) (p "dev-up" "ls" z ls)
-          (p "dev-up" "lk" z lk))
-        (fact same-dev ls lk))))
-  (defrule trRl_dev-up-at-4
-    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
-  (defrule trRl_dev-up-at-3
-    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
-  (defrule trRl_dev-up-at-2
-    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
-  (defrule trRl_dev-up-at-1
-    (forall ((z strd)) (implies (p "dev-up" z 2) (trans z 1))))
-  (defrule fact-dev-open-same-dev0
-    (forall ((z strd) (ls lk locn))
-      (implies
-        (and (p "dev-open" z 3) (p "dev-open" "ls" z ls)
-          (p "dev-open" "lk" z lk))
-        (fact same-dev ls lk))))
-  (defrule gen-st-dev-open-1
-    (forall ((z strd) (k skey) (o d name))
-      (implies
-        (and (p "dev-open" z 1) (p "dev-open" "k" z k)
-          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
-        (gen-st (cat "st-k" d o k)))))
-  (defrule gen-st-dev-open-0
-    (forall ((z strd) (o d name))
-      (implies
-        (and (p "dev-open" z 1) (p "dev-open" "o" z o)
-          (p "dev-open" "d" z d))
-        (gen-st (cat "st" d o o)))))
-  (defrule trRl_dev-open-at-3
-    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
-  (defrule trRl_dev-open-at-2
-    (forall ((z strd)) (implies (p "dev-open" z 3) (trans z 2))))
-  (defrule fact-dev-close-same-dev0
-    (forall ((z strd) (ls lk locn))
-      (implies
-        (and (p "dev-close" z 3) (p "dev-close" "ls" z ls)
-          (p "dev-close" "lk" z lk))
-        (fact same-dev ls lk))))
-  (defrule gen-st-dev-close-0
-    (forall ((z strd) (k skey) (o d name))
-      (implies
-        (and (p "dev-close" z 1) (p "dev-close" "k" z k)
-          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
-        (gen-st (cat "st-k" d o k)))))
-  (defrule trRl_dev-close-at-3
-    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
-  (defrule trRl_dev-close-at-2
-    (forall ((z strd)) (implies (p "dev-close" z 3) (trans z 2))))
-  (defrule fact-dev-pass-same-dev0
-    (forall ((z strd) (ls lk locn))
-      (implies
-        (and (p "dev-pass" z 2) (p "dev-pass" "ls" z ls)
-          (p "dev-pass" "lk" z lk))
-        (fact same-dev ls lk))))
-  (defrule gen-st-dev-pass-1
-    (forall ((z strd) (k skey) (o d name))
-      (implies
-        (and (p "dev-pass" z 1) (p "dev-pass" "k" z k)
-          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
-        (gen-st (cat "st-k" d o k)))))
-  (defrule gen-st-dev-pass-0
-    (forall ((z strd) (o d name))
-      (implies
-        (and (p "dev-pass" z 1) (p "dev-pass" "o" z o)
-          (p "dev-pass" "d" z d))
-        (gen-st (cat "st" d o o)))))
-  (defrule same-dev-lk-ls
-    (forall ((lk ls ls-0 locn))
-      (implies
-        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
-        (= ls ls-0))))
-  (defrule same-dev-ls-lk
-    (forall ((ls lk lk-0 locn))
-      (implies
-        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
-        (= lk lk-0))))
-  (defrule power-deliver-once
-    (forall ((z1 z2 strd) (k skey))
-      (implies
-        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
-          (p "dev-up" "k" z2 k))
-        (= z1 z2))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
-  (defrule eff-dev-up-3
-    (forall ((z z1 strd) (i indx))
-      (implies
-        (and (p "dev-up" z 4) (prec z 3 z1 i))
-        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
-  (defrule cau-dev-up-2
-    (forall ((z z1 strd) (i indx))
-      (implies
-        (and (p "dev-up" z 3) (prec z1 i z 2))
-        (or (= z z1) (prec z1 i z 1)))))
-  (defrule cau-dev-close-2
-    (forall ((z z1 strd) (i indx))
-      (implies
-        (and (p "dev-close" z 3) (prec z1 i z 2))
-        (or (= z z1) (prec z1 i z 1)))))
-  (defrule cau-dev-pass-1
-    (forall ((z z1 strd) (i indx))
-      (implies
-        (and (p "dev-pass" z 2) (prec z1 i z 1))
-        (or (= z z1) (prec z1 i z 0))))))
-
-(defskeleton subatomic-open-closed
-  (vars (d o name) (k skey) (start-ch chan))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (deflistener k)
-  (uniq-orig k)
-  (conf start-ch)
-  (facts (no-state-split))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((recv k) (send k)))
-  (label 0)
-  (unrealized (0 1) (1 0))
-  (preskeleton)
-  (origs (k (0 0)))
-  (comment "Not a skeleton"))
-
-(defskeleton subatomic-open-closed
-  (vars (d o name) (k skey) (start-ch chan))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (deflistener k)
-  (precedes ((0 0) (1 0)))
-  (uniq-orig k)
-  (conf start-ch)
-  (facts (no-state-split))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((recv k) (send k)))
-  (label 1)
-  (parent 0)
-  (seen 2)
-  (unrealized (0 1) (1 0))
-  (origs (k (0 0)))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 mesg) (d o name) (pt pt-0 pt-1 pt-2 pval) (k skey)
-    (start-ch chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (deflistener k)
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (precedes ((0 0) (2 0)) ((2 4) (1 0)))
-  (uniq-orig k)
-  (conf start-ch)
-  (auth start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule trRl_dev-up-at-4 eff-dev-up-3 trRl_dev-up-at-1 trRl_dev-up-at-2
-    trRl_dev-up-at-3 fact-dev-up-same-dev0)
-  (operation nonce-test (added-strand dev-up 4) k (1 0)
-    (ch-msg start-ch (cat "power-up" d o k)))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((recv k) (send k))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt old))
-      (load ls (cat pt-0 old1)) (stor lk (cat pt-1 "st-k" d o k))
-      (stor ls (cat pt-2 "st" d o))))
-  (label 2)
-  (parent 1)
-  (unrealized (0 1) (1 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
-
-(defprotocol subatomic-open-closed basic
-  (defrole dev-up
-    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
-      (lk ls locn))
-    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
-      (load ls old1) (stor lk (cat "st-k" d o k))
-      (stor ls (cat "st" d o)) (send (enc "up" k)))
-    (auth start-ch)
-    (critical-sections (1 4))
-    (facts (same-dev ls lk)))
-  (defrole owner-power-dev
-    (vars (k skey) (d o name) (start-ch chan))
-    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    (conf start-ch))
-  (defrole owner-open
-    (vars (k skey) (n text) (d o name))
-    (trace (send (enc "open" d o n k)) (recv n)))
-  (defrole owner-close
-    (vars (k skey) (n text) (d o name))
-    (trace (send (enc "close" d o n k)) (recv n)))
-  (defrole dev-open
-    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
-    (trace (recv (enc "open" d o n k)) (load lk (cat "st-k" d o k))
-      (load ls (cat "st" d any)) (stor ls (cat "st" d o o)) (send n))
-    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
-    (facts (same-dev ls lk)))
-  (defrole dev-close
-    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
-    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
-      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n))
-    (gen-st (cat "st-k" d o k))
-    (critical-sections (1 3))
-    (facts (same-dev ls lk)))
-  (defrole dev-pass
-    (vars (k skey) (n text) (d o name) (lk ls locn))
-    (trace (load lk (cat "st-k" d o k)) (load ls (cat "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    (uniq-orig n)
-    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
-    (critical-sections (0 1))
-    (facts (same-dev ls lk)))
-  (defrole user-pass
-    (vars (k skey))
-    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule fact-dev-up-same-dev0
-    (forall ((z strd) (ls lk locn))
-      (implies
-        (and (p "dev-up" z 3) (p "dev-up" "ls" z ls)
-          (p "dev-up" "lk" z lk))
-        (fact same-dev ls lk))))
-  (defrule trRl_dev-up-at-4
-    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
-  (defrule trRl_dev-up-at-3
-    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
-  (defrule trRl_dev-up-at-2
-    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
-  (defrule trRl_dev-up-at-1
-    (forall ((z strd)) (implies (p "dev-up" z 2) (trans z 1))))
-  (defrule fact-dev-open-same-dev0
-    (forall ((z strd) (ls lk locn))
-      (implies
-        (and (p "dev-open" z 3) (p "dev-open" "ls" z ls)
-          (p "dev-open" "lk" z lk))
-        (fact same-dev ls lk))))
-  (defrule gen-st-dev-open-1
-    (forall ((z strd) (k skey) (o d name))
-      (implies
-        (and (p "dev-open" z 1) (p "dev-open" "k" z k)
-          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
-        (gen-st (cat "st-k" d o k)))))
-  (defrule gen-st-dev-open-0
-    (forall ((z strd) (o d name))
-      (implies
-        (and (p "dev-open" z 1) (p "dev-open" "o" z o)
-          (p "dev-open" "d" z d))
-        (gen-st (cat "st" d o o)))))
-  (defrule trRl_dev-open-at-3
-    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
-  (defrule trRl_dev-open-at-2
-    (forall ((z strd)) (implies (p "dev-open" z 3) (trans z 2))))
-  (defrule fact-dev-close-same-dev0
-    (forall ((z strd) (ls lk locn))
-      (implies
-        (and (p "dev-close" z 3) (p "dev-close" "ls" z ls)
-          (p "dev-close" "lk" z lk))
-        (fact same-dev ls lk))))
-  (defrule gen-st-dev-close-0
-    (forall ((z strd) (k skey) (o d name))
-      (implies
-        (and (p "dev-close" z 1) (p "dev-close" "k" z k)
-          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
-        (gen-st (cat "st-k" d o k)))))
-  (defrule trRl_dev-close-at-3
-    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
-  (defrule trRl_dev-close-at-2
-    (forall ((z strd)) (implies (p "dev-close" z 3) (trans z 2))))
-  (defrule fact-dev-pass-same-dev0
-    (forall ((z strd) (ls lk locn))
-      (implies
-        (and (p "dev-pass" z 2) (p "dev-pass" "ls" z ls)
-          (p "dev-pass" "lk" z lk))
-        (fact same-dev ls lk))))
-  (defrule gen-st-dev-pass-1
-    (forall ((z strd) (k skey) (o d name))
-      (implies
-        (and (p "dev-pass" z 1) (p "dev-pass" "k" z k)
-          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
-        (gen-st (cat "st-k" d o k)))))
-  (defrule gen-st-dev-pass-0
-    (forall ((z strd) (o d name))
-      (implies
-        (and (p "dev-pass" z 1) (p "dev-pass" "o" z o)
-          (p "dev-pass" "d" z d))
-        (gen-st (cat "st" d o o)))))
-  (defrule same-dev-lk-ls
-    (forall ((lk ls ls-0 locn))
-      (implies
-        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
-        (= ls ls-0))))
-  (defrule same-dev-ls-lk
-    (forall ((ls lk lk-0 locn))
-      (implies
-        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
-        (= lk lk-0))))
-  (defrule power-deliver-once
-    (forall ((z1 z2 strd) (k skey))
-      (implies
-        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
-          (p "dev-up" "k" z2 k))
-        (= z1 z2))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
-  (defrule eff-dev-up-3
-    (forall ((z z1 strd) (i indx))
-      (implies
-        (and (p "dev-up" z 4) (prec z 3 z1 i))
-        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
-  (defrule cau-dev-up-2
-    (forall ((z z1 strd) (i indx))
-      (implies
-        (and (p "dev-up" z 3) (prec z1 i z 2))
-        (or (= z z1) (prec z1 i z 1)))))
-  (defrule cau-dev-close-2
-    (forall ((z z1 strd) (i indx))
-      (implies
-        (and (p "dev-close" z 3) (prec z1 i z 2))
-        (or (= z z1) (prec z1 i z 1)))))
-  (defrule cau-dev-pass-1
-    (forall ((z z1 strd) (i indx))
-      (implies
-        (and (p "dev-pass" z 2) (prec z1 i z 1))
-        (or (= z z1) (prec z1 i z 0))))))
-
-(defskeleton subatomic-open-closed
-  (vars (n text) (d o name) (pt pt-0 pval) (k skey) (lk ls locn))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (uniq-orig n)
-  (facts (no-state-split))
-  (traces
-    ((load lk (cat pt "st-k" d o k)) (load ls (cat pt-0 "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k))))
-  (label 3)
-  (realized)
-  (origs (n (0 3)))
-  (comment "Not closed under rules"))
-
-(defskeleton subatomic-open-closed
-  (vars (n text) (d o name) (pt pt-0 pval) (k skey) (lk ls locn))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (uniq-orig n)
-  (genStV (cat "st" d o o) (cat "st-k" d o k))
-  (facts (same-dev ls lk) (no-state-split))
-  (rule gen-st-dev-pass-0 gen-st-dev-pass-1 fact-dev-pass-same-dev0)
-  (traces
-    ((load lk (cat pt "st-k" d o k)) (load ls (cat pt-0 "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k))))
-  (label 4)
-  (parent 3)
-  (seen 5)
-  (unrealized (0 0) (0 1))
-  (origs (n (0 3)))
-  (comment "6 in cohort - 1 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 mesg) (n text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pval) (k skey) (start-ch chan) (lk ls locn))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (precedes ((1 4) (0 0)))
-  (uniq-orig n)
-  (genStV (cat "st" d o o) (cat "st-k" d o k))
-  (auth start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-pass-1 eff-dev-up-3 trRl_dev-up-at-4 same-dev-lk-ls
-    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3
-    fact-dev-up-same-dev0)
-  (operation channel-test (added-strand dev-up 4)
-    (ch-msg lk (cat pt-2 "st-k" d o k)) (0 0))
-  (traces
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o))))
-  (label 5)
-  (parent 4)
-  (unrealized (0 1) (1 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 mesg) (n text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pval) (k skey) (start-ch chan) (lk ls locn))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
-  (precedes ((1 4) (0 0)) ((2 0) (1 0)))
-  (uniq-orig n)
-  (genStV (cat "st" d o o) (cat "st-k" d o k))
-  (conf start-ch)
-  (auth start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (operation channel-test (added-strand owner-power-dev 1)
-    (ch-msg start-ch (cat "power-up" d o k)) (1 0))
-  (traces
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((send start-ch (cat "power-up" d o k))))
-  (label 6)
-  (parent 5)
-  (seen 7)
-  (unrealized (0 1))
-  (comment "12 in cohort - 1 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval) (k k-0 skey) (start-ch chan)
-    (ls lk locn))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (precedes ((1 4) (3 2)) ((2 0) (1 0)) ((3 3) (0 0)))
-  (uniq-orig n)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch)
-  (auth start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-pass-1 invShearsRule same-dev-ls-lk trRl_dev-open-at-2
-    trRl_dev-open-at-3 gen-st-dev-open-1 fact-dev-open-same-dev0)
-  (operation channel-test (added-strand dev-open 4)
-    (ch-msg ls (cat pt "st" d o o)) (0 1))
-  (traces
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((send start-ch (cat "power-up" d o k)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-4 "st-k" d o k-0))
-      (load ls (cat pt-5 "st" d any)) (stor ls (cat pt "st" d o o))))
-  (label 7)
-  (parent 6)
-  (seen 8 9 10 11 12 13 14 15)
-  (unrealized (3 1))
-  (comment "97 in cohort - 8 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (k skey) (start-ch chan)
-    (ls lk locn))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k) (lk lk)
-    (ls ls))
-  (precedes ((1 4) (3 1)) ((2 0) (1 0)) ((3 3) (0 0)))
-  (uniq-orig n)
-  (genStV (cat "st" d o o) (cat "st-k" d o k))
-  (conf start-ch)
-  (auth start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule eff-dev-up-3)
-  (operation channel-test (displaced 4 1 dev-up 4)
-    (ch-msg lk (cat pt-5 "st-k" d o k-0)) (3 1))
-  (traces
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((send start-ch (cat "power-up" d o k)))
-    ((recv (enc "open" d o n-0 k)) (load lk (cat pt-2 "st-k" d o k))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o))))
-  (label 8)
-  (parent 7)
-  (realized)
-  (shape)
-  (maps
-    ((0) ((k k) (n n) (d d) (o o) (lk lk) (ls ls) (pt pt-2) (pt-0 pt))))
-  (origs (pt-2 (1 3)) (pt-3 (1 4)) (pt (3 3)) (n (0 3))))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (precedes ((1 4) (3 2)) ((2 0) (1 0)) ((3 3) (0 0)) ((4 4) (1 1))
-    ((4 4) (3 1)))
-  (uniq-orig n)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-up-2 eff-dev-up-3 trRl_dev-up-at-4 invShearsRule
-    same-dev-lk-ls trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3
-    fact-dev-up-same-dev0)
-  (operation channel-test (added-strand dev-up 4)
-    (ch-msg lk (cat pt-7 "st-k" d o k-0)) (3 1))
-  (traces
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((send start-ch (cat "power-up" d o k)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0))
-      (stor ls (cat pt-8 "st" d o))))
-  (label 9)
-  (parent 7)
-  (unrealized (4 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (precedes ((1 4) (3 2)) ((2 0) (1 0)) ((3 3) (0 0)) ((4 3) (1 1))
-    ((4 4) (3 1)))
-  (uniq-orig n)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-up-2 trRl_dev-up-at-4 eff-dev-up-3 invShearsRule
-    same-dev-lk-ls trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3
-    fact-dev-up-same-dev0)
-  (operation channel-test (added-strand dev-up 4)
-    (ch-msg lk (cat pt-7 "st-k" d o k-0)) (3 1))
-  (traces
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((send start-ch (cat "power-up" d o k)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0))
-      (stor ls (cat pt-8 "st" d o))))
-  (label 10)
-  (parent 7)
-  (seen 16)
-  (unrealized (4 0))
-  (comment "4 in cohort - 0 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (precedes ((1 4) (3 2)) ((2 0) (1 0)) ((3 3) (0 0)) ((4 3) (3 1))
-    ((4 4) (1 1)))
-  (uniq-orig n)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-up-2 trRl_dev-up-at-4 eff-dev-up-3 invShearsRule
-    same-dev-lk-ls trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3
-    fact-dev-up-same-dev0)
-  (operation channel-test (added-strand dev-up 4)
-    (ch-msg lk (cat pt-7 "st-k" d o k-0)) (3 1))
-  (traces
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((send start-ch (cat "power-up" d o k)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0))
-      (stor ls (cat pt-8 "st" d o))))
-  (label 11)
-  (parent 7)
-  (seen 16)
-  (unrealized (4 0))
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (precedes ((1 4) (3 2)) ((2 0) (1 0)) ((3 3) (0 0)) ((4 3) (1 1))
-    ((4 3) (3 1)) ((4 4) (1 2)))
-  (uniq-orig n)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-up-2 trRl_dev-up-at-4 eff-dev-up-3 invShearsRule
-    same-dev-lk-ls trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3
-    fact-dev-up-same-dev0)
-  (operation channel-test (added-strand dev-up 4)
-    (ch-msg lk (cat pt-7 "st-k" d o k-0)) (3 1))
-  (traces
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((send start-ch (cat "power-up" d o k)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0))
-      (stor ls (cat pt-8 "st" d o))))
-  (label 12)
-  (parent 7)
-  (seen 16)
-  (unrealized (4 0))
-  (comment "2 in cohort - 0 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (precedes ((1 4) (3 2)) ((2 0) (1 0)) ((3 3) (0 0)) ((4 3) (1 1))
-    ((4 3) (3 1)) ((4 4) (3 2)))
-  (uniq-orig n)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-up-2 trRl_dev-up-at-4 eff-dev-up-3 invShearsRule
-    same-dev-lk-ls trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3
-    fact-dev-up-same-dev0)
-  (operation channel-test (added-strand dev-up 4)
-    (ch-msg lk (cat pt-7 "st-k" d o k-0)) (3 1))
-  (traces
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((send start-ch (cat "power-up" d o k)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0))
-      (stor ls (cat pt-8 "st" d o))))
-  (label 13)
-  (parent 7)
-  (seen 16)
-  (unrealized (4 0))
-  (comment "8 in cohort - 0 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (precedes ((1 4) (3 2)) ((2 0) (1 0)) ((3 3) (0 0)) ((4 3) (1 1))
-    ((4 3) (3 1)) ((4 4) (0 0)))
-  (uniq-orig n)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-up-2 trRl_dev-up-at-4 eff-dev-up-3 invShearsRule
-    same-dev-lk-ls trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3
-    fact-dev-up-same-dev0)
-  (operation channel-test (added-strand dev-up 4)
-    (ch-msg lk (cat pt-7 "st-k" d o k-0)) (3 1))
-  (traces
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((send start-ch (cat "power-up" d o k)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0))
-      (stor ls (cat pt-8 "st" d o))))
-  (label 14)
-  (parent 7)
-  (seen 16)
-  (unrealized (4 0))
-  (comment "8 in cohort - 0 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (precedes ((1 4) (3 2)) ((2 0) (1 0)) ((3 3) (0 0)) ((4 3) (1 1))
-    ((4 3) (3 1)) ((4 4) (0 2)))
-  (uniq-orig n)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-up-2 trRl_dev-up-at-4 eff-dev-up-3 invShearsRule
-    same-dev-lk-ls trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3
-    fact-dev-up-same-dev0)
-  (operation channel-test (added-strand dev-up 4)
-    (ch-msg lk (cat pt-7 "st-k" d o k-0)) (3 1))
-  (traces
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((send start-ch (cat "power-up" d o k)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0))
-      (stor ls (cat pt-8 "st" d o))))
-  (label 15)
-  (parent 7)
-  (seen 16 18 19)
-  (unrealized (4 0))
-  (comment "15 in cohort - 3 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k-0)
-    (start-ch start-ch-0))
-  (precedes ((1 4) (3 2)) ((2 0) (1 0)) ((3 3) (0 0)) ((4 4) (1 1))
-    ((4 4) (3 1)) ((5 0) (4 0)))
-  (uniq-orig n)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch start-ch-0)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (operation channel-test (added-strand owner-power-dev 1)
-    (ch-msg start-ch-0 (cat "power-up" d o k-0)) (4 0))
-  (traces
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((send start-ch (cat "power-up" d o k)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0)) (stor ls (cat pt-8 "st" d o)))
-    ((send start-ch-0 (cat "power-up" d o k-0))))
-  (label 16)
-  (parent 9)
-  (realized)
-  (shape)
-  (maps
-    ((0) ((k k) (n n) (d d) (o o) (lk lk) (ls ls) (pt pt-2) (pt-0 pt))))
-  (origs (pt-7 (4 3)) (pt-8 (4 4)) (pt (3 3)) (pt-2 (1 3)) (pt-3 (1 4))
-    (n (0 3))))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k-0)
-    (start-ch start-ch-0))
-  (precedes ((1 4) (3 2)) ((2 0) (1 0)) ((3 3) (0 0)) ((4 3) (1 1))
-    ((4 3) (3 1)) ((4 4) (3 2)) ((5 0) (4 0)))
-  (uniq-orig n)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch start-ch-0)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule eff-dev-up-3)
-  (operation channel-test (added-strand owner-power-dev 1)
-    (ch-msg start-ch-0 (cat "power-up" d o k-0)) (4 0))
-  (traces
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((send start-ch (cat "power-up" d o k)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0)) (stor ls (cat pt-8 "st" d o)))
-    ((send start-ch-0 (cat "power-up" d o k-0))))
-  (label 17)
-  (parent 15)
-  (realized)
-  (shape)
-  (maps
-    ((0) ((k k) (n n) (d d) (o o) (lk lk) (ls ls) (pt pt-2) (pt-0 pt))))
-  (origs (pt-7 (4 3)) (pt-8 (4 4)) (pt (3 3)) (pt-2 (1 3)) (pt-3 (1 4))
-    (n (0 3))))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k-0)
-    (start-ch start-ch-0))
-  (precedes ((1 4) (3 2)) ((2 0) (1 0)) ((3 3) (0 0)) ((4 3) (3 1))
-    ((4 4) (1 1)) ((5 0) (4 0)))
-  (uniq-orig n)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch start-ch-0)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-up-2 eff-dev-up-3)
-  (operation channel-test (added-strand owner-power-dev 1)
-    (ch-msg start-ch-0 (cat "power-up" d o k-0)) (4 0))
-  (traces
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((send start-ch (cat "power-up" d o k)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0)) (stor ls (cat pt-8 "st" d o)))
-    ((send start-ch-0 (cat "power-up" d o k-0))))
-  (label 18)
-  (parent 15)
-  (realized)
-  (shape)
-  (maps
-    ((0) ((k k) (n n) (d d) (o o) (lk lk) (ls ls) (pt pt-2) (pt-0 pt))))
-  (origs (pt-7 (4 3)) (pt-8 (4 4)) (pt (3 3)) (pt-2 (1 3)) (pt-3 (1 4))
-    (n (0 3))))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k-0)
-    (start-ch start-ch-0))
-  (precedes ((1 4) (3 2)) ((2 0) (1 0)) ((3 3) (0 0)) ((4 3) (1 1))
-    ((4 3) (3 1)) ((4 4) (0 0)) ((5 0) (4 0)))
-  (uniq-orig n)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch start-ch-0)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule eff-dev-up-3)
-  (operation channel-test (added-strand owner-power-dev 1)
-    (ch-msg start-ch-0 (cat "power-up" d o k-0)) (4 0))
-  (traces
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((send start-ch (cat "power-up" d o k)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0)) (stor ls (cat pt-8 "st" d o)))
-    ((send start-ch-0 (cat "power-up" d o k-0))))
-  (label 19)
-  (parent 15)
-  (realized)
-  (shape)
-  (maps
-    ((0) ((k k) (n n) (d d) (o o) (lk lk) (ls ls) (pt pt-2) (pt-0 pt))))
-  (origs (pt-7 (4 3)) (pt-8 (4 4)) (pt (3 3)) (pt-2 (1 3)) (pt-3 (1 4))
-    (n (0 3))))
-
-(comment "Nothing left to do")
-
-(defprotocol subatomic-open-closed basic
-  (defrole dev-up
-    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
-      (lk ls locn))
-    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
-      (load ls old1) (stor lk (cat "st-k" d o k))
-      (stor ls (cat "st" d o)) (send (enc "up" k)))
-    (auth start-ch)
-    (critical-sections (1 4))
-    (facts (same-dev ls lk)))
-  (defrole owner-power-dev
-    (vars (k skey) (d o name) (start-ch chan))
-    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    (conf start-ch))
-  (defrole owner-open
-    (vars (k skey) (n text) (d o name))
-    (trace (send (enc "open" d o n k)) (recv n)))
-  (defrole owner-close
-    (vars (k skey) (n text) (d o name))
-    (trace (send (enc "close" d o n k)) (recv n)))
-  (defrole dev-open
-    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
-    (trace (recv (enc "open" d o n k)) (load lk (cat "st-k" d o k))
-      (load ls (cat "st" d any)) (stor ls (cat "st" d o o)) (send n))
-    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
-    (facts (same-dev ls lk)))
-  (defrole dev-close
-    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
-    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
-      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n))
-    (gen-st (cat "st-k" d o k))
-    (critical-sections (1 3))
-    (facts (same-dev ls lk)))
-  (defrole dev-pass
-    (vars (k skey) (n text) (d o name) (lk ls locn))
-    (trace (load lk (cat "st-k" d o k)) (load ls (cat "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    (uniq-orig n)
-    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
-    (critical-sections (0 1))
-    (facts (same-dev ls lk)))
-  (defrole user-pass
-    (vars (k skey))
-    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
-  (defrule cakeRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
-          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule no-interruption
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
-          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
-        (false))))
-  (defrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false))))
-  (defrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defrule scissorsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
-        (and (= z1 z2) (= i1 i2)))))
-  (defrule fact-dev-up-same-dev0
-    (forall ((z strd) (ls lk locn))
-      (implies
-        (and (p "dev-up" z 3) (p "dev-up" "ls" z ls)
-          (p "dev-up" "lk" z lk))
-        (fact same-dev ls lk))))
-  (defrule trRl_dev-up-at-4
-    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
-  (defrule trRl_dev-up-at-3
-    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
-  (defrule trRl_dev-up-at-2
-    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
-  (defrule trRl_dev-up-at-1
-    (forall ((z strd)) (implies (p "dev-up" z 2) (trans z 1))))
-  (defrule fact-dev-open-same-dev0
-    (forall ((z strd) (ls lk locn))
-      (implies
-        (and (p "dev-open" z 3) (p "dev-open" "ls" z ls)
-          (p "dev-open" "lk" z lk))
-        (fact same-dev ls lk))))
-  (defrule gen-st-dev-open-1
-    (forall ((z strd) (k skey) (o d name))
-      (implies
-        (and (p "dev-open" z 1) (p "dev-open" "k" z k)
-          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
-        (gen-st (cat "st-k" d o k)))))
-  (defrule gen-st-dev-open-0
-    (forall ((z strd) (o d name))
-      (implies
-        (and (p "dev-open" z 1) (p "dev-open" "o" z o)
-          (p "dev-open" "d" z d))
-        (gen-st (cat "st" d o o)))))
-  (defrule trRl_dev-open-at-3
-    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
-  (defrule trRl_dev-open-at-2
-    (forall ((z strd)) (implies (p "dev-open" z 3) (trans z 2))))
-  (defrule fact-dev-close-same-dev0
-    (forall ((z strd) (ls lk locn))
-      (implies
-        (and (p "dev-close" z 3) (p "dev-close" "ls" z ls)
-          (p "dev-close" "lk" z lk))
-        (fact same-dev ls lk))))
-  (defrule gen-st-dev-close-0
-    (forall ((z strd) (k skey) (o d name))
-      (implies
-        (and (p "dev-close" z 1) (p "dev-close" "k" z k)
-          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
-        (gen-st (cat "st-k" d o k)))))
-  (defrule trRl_dev-close-at-3
-    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
-  (defrule trRl_dev-close-at-2
-    (forall ((z strd)) (implies (p "dev-close" z 3) (trans z 2))))
-  (defrule fact-dev-pass-same-dev0
-    (forall ((z strd) (ls lk locn))
-      (implies
-        (and (p "dev-pass" z 2) (p "dev-pass" "ls" z ls)
-          (p "dev-pass" "lk" z lk))
-        (fact same-dev ls lk))))
-  (defrule gen-st-dev-pass-1
-    (forall ((z strd) (k skey) (o d name))
-      (implies
-        (and (p "dev-pass" z 1) (p "dev-pass" "k" z k)
-          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
-        (gen-st (cat "st-k" d o k)))))
-  (defrule gen-st-dev-pass-0
-    (forall ((z strd) (o d name))
-      (implies
-        (and (p "dev-pass" z 1) (p "dev-pass" "o" z o)
-          (p "dev-pass" "d" z d))
-        (gen-st (cat "st" d o o)))))
-  (defrule same-dev-lk-ls
-    (forall ((lk ls ls-0 locn))
-      (implies
-        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
-        (= ls ls-0))))
-  (defrule same-dev-ls-lk
-    (forall ((ls lk lk-0 locn))
-      (implies
-        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
-        (= lk lk-0))))
-  (defrule power-deliver-once
-    (forall ((z1 z2 strd) (k skey))
-      (implies
-        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
-          (p "dev-up" "k" z2 k))
-        (= z1 z2))))
-  (defrule shearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
-          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
-          (prec z0 i0 z2 i2))
-        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
-  (defrule invShearsRule
-    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
-      (implies
-        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
-          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
-        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
-  (defrule eff-dev-up-3
-    (forall ((z z1 strd) (i indx))
-      (implies
-        (and (p "dev-up" z 4) (prec z 3 z1 i))
-        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
-  (defrule cau-dev-up-2
-    (forall ((z z1 strd) (i indx))
-      (implies
-        (and (p "dev-up" z 3) (prec z1 i z 2))
-        (or (= z z1) (prec z1 i z 1)))))
-  (defrule cau-dev-close-2
-    (forall ((z z1 strd) (i indx))
-      (implies
-        (and (p "dev-close" z 3) (prec z1 i z 2))
-        (or (= z z1) (prec z1 i z 1)))))
-  (defrule cau-dev-pass-1
-    (forall ((z z1 strd) (i indx))
-      (implies
-        (and (p "dev-pass" z 2) (prec z1 i z 1))
-        (or (= z z1) (prec z1 i z 0))))))
-
-(defskeleton subatomic-open-closed
-  (vars (n text) (d o d-0 o-0 name) (pt pt-0 pval) (k skey)
-    (start-ch chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d-0) (o o-0) (k k) (lk lk) (ls ls))
-  (uniq-orig n k)
-  (conf start-ch)
-  (facts (no-state-split))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt "st-k" d-0 o-0 k))
-      (load ls (cat pt-0 "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
-      (send (enc "you may pass" n k))))
-  (label 20)
-  (unrealized (0 1) (1 0) (1 2))
-  (preskeleton)
-  (origs (n (1 3)) (k (0 0)))
-  (comment "Not a skeleton"))
-
-(defskeleton subatomic-open-closed
-  (vars (n text) (d o d-0 o-0 name) (pt pt-0 pval) (k skey)
-    (start-ch chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d-0) (o o-0) (k k) (lk lk) (ls ls))
-  (precedes ((0 0) (1 0)))
-  (uniq-orig n k)
-  (conf start-ch)
-  (facts (no-state-split))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt "st-k" d-0 o-0 k))
-      (load ls (cat pt-0 "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
-      (send (enc "you may pass" n k))))
-  (label 21)
-  (parent 20)
-  (unrealized (0 1) (1 0) (1 2))
-  (origs (n (1 3)) (k (0 0)))
-  (comment "Not closed under rules"))
-
-(defskeleton subatomic-open-closed
-  (vars (n text) (d o d-0 o-0 name) (pt pt-0 pval) (k skey)
-    (start-ch chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d-0) (o o-0) (k k) (lk lk) (ls ls))
-  (precedes ((0 0) (1 0)))
-  (uniq-orig n k)
-  (genStV (cat "st" d-0 o-0 o-0) (cat "st-k" d-0 o-0 k))
-  (conf start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule gen-st-dev-pass-0 gen-st-dev-pass-1 fact-dev-pass-same-dev0)
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt "st-k" d-0 o-0 k))
-      (load ls (cat pt-0 "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
-      (send (enc "you may pass" n k))))
-  (label 22)
-  (parent 21)
-  (seen 23)
-  (unrealized (0 1) (1 0) (1 1) (1 2))
-  (origs (n (1 3)) (k (0 0)))
-  (comment "6 in cohort - 1 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 mesg) (n text) (d o d-0 o-0 name)
-    (pt pt-0 pt-1 pt-2 pt-3 pval) (k skey) (start-ch start-ch-0 chan)
-    (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d-0) (o o-0) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d-0) (o o-0) (k k)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (precedes ((0 0) (2 0)) ((2 4) (1 0)))
-  (uniq-orig n k)
-  (genStV (cat "st" d-0 o-0 o-0) (cat "st-k" d-0 o-0 k))
-  (conf start-ch)
-  (auth start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-pass-1 eff-dev-up-3 trRl_dev-up-at-4 same-dev-lk-ls
-    trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3
-    fact-dev-up-same-dev0)
-  (operation channel-test (added-strand dev-up 4)
-    (ch-msg lk (cat pt-2 "st-k" d-0 o-0 k)) (1 0))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d-0 o-0 k))
-      (load ls (cat pt "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
-      (send (enc "you may pass" n k)))
-    ((recv start-ch-0 (cat "power-up" d-0 o-0 k))
-      (load lk (cat pt-0 old)) (load ls (cat pt-1 old1))
-      (stor lk (cat pt-2 "st-k" d-0 o-0 k))
-      (stor ls (cat pt-3 "st" d-0 o-0))))
-  (label 23)
-  (parent 22)
-  (unrealized (0 1) (1 1) (1 2) (2 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 mesg) (n text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pval) (k skey) (start-ch chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (precedes ((0 0) (2 0)) ((2 4) (1 0)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k))
-  (conf start-ch)
-  (auth start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (operation channel-test (displaced 3 0 owner-power-dev 1)
-    (ch-msg start-ch-0 (cat "power-up" d-0 o-0 k)) (2 0))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o))))
-  (label 24)
-  (parent 23)
-  (seen 25)
-  (unrealized (0 1) (1 1) (1 2))
-  (comment "12 in cohort - 1 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval) (k k-0 skey) (start-ch chan)
-    (ls lk locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (precedes ((0 0) (2 0)) ((2 4) (3 2)) ((3 3) (1 0)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch)
-  (auth start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-pass-1 invShearsRule same-dev-ls-lk trRl_dev-open-at-2
-    trRl_dev-open-at-3 gen-st-dev-open-1 fact-dev-open-same-dev0)
-  (operation channel-test (added-strand dev-open 4)
-    (ch-msg ls (cat pt "st" d o o)) (1 1))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-4 "st-k" d o k-0))
-      (load ls (cat pt-5 "st" d any)) (stor ls (cat pt "st" d o o))))
-  (label 25)
-  (parent 24)
-  (seen 26 27 28 29 30 31 32 33)
-  (unrealized (0 1) (1 2) (3 1))
-  (comment "97 in cohort - 8 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (k skey) (start-ch chan)
-    (ls lk locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k) (lk lk)
-    (ls ls))
-  (precedes ((0 0) (2 0)) ((2 4) (3 1)) ((3 3) (1 0)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k))
-  (conf start-ch)
-  (auth start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule eff-dev-up-3)
-  (operation channel-test (displaced 4 2 dev-up 4)
-    (ch-msg lk (cat pt-5 "st-k" d o k-0)) (3 1))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k)) (load lk (cat pt-2 "st-k" d o k))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o))))
-  (label 26)
-  (parent 25)
-  (unrealized (0 1) (1 2) (3 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (precedes ((0 0) (2 0)) ((2 4) (3 2)) ((3 3) (1 0)) ((4 4) (2 1))
-    ((4 4) (3 1)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-up-2 eff-dev-up-3 trRl_dev-up-at-4 invShearsRule
-    same-dev-lk-ls trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3
-    fact-dev-up-same-dev0)
-  (operation channel-test (added-strand dev-up 4)
-    (ch-msg lk (cat pt-7 "st-k" d o k-0)) (3 1))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0))
-      (stor ls (cat pt-8 "st" d o))))
-  (label 27)
-  (parent 25)
-  (unrealized (0 1) (1 2) (4 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (precedes ((0 0) (2 0)) ((2 4) (3 2)) ((3 3) (1 0)) ((4 3) (2 1))
-    ((4 4) (3 1)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-up-2 trRl_dev-up-at-4 eff-dev-up-3 invShearsRule
-    same-dev-lk-ls trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3
-    fact-dev-up-same-dev0)
-  (operation channel-test (added-strand dev-up 4)
-    (ch-msg lk (cat pt-7 "st-k" d o k-0)) (3 1))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0))
-      (stor ls (cat pt-8 "st" d o))))
-  (label 28)
-  (parent 25)
-  (seen 36)
-  (unrealized (0 1) (1 2) (4 0))
-  (comment "4 in cohort - 0 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (precedes ((0 0) (2 0)) ((2 4) (3 2)) ((3 3) (1 0)) ((4 3) (3 1))
-    ((4 4) (2 1)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-up-2 trRl_dev-up-at-4 eff-dev-up-3 invShearsRule
-    same-dev-lk-ls trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3
-    fact-dev-up-same-dev0)
-  (operation channel-test (added-strand dev-up 4)
-    (ch-msg lk (cat pt-7 "st-k" d o k-0)) (3 1))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0))
-      (stor ls (cat pt-8 "st" d o))))
-  (label 29)
-  (parent 25)
-  (seen 36)
-  (unrealized (0 1) (1 2) (4 0))
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (precedes ((0 0) (2 0)) ((2 4) (3 2)) ((3 3) (1 0)) ((4 3) (2 1))
-    ((4 3) (3 1)) ((4 4) (2 2)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-up-2 trRl_dev-up-at-4 eff-dev-up-3 invShearsRule
-    same-dev-lk-ls trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3
-    fact-dev-up-same-dev0)
-  (operation channel-test (added-strand dev-up 4)
-    (ch-msg lk (cat pt-7 "st-k" d o k-0)) (3 1))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0))
-      (stor ls (cat pt-8 "st" d o))))
-  (label 30)
-  (parent 25)
-  (seen 36)
-  (unrealized (0 1) (1 2) (4 0))
-  (comment "2 in cohort - 0 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (precedes ((0 0) (2 0)) ((2 4) (3 2)) ((3 3) (1 0)) ((4 3) (2 1))
-    ((4 3) (3 1)) ((4 4) (3 2)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-up-2 trRl_dev-up-at-4 eff-dev-up-3 invShearsRule
-    same-dev-lk-ls trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3
-    fact-dev-up-same-dev0)
-  (operation channel-test (added-strand dev-up 4)
-    (ch-msg lk (cat pt-7 "st-k" d o k-0)) (3 1))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0))
-      (stor ls (cat pt-8 "st" d o))))
-  (label 31)
-  (parent 25)
-  (seen 36)
-  (unrealized (0 1) (1 2) (4 0))
-  (comment "8 in cohort - 0 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (precedes ((0 0) (2 0)) ((2 4) (3 2)) ((3 3) (1 0)) ((4 3) (2 1))
-    ((4 3) (3 1)) ((4 4) (1 0)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-up-2 trRl_dev-up-at-4 eff-dev-up-3 invShearsRule
-    same-dev-lk-ls trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3
-    fact-dev-up-same-dev0)
-  (operation channel-test (added-strand dev-up 4)
-    (ch-msg lk (cat pt-7 "st-k" d o k-0)) (3 1))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0))
-      (stor ls (cat pt-8 "st" d o))))
-  (label 32)
-  (parent 25)
-  (seen 36)
-  (unrealized (0 1) (1 2) (4 0))
-  (comment "8 in cohort - 0 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (precedes ((0 0) (2 0)) ((2 4) (3 2)) ((3 3) (1 0)) ((4 3) (2 1))
-    ((4 3) (3 1)) ((4 4) (1 2)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-up-2 trRl_dev-up-at-4 eff-dev-up-3 invShearsRule
-    same-dev-lk-ls trRl_dev-up-at-1 trRl_dev-up-at-2 trRl_dev-up-at-3
-    fact-dev-up-same-dev0)
-  (operation channel-test (added-strand dev-up 4)
-    (ch-msg lk (cat pt-7 "st-k" d o k-0)) (3 1))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0))
-      (stor ls (cat pt-8 "st" d o))))
-  (label 33)
-  (parent 25)
-  (seen 36 38 39)
-  (unrealized (0 1) (1 2) (4 0))
-  (comment "15 in cohort - 3 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (k skey) (start-ch chan)
-    (ls lk locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k) (lk lk)
-    (ls ls))
-  (defstrand owner-open 1 (n n-0) (d d) (o o) (k k))
-  (precedes ((0 0) (2 0)) ((2 4) (3 1)) ((3 3) (1 0)) ((4 0) (3 0)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k))
-  (conf start-ch)
-  (auth start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (operation encryption-test (added-strand owner-open 1)
-    (enc "open" d o n-0 k) (3 0))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k)) (load lk (cat pt-2 "st-k" d o k))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((send (enc "open" d o n-0 k))))
-  (label 34)
-  (parent 26)
-  (unrealized (0 1) (1 2))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (k skey) (start-ch chan)
-    (ls lk locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k) (lk lk)
-    (ls ls))
-  (deflistener k)
-  (precedes ((0 0) (2 0)) ((0 0) (4 0)) ((2 4) (3 1)) ((3 3) (1 0))
-    ((4 1) (3 0)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k))
-  (conf start-ch)
-  (auth start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (operation encryption-test (added-listener k) (enc "open" d o n-0 k)
-    (3 0))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k)) (load lk (cat pt-2 "st-k" d o k))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv k) (send k)))
-  (label 35)
-  (parent 26)
-  (seen 42)
-  (unrealized (0 1) (4 0))
-  (comment "8 in cohort - 1 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k-0)
-    (start-ch start-ch-0))
-  (precedes ((0 0) (2 0)) ((2 4) (3 2)) ((3 3) (1 0)) ((4 4) (2 1))
-    ((4 4) (3 1)) ((5 0) (4 0)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch start-ch-0)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (operation channel-test (added-strand owner-power-dev 1)
-    (ch-msg start-ch-0 (cat "power-up" d o k-0)) (4 0))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0)) (stor ls (cat pt-8 "st" d o)))
-    ((send start-ch-0 (cat "power-up" d o k-0))))
-  (label 36)
-  (parent 27)
-  (unrealized (0 1) (1 2))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k-0)
-    (start-ch start-ch-0))
-  (precedes ((0 0) (2 0)) ((2 4) (3 2)) ((3 3) (1 0)) ((4 3) (2 1))
-    ((4 3) (3 1)) ((4 4) (3 2)) ((5 0) (4 0)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch start-ch-0)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule eff-dev-up-3)
-  (operation channel-test (added-strand owner-power-dev 1)
-    (ch-msg start-ch-0 (cat "power-up" d o k-0)) (4 0))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0)) (stor ls (cat pt-8 "st" d o)))
-    ((send start-ch-0 (cat "power-up" d o k-0))))
-  (label 37)
-  (parent 33)
-  (seen 43 44)
-  (unrealized (0 1) (1 2))
-  (comment "16 in cohort - 0 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k-0)
-    (start-ch start-ch-0))
-  (precedes ((0 0) (2 0)) ((2 4) (3 2)) ((3 3) (1 0)) ((4 3) (3 1))
-    ((4 4) (2 1)) ((5 0) (4 0)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch start-ch-0)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule cau-dev-up-2 eff-dev-up-3)
-  (operation channel-test (added-strand owner-power-dev 1)
-    (ch-msg start-ch-0 (cat "power-up" d o k-0)) (4 0))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0)) (stor ls (cat pt-8 "st" d o)))
-    ((send start-ch-0 (cat "power-up" d o k-0))))
-  (label 38)
-  (parent 33)
-  (seen 43 44)
-  (unrealized (0 1) (1 2))
-  (comment "2 in cohort - 0 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k-0)
-    (start-ch start-ch-0))
-  (precedes ((0 0) (2 0)) ((2 4) (3 2)) ((3 3) (1 0)) ((4 3) (2 1))
-    ((4 3) (3 1)) ((4 4) (1 0)) ((5 0) (4 0)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch start-ch-0)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule eff-dev-up-3)
-  (operation channel-test (added-strand owner-power-dev 1)
-    (ch-msg start-ch-0 (cat "power-up" d o k-0)) (4 0))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0)) (stor ls (cat pt-8 "st" d o)))
-    ((send start-ch-0 (cat "power-up" d o k-0))))
-  (label 39)
-  (parent 33)
-  (seen 43 44)
-  (unrealized (0 1) (1 2))
-  (comment "16 in cohort - 0 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (k skey) (start-ch chan)
-    (ls lk locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k) (lk lk)
-    (ls ls))
-  (defstrand owner-open 1 (n n-0) (d d) (o o) (k k))
-  (defstrand user-pass 1 (k k))
-  (precedes ((0 0) (2 0)) ((2 4) (3 1)) ((3 3) (1 0)) ((4 0) (3 0))
-    ((5 0) (1 2)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k))
-  (conf start-ch)
-  (auth start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (operation encryption-test (added-strand user-pass 1)
-    (enc "may I pass" k) (1 2))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k)) (load lk (cat pt-2 "st-k" d o k))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((send (enc "open" d o n-0 k))) ((send (enc "may I pass" k))))
-  (label 40)
-  (parent 34)
-  (seen 45)
-  (unrealized (0 1))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (k skey) (start-ch chan)
-    (ls lk locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k) (lk lk)
-    (ls ls))
-  (defstrand owner-open 1 (n n-0) (d d) (o o) (k k))
-  (deflistener k)
-  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((2 4) (3 1)) ((3 3) (1 0))
-    ((4 0) (3 0)) ((5 1) (1 2)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k))
-  (conf start-ch)
-  (auth start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (operation encryption-test (added-listener k) (enc "may I pass" k)
-    (1 2))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k)) (load lk (cat pt-2 "st-k" d o k))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((send (enc "open" d o n-0 k))) ((recv k) (send k)))
-  (label 41)
-  (parent 34)
-  (seen 47)
-  (unrealized (0 1) (5 0))
-  (comment "4 in cohort - 1 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (k skey) (start-ch chan)
-    (ls lk locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k) (lk lk)
-    (ls ls))
-  (deflistener k)
-  (precedes ((0 0) (2 0)) ((2 4) (4 0)) ((3 3) (1 0)) ((4 1) (3 0)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k))
-  (conf start-ch)
-  (auth start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule eff-dev-up-3)
-  (operation nonce-test (displaced 5 2 dev-up 4) k (4 0)
-    (ch-msg start-ch (cat "power-up" d o k)))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k)) (load lk (cat pt-2 "st-k" d o k))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv k) (send k)))
-  (label 42)
-  (parent 35)
-  (unrealized (0 1) (4 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k-0)
-    (start-ch start-ch-0))
-  (defstrand user-pass 1 (k k))
-  (precedes ((0 0) (2 0)) ((2 4) (3 2)) ((3 3) (1 0)) ((4 4) (2 1))
-    ((4 4) (3 1)) ((5 0) (4 0)) ((6 0) (1 2)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch start-ch-0)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (operation encryption-test (added-strand user-pass 1)
-    (enc "may I pass" k) (1 2))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0)) (stor ls (cat pt-8 "st" d o)))
-    ((send start-ch-0 (cat "power-up" d o k-0)))
-    ((send (enc "may I pass" k))))
-  (label 43)
-  (parent 36)
-  (seen 48)
-  (unrealized (0 1))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k-0)
-    (start-ch start-ch-0))
-  (deflistener k)
-  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((2 4) (3 2)) ((3 3) (1 0))
-    ((4 4) (2 1)) ((4 4) (3 1)) ((5 0) (4 0)) ((6 1) (1 2)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch start-ch-0)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (operation encryption-test (added-listener k) (enc "may I pass" k)
-    (1 2))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0)) (stor ls (cat pt-8 "st" d o)))
-    ((send start-ch-0 (cat "power-up" d o k-0))) ((recv k) (send k)))
-  (label 44)
-  (parent 36)
-  (seen 50)
-  (unrealized (0 1) (6 0))
-  (comment "4 in cohort - 1 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (any old old1 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (k skey) (start-ch chan)
-    (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k) (lk lk)
-    (ls ls))
-  (defstrand owner-open 1 (n n-0) (d d) (o o) (k k))
-  (defstrand user-pass 1 (k k))
-  (defstrand dev-up 6 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (precedes ((0 0) (5 0)) ((2 3) (1 0)) ((3 0) (2 0)) ((4 0) (1 2))
-    ((5 4) (2 1)) ((5 5) (0 1)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k))
-  (conf start-ch)
-  (auth start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (operation encryption-test (displaced 2 6 dev-up 6) (enc "up" k)
-    (0 1))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv (enc "open" d o n-0 k)) (load lk (cat pt-3 "st-k" d o k))
-      (load ls (cat pt-0 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((send (enc "open" d o n-0 k))) ((send (enc "may I pass" k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
-      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k))
-      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k))))
-  (label 45)
-  (parent 40)
-  (realized)
-  (shape)
-  (maps
-    ((0 1)
-      ((k k) (d d) (o o) (start-ch start-ch) (n n) (d-0 d) (o-0 o)
-        (lk lk) (ls ls) (pt pt-3) (pt-0 pt))))
-  (origs (pt-3 (5 3)) (pt-4 (5 4)) (pt (2 3)) (n (1 3)) (k (0 0))))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (k skey) (start-ch chan)
-    (ls lk locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k) (lk lk)
-    (ls ls))
-  (defstrand owner-open 1 (n n-0) (d d) (o o) (k k))
-  (defstrand user-pass 1 (k k))
-  (deflistener k)
-  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((2 4) (3 1)) ((3 3) (1 0))
-    ((4 0) (3 0)) ((5 0) (1 2)) ((6 1) (0 1)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k))
-  (conf start-ch)
-  (auth start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (operation encryption-test (added-listener k) (enc "up" k) (0 1))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k)) (load lk (cat pt-2 "st-k" d o k))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((send (enc "open" d o n-0 k))) ((send (enc "may I pass" k)))
-    ((recv k) (send k)))
-  (label 46)
-  (parent 40)
-  (seen 51)
-  (unrealized (6 0))
-  (comment "8 in cohort - 1 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (k skey) (start-ch chan)
-    (ls lk locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k) (lk lk)
-    (ls ls))
-  (defstrand owner-open 1 (n n-0) (d d) (o o) (k k))
-  (deflistener k)
-  (precedes ((0 0) (2 0)) ((2 4) (3 1)) ((2 4) (5 0)) ((3 3) (1 0))
-    ((4 0) (3 0)) ((5 1) (1 2)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k))
-  (conf start-ch)
-  (auth start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule eff-dev-up-3)
-  (operation nonce-test (displaced 6 2 dev-up 4) k (5 0)
-    (ch-msg start-ch (cat "power-up" d o k)))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k)) (load lk (cat pt-2 "st-k" d o k))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((send (enc "open" d o n-0 k))) ((recv k) (send k)))
-  (label 47)
-  (parent 41)
-  (unrealized (0 1) (5 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton subatomic-open-closed
-  (vars (any old old1 old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch-0))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k-0)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k-0) (start-ch start-ch))
-  (defstrand user-pass 1 (k k))
-  (defstrand dev-up 6 (old old-0) (old1 old1-0) (d d) (o o) (k k)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (precedes ((0 0) (6 0)) ((2 3) (1 0)) ((3 4) (2 1)) ((3 4) (6 1))
-    ((4 0) (3 0)) ((5 0) (1 2)) ((6 4) (2 2)) ((6 5) (0 1)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch start-ch-0)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (operation encryption-test (displaced 2 7 dev-up 6) (enc "up" k)
-    (0 1))
-  (traces ((send start-ch-0 (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-7 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-3 "st-k" d o k-0))
-      (load ls (cat pt-0 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch (cat "power-up" d o k-0)) (load lk (cat pt-1 old))
-      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k-0))
-      (stor ls (cat pt-4 "st" d o)))
-    ((send start-ch (cat "power-up" d o k-0)))
-    ((send (enc "may I pass" k)))
-    ((recv start-ch-0 (cat "power-up" d o k)) (load lk (cat pt-5 old-0))
-      (load ls (cat pt-6 old1-0)) (stor lk (cat pt-7 "st-k" d o k))
-      (stor ls (cat pt-8 "st" d o)) (send (enc "up" k))))
-  (label 48)
-  (parent 43)
-  (realized)
-  (shape)
-  (maps
-    ((0 1)
-      ((k k) (d d) (o o) (start-ch start-ch-0) (n n) (d-0 d) (o-0 o)
-        (lk lk) (ls ls) (pt pt-7) (pt-0 pt))))
-  (origs (pt-7 (6 3)) (pt-8 (6 4)) (pt-3 (3 3)) (pt-4 (3 4)) (pt (2 3))
-    (n (1 3)) (k (0 0))))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k-0)
-    (start-ch start-ch-0))
-  (defstrand user-pass 1 (k k))
-  (deflistener k)
-  (precedes ((0 0) (2 0)) ((0 0) (7 0)) ((2 4) (3 2)) ((3 3) (1 0))
-    ((4 4) (2 1)) ((4 4) (3 1)) ((5 0) (4 0)) ((6 0) (1 2))
-    ((7 1) (0 1)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch start-ch-0)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (operation encryption-test (added-listener k) (enc "up" k) (0 1))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0)) (stor ls (cat pt-8 "st" d o)))
-    ((send start-ch-0 (cat "power-up" d o k-0)))
-    ((send (enc "may I pass" k))) ((recv k) (send k)))
-  (label 49)
-  (parent 43)
-  (seen 52)
-  (unrealized (7 0))
-  (comment "8 in cohort - 1 not yet seen"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k-0)
-    (start-ch start-ch-0))
-  (deflistener k)
-  (precedes ((0 0) (2 0)) ((2 4) (3 2)) ((2 4) (6 0)) ((3 3) (1 0))
-    ((4 4) (2 1)) ((4 4) (3 1)) ((5 0) (4 0)) ((6 1) (1 2)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch start-ch-0)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule eff-dev-up-3)
-  (operation nonce-test (displaced 7 2 dev-up 4) k (6 0)
-    (ch-msg start-ch (cat "power-up" d o k)))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0)) (stor ls (cat pt-8 "st" d o)))
-    ((send start-ch-0 (cat "power-up" d o k-0))) ((recv k) (send k)))
-  (label 50)
-  (parent 44)
-  (unrealized (0 1) (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (k skey) (start-ch chan)
-    (ls lk locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k) (lk lk)
-    (ls ls))
-  (defstrand owner-open 1 (n n-0) (d d) (o o) (k k))
-  (defstrand user-pass 1 (k k))
-  (deflistener k)
-  (precedes ((0 0) (2 0)) ((2 4) (3 1)) ((2 4) (6 0)) ((3 3) (1 0))
-    ((4 0) (3 0)) ((5 0) (1 2)) ((6 1) (0 1)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k))
-  (conf start-ch)
-  (auth start-ch)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule eff-dev-up-3)
-  (operation nonce-test (displaced 7 2 dev-up 4) k (6 0)
-    (ch-msg start-ch (cat "power-up" d o k)))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k)) (load lk (cat pt-2 "st-k" d o k))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((send (enc "open" d o n-0 k))) ((send (enc "may I pass" k)))
-    ((recv k) (send k)))
-  (label 51)
-  (parent 46)
-  (unrealized (6 0))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton subatomic-open-closed
-  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
-    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
-    (start-ch start-ch-0 chan) (lk ls locn))
-  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
-  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
-  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
-    (start-ch start-ch) (lk lk) (ls ls))
-  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
-    (ls ls))
-  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
-    (start-ch start-ch-0) (lk lk) (ls ls))
-  (defstrand owner-power-dev 1 (d d) (o o) (k k-0)
-    (start-ch start-ch-0))
-  (defstrand user-pass 1 (k k))
-  (deflistener k)
-  (precedes ((0 0) (2 0)) ((2 4) (3 2)) ((2 4) (7 0)) ((3 3) (1 0))
-    ((4 4) (2 1)) ((4 4) (3 1)) ((5 0) (4 0)) ((6 0) (1 2))
-    ((7 1) (0 1)))
-  (uniq-orig n k)
-  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
-  (conf start-ch start-ch-0)
-  (auth start-ch start-ch-0)
-  (facts (same-dev ls lk) (no-state-split))
-  (rule eff-dev-up-3)
-  (operation nonce-test (displaced 8 2 dev-up 4) k (7 0)
-    (ch-msg start-ch (cat "power-up" d o k)))
-  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
-    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
-      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
-    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
-      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
-      (stor ls (cat pt-3 "st" d o)))
-    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
-      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
-    ((recv start-ch-0 (cat "power-up" d o k-0))
-      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
-      (stor lk (cat pt-7 "st-k" d o k-0)) (stor ls (cat pt-8 "st" d o)))
-    ((send start-ch-0 (cat "power-up" d o k-0)))
-    ((send (enc "may I pass" k))) ((recv k) (send k)))
-  (label 52)
-  (parent 49)
-  (unrealized (7 0))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
diff --git a/tst/weakened-subatomic-open-closed_shapes.tst b/tst/weakened-subatomic-open-closed_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/weakened-subatomic-open-closed_shapes.tst
@@ -0,0 +1,932 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald weakened-subatomic-open-closed (bound 40))
+
+(comment "CPSA 4.3.0")
+
+(comment "All input read from tst/weakened-subatomic-open-closed.scm")
+
+(comment "Strand count bounded at 40")
+
+(defprotocol subatomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (load ls old1) (stor lk (cat "st-k" d o k))
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch)
+    (critical-sections (1 4))
+    (facts (same-dev ls lk)))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "open" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o o)) (send n))
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (facts (same-dev ls lk)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n))
+    (gen-st (cat "st-k" d o k))
+    (critical-sections (1 3))
+    (facts (same-dev ls lk)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (load ls (cat "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    (uniq-orig n)
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (critical-sections (0 1))
+    (facts (same-dev ls lk)))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule fact-dev-up-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-up" z 3) (p "dev-up" "ls" z ls)
+          (p "dev-up" "lk" z lk))
+        (fact same-dev ls lk))))
+  (defrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
+  (defrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
+  (defrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 2) (trans z 1))))
+  (defrule fact-dev-open-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-open" z 3) (p "dev-open" "ls" z ls)
+          (p "dev-open" "lk" z lk))
+        (fact same-dev ls lk))))
+  (defrule gen-st-dev-open-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule gen-st-dev-open-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d))
+        (gen-st (cat "st" d o o)))))
+  (defrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defrule trRl_dev-open-at-2
+    (forall ((z strd)) (implies (p "dev-open" z 3) (trans z 2))))
+  (defrule fact-dev-close-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-close" z 3) (p "dev-close" "ls" z ls)
+          (p "dev-close" "lk" z lk))
+        (fact same-dev ls lk))))
+  (defrule gen-st-dev-close-0
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 3) (trans z 2))))
+  (defrule fact-dev-pass-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-pass" z 2) (p "dev-pass" "ls" z ls)
+          (p "dev-pass" "lk" z lk))
+        (fact same-dev ls lk))))
+  (defrule gen-st-dev-pass-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule gen-st-dev-pass-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d))
+        (gen-st (cat "st" d o o)))))
+  (defrule same-dev-lk-ls
+    (forall ((lk ls ls-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
+        (= ls ls-0))))
+  (defrule same-dev-ls-lk
+    (forall ((ls lk lk-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
+        (= lk lk-0))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defrule eff-dev-up-3
+    (forall ((z z1 strd) (i indx))
+      (implies
+        (and (p "dev-up" z 4) (prec z 3 z1 i))
+        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
+  (defrule cau-dev-up-2
+    (forall ((z z1 strd) (i indx))
+      (implies
+        (and (p "dev-up" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defrule cau-dev-close-2
+    (forall ((z z1 strd) (i indx))
+      (implies
+        (and (p "dev-close" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defrule cau-dev-pass-1
+    (forall ((z z1 strd) (i indx))
+      (implies
+        (and (p "dev-pass" z 2) (prec z1 i z 1))
+        (or (= z z1) (prec z1 i z 0))))))
+
+(defskeleton subatomic-open-closed
+  (vars (d o name) (k skey) (start-ch chan))
+  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
+  (deflistener k)
+  (uniq-orig k)
+  (conf start-ch)
+  (facts (no-state-split))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((recv k) (send k)))
+  (label 0)
+  (unrealized (0 1) (1 0))
+  (preskeleton)
+  (origs (k (0 0)))
+  (comment "Not a skeleton"))
+
+(comment "Nothing left to do")
+
+(defprotocol subatomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (load ls old1) (stor lk (cat "st-k" d o k))
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch)
+    (critical-sections (1 4))
+    (facts (same-dev ls lk)))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "open" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o o)) (send n))
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (facts (same-dev ls lk)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n))
+    (gen-st (cat "st-k" d o k))
+    (critical-sections (1 3))
+    (facts (same-dev ls lk)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (load ls (cat "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    (uniq-orig n)
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (critical-sections (0 1))
+    (facts (same-dev ls lk)))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule fact-dev-up-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-up" z 3) (p "dev-up" "ls" z ls)
+          (p "dev-up" "lk" z lk))
+        (fact same-dev ls lk))))
+  (defrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
+  (defrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
+  (defrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 2) (trans z 1))))
+  (defrule fact-dev-open-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-open" z 3) (p "dev-open" "ls" z ls)
+          (p "dev-open" "lk" z lk))
+        (fact same-dev ls lk))))
+  (defrule gen-st-dev-open-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule gen-st-dev-open-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d))
+        (gen-st (cat "st" d o o)))))
+  (defrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defrule trRl_dev-open-at-2
+    (forall ((z strd)) (implies (p "dev-open" z 3) (trans z 2))))
+  (defrule fact-dev-close-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-close" z 3) (p "dev-close" "ls" z ls)
+          (p "dev-close" "lk" z lk))
+        (fact same-dev ls lk))))
+  (defrule gen-st-dev-close-0
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 3) (trans z 2))))
+  (defrule fact-dev-pass-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-pass" z 2) (p "dev-pass" "ls" z ls)
+          (p "dev-pass" "lk" z lk))
+        (fact same-dev ls lk))))
+  (defrule gen-st-dev-pass-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule gen-st-dev-pass-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d))
+        (gen-st (cat "st" d o o)))))
+  (defrule same-dev-lk-ls
+    (forall ((lk ls ls-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
+        (= ls ls-0))))
+  (defrule same-dev-ls-lk
+    (forall ((ls lk lk-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
+        (= lk lk-0))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defrule eff-dev-up-3
+    (forall ((z z1 strd) (i indx))
+      (implies
+        (and (p "dev-up" z 4) (prec z 3 z1 i))
+        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
+  (defrule cau-dev-up-2
+    (forall ((z z1 strd) (i indx))
+      (implies
+        (and (p "dev-up" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defrule cau-dev-close-2
+    (forall ((z z1 strd) (i indx))
+      (implies
+        (and (p "dev-close" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defrule cau-dev-pass-1
+    (forall ((z z1 strd) (i indx))
+      (implies
+        (and (p "dev-pass" z 2) (prec z1 i z 1))
+        (or (= z z1) (prec z1 i z 0))))))
+
+(defskeleton subatomic-open-closed
+  (vars (n text) (d o name) (pt pt-0 pval) (k skey) (lk ls locn))
+  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
+  (uniq-orig n)
+  (facts (no-state-split))
+  (traces
+    ((load lk (cat pt "st-k" d o k)) (load ls (cat pt-0 "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k))))
+  (label 3)
+  (realized)
+  (origs (n (0 3)))
+  (comment "Not closed under rules"))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any mesg) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (k skey) (start-ch chan)
+    (ls lk locn))
+  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
+  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k) (lk lk)
+    (ls ls))
+  (precedes ((1 4) (3 1)) ((2 0) (1 0)) ((3 3) (0 0)))
+  (uniq-orig n)
+  (genStV (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (rule eff-dev-up-3)
+  (operation channel-test (displaced 4 1 dev-up 4)
+    (ch-msg lk (cat pt-5 "st-k" d o k-0)) (3 1))
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((send start-ch (cat "power-up" d o k)))
+    ((recv (enc "open" d o n-0 k)) (load lk (cat pt-2 "st-k" d o k))
+      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o))))
+  (label 8)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps
+    ((0) ((k k) (n n) (d d) (o o) (lk lk) (ls ls) (pt pt-2) (pt-0 pt))))
+  (origs (pt-2 (1 3)) (pt-3 (1 4)) (pt (3 3)) (n (0 3))))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
+    (start-ch start-ch-0 chan) (lk ls locn))
+  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
+  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
+    (ls ls))
+  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
+    (start-ch start-ch-0) (lk lk) (ls ls))
+  (defstrand owner-power-dev 1 (d d) (o o) (k k-0)
+    (start-ch start-ch-0))
+  (precedes ((1 4) (3 2)) ((2 0) (1 0)) ((3 3) (0 0)) ((4 4) (1 1))
+    ((4 4) (3 1)) ((5 0) (4 0)))
+  (uniq-orig n)
+  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
+  (conf start-ch start-ch-0)
+  (auth start-ch start-ch-0)
+  (facts (same-dev ls lk) (no-state-split))
+  (operation channel-test (added-strand owner-power-dev 1)
+    (ch-msg start-ch-0 (cat "power-up" d o k-0)) (4 0))
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((send start-ch (cat "power-up" d o k)))
+    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
+      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
+    ((recv start-ch-0 (cat "power-up" d o k-0))
+      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
+      (stor lk (cat pt-7 "st-k" d o k-0)) (stor ls (cat pt-8 "st" d o)))
+    ((send start-ch-0 (cat "power-up" d o k-0))))
+  (label 16)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps
+    ((0) ((k k) (n n) (d d) (o o) (lk lk) (ls ls) (pt pt-2) (pt-0 pt))))
+  (origs (pt-7 (4 3)) (pt-8 (4 4)) (pt (3 3)) (pt-2 (1 3)) (pt-3 (1 4))
+    (n (0 3))))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
+    (start-ch start-ch-0 chan) (lk ls locn))
+  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
+  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
+    (ls ls))
+  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
+    (start-ch start-ch-0) (lk lk) (ls ls))
+  (defstrand owner-power-dev 1 (d d) (o o) (k k-0)
+    (start-ch start-ch-0))
+  (precedes ((1 4) (3 2)) ((2 0) (1 0)) ((3 3) (0 0)) ((4 3) (1 1))
+    ((4 3) (3 1)) ((4 4) (3 2)) ((5 0) (4 0)))
+  (uniq-orig n)
+  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
+  (conf start-ch start-ch-0)
+  (auth start-ch start-ch-0)
+  (facts (same-dev ls lk) (no-state-split))
+  (rule eff-dev-up-3)
+  (operation channel-test (added-strand owner-power-dev 1)
+    (ch-msg start-ch-0 (cat "power-up" d o k-0)) (4 0))
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((send start-ch (cat "power-up" d o k)))
+    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
+      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
+    ((recv start-ch-0 (cat "power-up" d o k-0))
+      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
+      (stor lk (cat pt-7 "st-k" d o k-0)) (stor ls (cat pt-8 "st" d o)))
+    ((send start-ch-0 (cat "power-up" d o k-0))))
+  (label 17)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps
+    ((0) ((k k) (n n) (d d) (o o) (lk lk) (ls ls) (pt pt-2) (pt-0 pt))))
+  (origs (pt-7 (4 3)) (pt-8 (4 4)) (pt (3 3)) (pt-2 (1 3)) (pt-3 (1 4))
+    (n (0 3))))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
+    (start-ch start-ch-0 chan) (lk ls locn))
+  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
+  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
+    (ls ls))
+  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
+    (start-ch start-ch-0) (lk lk) (ls ls))
+  (defstrand owner-power-dev 1 (d d) (o o) (k k-0)
+    (start-ch start-ch-0))
+  (precedes ((1 4) (3 2)) ((2 0) (1 0)) ((3 3) (0 0)) ((4 3) (3 1))
+    ((4 4) (1 1)) ((5 0) (4 0)))
+  (uniq-orig n)
+  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
+  (conf start-ch start-ch-0)
+  (auth start-ch start-ch-0)
+  (facts (same-dev ls lk) (no-state-split))
+  (rule cau-dev-up-2 eff-dev-up-3)
+  (operation channel-test (added-strand owner-power-dev 1)
+    (ch-msg start-ch-0 (cat "power-up" d o k-0)) (4 0))
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((send start-ch (cat "power-up" d o k)))
+    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
+      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
+    ((recv start-ch-0 (cat "power-up" d o k-0))
+      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
+      (stor lk (cat pt-7 "st-k" d o k-0)) (stor ls (cat pt-8 "st" d o)))
+    ((send start-ch-0 (cat "power-up" d o k-0))))
+  (label 18)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps
+    ((0) ((k k) (n n) (d d) (o o) (lk lk) (ls ls) (pt pt-2) (pt-0 pt))))
+  (origs (pt-7 (4 3)) (pt-8 (4 4)) (pt (3 3)) (pt-2 (1 3)) (pt-3 (1 4))
+    (n (0 3))))
+
+(defskeleton subatomic-open-closed
+  (vars (old old1 any old-0 old1-0 mesg) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
+    (start-ch start-ch-0 chan) (lk ls locn))
+  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand owner-power-dev 1 (d d) (o o) (k k) (start-ch start-ch))
+  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
+    (ls ls))
+  (defstrand dev-up 5 (old old-0) (old1 old1-0) (d d) (o o) (k k-0)
+    (start-ch start-ch-0) (lk lk) (ls ls))
+  (defstrand owner-power-dev 1 (d d) (o o) (k k-0)
+    (start-ch start-ch-0))
+  (precedes ((1 4) (3 2)) ((2 0) (1 0)) ((3 3) (0 0)) ((4 3) (1 1))
+    ((4 3) (3 1)) ((4 4) (0 0)) ((5 0) (4 0)))
+  (uniq-orig n)
+  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
+  (conf start-ch start-ch-0)
+  (auth start-ch start-ch-0)
+  (facts (same-dev ls lk) (no-state-split))
+  (rule eff-dev-up-3)
+  (operation channel-test (added-strand owner-power-dev 1)
+    (ch-msg start-ch-0 (cat "power-up" d o k-0)) (4 0))
+  (traces
+    ((load lk (cat pt-2 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-0 old))
+      (load ls (cat pt-1 old1)) (stor lk (cat pt-2 "st-k" d o k))
+      (stor ls (cat pt-3 "st" d o)))
+    ((send start-ch (cat "power-up" d o k)))
+    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-7 "st-k" d o k-0))
+      (load ls (cat pt-4 "st" d any)) (stor ls (cat pt "st" d o o)))
+    ((recv start-ch-0 (cat "power-up" d o k-0))
+      (load lk (cat pt-5 old-0)) (load ls (cat pt-6 old1-0))
+      (stor lk (cat pt-7 "st-k" d o k-0)) (stor ls (cat pt-8 "st" d o)))
+    ((send start-ch-0 (cat "power-up" d o k-0))))
+  (label 19)
+  (parent 3)
+  (realized)
+  (shape)
+  (maps
+    ((0) ((k k) (n n) (d d) (o o) (lk lk) (ls ls) (pt pt-2) (pt-0 pt))))
+  (origs (pt-7 (4 3)) (pt-8 (4 4)) (pt (3 3)) (pt-2 (1 3)) (pt-3 (1 4))
+    (n (0 3))))
+
+(comment "Nothing left to do")
+
+(defprotocol subatomic-open-closed basic
+  (defrole dev-up
+    (vars (k skey) (d o name) (old old1 mesg) (start-ch chan)
+      (lk ls locn))
+    (trace (recv start-ch (cat "power-up" d o k)) (load lk old)
+      (load ls old1) (stor lk (cat "st-k" d o k))
+      (stor ls (cat "st" d o)) (send (enc "up" k)))
+    (auth start-ch)
+    (critical-sections (1 4))
+    (facts (same-dev ls lk)))
+  (defrole owner-power-dev
+    (vars (k skey) (d o name) (start-ch chan))
+    (trace (send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    (conf start-ch))
+  (defrole owner-open
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "open" d o n k)) (recv n)))
+  (defrole owner-close
+    (vars (k skey) (n text) (d o name))
+    (trace (send (enc "close" d o n k)) (recv n)))
+  (defrole dev-open
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "open" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o o)) (send n))
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (facts (same-dev ls lk)))
+  (defrole dev-close
+    (vars (k skey) (n text) (any mesg) (d o name) (lk ls locn))
+    (trace (recv (enc "close" d o n k)) (load lk (cat "st-k" d o k))
+      (load ls (cat "st" d any)) (stor ls (cat "st" d o)) (send n))
+    (gen-st (cat "st-k" d o k))
+    (critical-sections (1 3))
+    (facts (same-dev ls lk)))
+  (defrole dev-pass
+    (vars (k skey) (n text) (d o name) (lk ls locn))
+    (trace (load lk (cat "st-k" d o k)) (load ls (cat "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    (uniq-orig n)
+    (gen-st (cat "st-k" d o k) (cat "st" d (cat o o)))
+    (critical-sections (0 1))
+    (facts (same-dev ls lk)))
+  (defrole user-pass
+    (vars (k skey))
+    (trace (send (enc "may I pass" k)) (recv (enc "you may pass" k))))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule fact-dev-up-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-up" z 3) (p "dev-up" "ls" z ls)
+          (p "dev-up" "lk" z lk))
+        (fact same-dev ls lk))))
+  (defrule trRl_dev-up-at-4
+    (forall ((z strd)) (implies (p "dev-up" z 5) (trans z 4))))
+  (defrule trRl_dev-up-at-3
+    (forall ((z strd)) (implies (p "dev-up" z 4) (trans z 3))))
+  (defrule trRl_dev-up-at-2
+    (forall ((z strd)) (implies (p "dev-up" z 3) (trans z 2))))
+  (defrule trRl_dev-up-at-1
+    (forall ((z strd)) (implies (p "dev-up" z 2) (trans z 1))))
+  (defrule fact-dev-open-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-open" z 3) (p "dev-open" "ls" z ls)
+          (p "dev-open" "lk" z lk))
+        (fact same-dev ls lk))))
+  (defrule gen-st-dev-open-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "k" z k)
+          (p "dev-open" "o" z o) (p "dev-open" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule gen-st-dev-open-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-open" z 1) (p "dev-open" "o" z o)
+          (p "dev-open" "d" z d))
+        (gen-st (cat "st" d o o)))))
+  (defrule trRl_dev-open-at-3
+    (forall ((z strd)) (implies (p "dev-open" z 4) (trans z 3))))
+  (defrule trRl_dev-open-at-2
+    (forall ((z strd)) (implies (p "dev-open" z 3) (trans z 2))))
+  (defrule fact-dev-close-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-close" z 3) (p "dev-close" "ls" z ls)
+          (p "dev-close" "lk" z lk))
+        (fact same-dev ls lk))))
+  (defrule gen-st-dev-close-0
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-close" z 1) (p "dev-close" "k" z k)
+          (p "dev-close" "o" z o) (p "dev-close" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule trRl_dev-close-at-3
+    (forall ((z strd)) (implies (p "dev-close" z 4) (trans z 3))))
+  (defrule trRl_dev-close-at-2
+    (forall ((z strd)) (implies (p "dev-close" z 3) (trans z 2))))
+  (defrule fact-dev-pass-same-dev0
+    (forall ((z strd) (ls lk locn))
+      (implies
+        (and (p "dev-pass" z 2) (p "dev-pass" "ls" z ls)
+          (p "dev-pass" "lk" z lk))
+        (fact same-dev ls lk))))
+  (defrule gen-st-dev-pass-1
+    (forall ((z strd) (k skey) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "k" z k)
+          (p "dev-pass" "o" z o) (p "dev-pass" "d" z d))
+        (gen-st (cat "st-k" d o k)))))
+  (defrule gen-st-dev-pass-0
+    (forall ((z strd) (o d name))
+      (implies
+        (and (p "dev-pass" z 1) (p "dev-pass" "o" z o)
+          (p "dev-pass" "d" z d))
+        (gen-st (cat "st" d o o)))))
+  (defrule same-dev-lk-ls
+    (forall ((lk ls ls-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls-0 lk))
+        (= ls ls-0))))
+  (defrule same-dev-ls-lk
+    (forall ((ls lk lk-0 locn))
+      (implies
+        (and (fact same-dev ls lk) (fact same-dev ls lk-0))
+        (= lk lk-0))))
+  (defrule power-deliver-once
+    (forall ((z1 z2 strd) (k skey))
+      (implies
+        (and (p "dev-up" z1 2) (p "dev-up" z2 2) (p "dev-up" "k" z1 k)
+          (p "dev-up" "k" z2 k))
+        (= z1 z2))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1)))))
+  (defrule eff-dev-up-3
+    (forall ((z z1 strd) (i indx))
+      (implies
+        (and (p "dev-up" z 4) (prec z 3 z1 i))
+        (or (= z z1) (and (p "dev-up" z 5) (prec z 4 z1 i))))))
+  (defrule cau-dev-up-2
+    (forall ((z z1 strd) (i indx))
+      (implies
+        (and (p "dev-up" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defrule cau-dev-close-2
+    (forall ((z z1 strd) (i indx))
+      (implies
+        (and (p "dev-close" z 3) (prec z1 i z 2))
+        (or (= z z1) (prec z1 i z 1)))))
+  (defrule cau-dev-pass-1
+    (forall ((z z1 strd) (i indx))
+      (implies
+        (and (p "dev-pass" z 2) (prec z1 i z 1))
+        (or (= z z1) (prec z1 i z 0))))))
+
+(defskeleton subatomic-open-closed
+  (vars (n text) (d o d-0 o-0 name) (pt pt-0 pval) (k skey)
+    (start-ch chan) (lk ls locn))
+  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
+  (defstrand dev-pass 4 (n n) (d d-0) (o o-0) (k k) (lk lk) (ls ls))
+  (uniq-orig n k)
+  (conf start-ch)
+  (facts (no-state-split))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt "st-k" d-0 o-0 k))
+      (load ls (cat pt-0 "st" d-0 o-0 o-0)) (recv (enc "may I pass" k))
+      (send (enc "you may pass" n k))))
+  (label 20)
+  (unrealized (0 1) (1 0) (1 2))
+  (preskeleton)
+  (origs (n (1 3)) (k (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton subatomic-open-closed
+  (vars (any old old1 mesg) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (k skey) (start-ch chan)
+    (lk ls locn))
+  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch))
+  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k) (lk lk)
+    (ls ls))
+  (defstrand owner-open 1 (n n-0) (d d) (o o) (k k))
+  (defstrand user-pass 1 (k k))
+  (defstrand dev-up 6 (old old) (old1 old1) (d d) (o o) (k k)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (precedes ((0 0) (5 0)) ((2 3) (1 0)) ((3 0) (2 0)) ((4 0) (1 2))
+    ((5 4) (2 1)) ((5 5) (0 1)))
+  (uniq-orig n k)
+  (genStV (cat "st" d o o) (cat "st-k" d o k))
+  (conf start-ch)
+  (auth start-ch)
+  (facts (same-dev ls lk) (no-state-split))
+  (operation encryption-test (displaced 2 6 dev-up 6) (enc "up" k)
+    (0 1))
+  (traces ((send start-ch (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt-3 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv (enc "open" d o n-0 k)) (load lk (cat pt-3 "st-k" d o k))
+      (load ls (cat pt-0 "st" d any)) (stor ls (cat pt "st" d o o)))
+    ((send (enc "open" d o n-0 k))) ((send (enc "may I pass" k)))
+    ((recv start-ch (cat "power-up" d o k)) (load lk (cat pt-1 old))
+      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k))
+      (stor ls (cat pt-4 "st" d o)) (send (enc "up" k))))
+  (label 45)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((k k) (d d) (o o) (start-ch start-ch) (n n) (d-0 d) (o-0 o)
+        (lk lk) (ls ls) (pt pt-3) (pt-0 pt))))
+  (origs (pt-3 (5 3)) (pt-4 (5 4)) (pt (2 3)) (n (1 3)) (k (0 0))))
+
+(defskeleton subatomic-open-closed
+  (vars (any old old1 old-0 old1-0 mesg) (n n-0 text) (d o name)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pt-8 pval) (k k-0 skey)
+    (start-ch start-ch-0 chan) (lk ls locn))
+  (defstrand owner-power-dev 2 (d d) (o o) (k k) (start-ch start-ch-0))
+  (defstrand dev-pass 4 (n n) (d d) (o o) (k k) (lk lk) (ls ls))
+  (defstrand dev-open 4 (any any) (n n-0) (d d) (o o) (k k-0) (lk lk)
+    (ls ls))
+  (defstrand dev-up 5 (old old) (old1 old1) (d d) (o o) (k k-0)
+    (start-ch start-ch) (lk lk) (ls ls))
+  (defstrand owner-power-dev 1 (d d) (o o) (k k-0) (start-ch start-ch))
+  (defstrand user-pass 1 (k k))
+  (defstrand dev-up 6 (old old-0) (old1 old1-0) (d d) (o o) (k k)
+    (start-ch start-ch-0) (lk lk) (ls ls))
+  (precedes ((0 0) (6 0)) ((2 3) (1 0)) ((3 4) (2 1)) ((3 4) (6 1))
+    ((4 0) (3 0)) ((5 0) (1 2)) ((6 4) (2 2)) ((6 5) (0 1)))
+  (uniq-orig n k)
+  (genStV (cat "st" d o o) (cat "st-k" d o k) (cat "st-k" d o k-0))
+  (conf start-ch start-ch-0)
+  (auth start-ch start-ch-0)
+  (facts (same-dev ls lk) (no-state-split))
+  (operation encryption-test (displaced 2 7 dev-up 6) (enc "up" k)
+    (0 1))
+  (traces ((send start-ch-0 (cat "power-up" d o k)) (recv (enc "up" k)))
+    ((load lk (cat pt-7 "st-k" d o k)) (load ls (cat pt "st" d o o))
+      (recv (enc "may I pass" k)) (send (enc "you may pass" n k)))
+    ((recv (enc "open" d o n-0 k-0)) (load lk (cat pt-3 "st-k" d o k-0))
+      (load ls (cat pt-0 "st" d any)) (stor ls (cat pt "st" d o o)))
+    ((recv start-ch (cat "power-up" d o k-0)) (load lk (cat pt-1 old))
+      (load ls (cat pt-2 old1)) (stor lk (cat pt-3 "st-k" d o k-0))
+      (stor ls (cat pt-4 "st" d o)))
+    ((send start-ch (cat "power-up" d o k-0)))
+    ((send (enc "may I pass" k)))
+    ((recv start-ch-0 (cat "power-up" d o k)) (load lk (cat pt-5 old-0))
+      (load ls (cat pt-6 old1-0)) (stor lk (cat pt-7 "st-k" d o k))
+      (stor ls (cat pt-8 "st" d o)) (send (enc "up" k))))
+  (label 48)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps
+    ((0 1)
+      ((k k) (d d) (o o) (start-ch start-ch-0) (n n) (d-0 d) (o-0 o)
+        (lk lk) (ls ls) (pt pt-7) (pt-0 pt))))
+  (origs (pt-7 (6 3)) (pt-8 (6 4)) (pt-3 (3 3)) (pt-4 (3 4)) (pt (2 3))
+    (n (1 3)) (k (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/weird.tst b/tst/weird.tst
--- a/tst/weird.tst
+++ b/tst/weird.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/weird.scm")
 
 (defprotocol weird basic
@@ -56,6 +56,7 @@
   (precedes ((2 0) (1 0)))
   (uniq-orig k)
   (operation encryption-test (added-strand guesser 1) (enc a k) (1 0))
+  (strand-map 0 1)
   (traces ((send k)) ((recv (enc a k))) ((send (enc a k))))
   (label 2)
   (parent 1)
@@ -72,6 +73,7 @@
   (precedes ((0 0) (2 0)) ((2 1) (1 0)))
   (uniq-orig k)
   (operation encryption-test (added-listener k) (enc a k) (1 0))
+  (strand-map 0 1)
   (traces ((send k)) ((recv (enc a k))) ((recv k) (send k)))
   (label 3)
   (parent 1)
@@ -85,6 +87,7 @@
   (precedes ((0 0) (1 0)))
   (uniq-orig k)
   (operation generalization deleted (2 0))
+  (strand-map 0 1)
   (traces ((send k)) ((recv (enc a k))))
   (label 4)
   (parent 3)
@@ -142,6 +145,7 @@
   (realized)
   (dead)
   (origs)
+  (ugens (k (1 0)) (k (0 0)))
   (comment "Input cannot be made into a skeleton--nothing to do"))
 
 (defprotocol weird-gen basic
@@ -165,6 +169,7 @@
   (unrealized (1 0))
   (preskeleton)
   (origs)
+  (ugens (k (0 0)))
   (comment "Not a skeleton"))
 
 (defskeleton weird-gen
@@ -179,7 +184,8 @@
   (realized)
   (shape)
   (maps ((0 1) ((k k) (a a))))
-  (origs))
+  (origs)
+  (ugens (k (0 0))))
 
 (comment "Nothing left to do")
 
@@ -205,6 +211,7 @@
   (realized)
   (shape)
   (maps ((0 1) ((k k) (a a))))
-  (origs))
+  (origs)
+  (ugens (k (0 0))))
 
 (comment "Nothing left to do")
diff --git a/tst/weird_shapes.tst b/tst/weird_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/weird_shapes.tst
@@ -0,0 +1,86 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/weird.scm")
+
+(defprotocol weird basic
+  (defrole originator (vars (k skey)) (trace (send k)) (uniq-orig k))
+  (defrole guesser (vars (k skey) (a name)) (trace (send (enc a k))))
+  (defrole encryptor (vars (k skey) (a name)) (trace (recv (enc a k))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton weird
+  (vars (k skey) (a name))
+  (defstrand originator 1 (k k))
+  (defstrand guesser 1 (k k) (a a))
+  (uniq-orig k)
+  (traces ((send k)) ((send (enc a k))))
+  (label 0)
+  (realized)
+  (shape)
+  (maps ((0 1) ((k k) (a a))))
+  (origs (k (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol weird basic
+  (defrole originator (vars (k skey)) (trace (send k)) (uniq-orig k))
+  (defrole guesser (vars (k skey) (a name)) (trace (send (enc a k))))
+  (defrole encryptor (vars (k skey) (a name)) (trace (recv (enc a k))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton weird
+  (vars (k skey) (a name))
+  (defstrand originator 1 (k k))
+  (defstrand encryptor 1 (k k) (a a))
+  (uniq-orig k)
+  (traces ((send k)) ((recv (enc a k))))
+  (label 1)
+  (unrealized (1 0))
+  (origs (k (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton weird
+  (vars (k skey) (a name))
+  (defstrand originator 1 (k k))
+  (defstrand encryptor 1 (k k) (a a))
+  (defstrand guesser 1 (k k) (a a))
+  (precedes ((2 0) (1 0)))
+  (uniq-orig k)
+  (operation encryption-test (added-strand guesser 1) (enc a k) (1 0))
+  (traces ((send k)) ((recv (enc a k))) ((send (enc a k))))
+  (label 2)
+  (parent 1)
+  (realized)
+  (shape)
+  (maps ((0 1) ((k k) (a a))))
+  (origs (k (0 0))))
+
+(defskeleton weird
+  (vars (k skey) (a name))
+  (defstrand originator 1 (k k))
+  (defstrand encryptor 1 (k k) (a a))
+  (precedes ((0 0) (1 0)))
+  (uniq-orig k)
+  (operation generalization deleted (2 0))
+  (traces ((send k)) ((recv (enc a k))))
+  (label 4)
+  (parent 1)
+  (realized)
+  (shape)
+  (maps ((0 1) ((k k) (a a))))
+  (origs (k (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/wide-mouth-frog-scyther.tst b/tst/wide-mouth-frog-scyther.tst
--- a/tst/wide-mouth-frog-scyther.tst
+++ b/tst/wide-mouth-frog-scyther.tst
@@ -1,7 +1,7 @@
 (herald "Wide-Mouth Frog Protocol from Scyther" (bound 8)
   (comment "This protocol has an infinite number of shapes"))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/wide-mouth-frog-scyther.lsp")
 (comment "Strand count bounded at 8")
 
@@ -75,6 +75,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 1)
     (enc b tb a k (ltk b b)) (0 0))
+  (strand-map 0)
   (traces ((recv (enc b tb a k (ltk b b))))
     ((send (cat b (enc b tb a k (ltk b b))))))
   (label 2)
@@ -93,6 +94,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand ks 2)
     (enc t tb a k (ltk b t)) (0 0))
+  (strand-map 0)
   (traces ((recv (enc t tb a k (ltk b t))))
     ((recv (cat a (enc a ta b k (ltk a t))))
       (send (enc t tb a k (ltk b t)))))
@@ -145,6 +147,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 1)
     (enc a ta b k (ltk a t)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (cat a (enc a ta b k (ltk a t))))
       (send (enc t tb a k (ltk b t))))
@@ -165,6 +168,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand ks 2)
     (enc t ta b k (ltk t t)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (cat t (enc t ta b k (ltk t t))))
       (send (enc t tb t k (ltk b t))))
@@ -185,6 +189,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 1)
     (enc b ta-0 t k (ltk b t)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat t (enc t ta b k (ltk t t))))
       (send (enc t tb t k (ltk b t))))
@@ -208,6 +213,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand ks 2)
     (enc t ta-0 t k (ltk t t)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat t (enc t ta t k (ltk t t))))
       (send (enc t tb t k (ltk t t))))
@@ -231,6 +237,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 1)
     (enc t ta-1 t k (ltk t t)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat t (enc t ta t k (ltk t t))))
       (send (enc t tb t k (ltk t t))))
@@ -257,6 +264,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand ks 2)
     (enc t ta-1 t k (ltk t t)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat t (enc t ta t k (ltk t t))))
       (send (enc t tb t k (ltk t t))))
@@ -283,6 +291,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 1)
     (enc t ta-2 t k (ltk t t)) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat t (enc t ta t k (ltk t t))))
       (send (enc t tb t k (ltk t t))))
@@ -312,6 +321,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand ks 2)
     (enc t ta-2 t k (ltk t t)) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat t (enc t ta t k (ltk t t))))
       (send (enc t tb t k (ltk t t))))
@@ -342,6 +352,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 1)
     (enc t ta-3 t k (ltk t t)) (4 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat t (enc t ta t k (ltk t t))))
       (send (enc t tb t k (ltk t t))))
@@ -375,6 +386,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand ks 2)
     (enc t ta-3 t k (ltk t t)) (4 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat t (enc t ta t k (ltk t t))))
       (send (enc t tb t k (ltk t t))))
@@ -408,6 +420,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 1)
     (enc t ta-4 t k (ltk t t)) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat t (enc t ta t k (ltk t t))))
       (send (enc t tb t k (ltk t t))))
@@ -444,6 +457,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand ks 2)
     (enc t ta-4 t k (ltk t t)) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat t (enc t ta t k (ltk t t))))
       (send (enc t tb t k (ltk t t))))
@@ -480,6 +494,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 1)
     (enc t ta-5 t k (ltk t t)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat t (enc t ta t k (ltk t t))))
       (send (enc t tb t k (ltk t t))))
@@ -522,6 +537,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand ks 2)
     (enc t ta-5 t k (ltk t t)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat t (enc t ta t k (ltk t t))))
       (send (enc t tb t k (ltk t t))))
diff --git a/tst/wide-mouth-frog-scyther_shapes.tst b/tst/wide-mouth-frog-scyther_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/wide-mouth-frog-scyther_shapes.tst
@@ -0,0 +1,348 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Wide-Mouth Frog Protocol from Scyther"
+  (comment "This protocol has an infinite number of shapes"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/wide-mouth-frog-scyther.lsp")
+
+(defprotocol wide-mouth-frog basic
+  (defrole init
+    (vars (a b t name) (ta text) (k skey))
+    (trace (send (cat a (enc a ta b k (ltk a t))))))
+  (defrole resp
+    (vars (a b t name) (k skey) (tb text))
+    (trace (recv (enc t tb a k (ltk b t)))))
+  (defrole ks
+    (vars (a b t name) (k skey) (ta tb text))
+    (trace (recv (cat a (enc a ta b k (ltk a t))))
+      (send (enc t tb a k (ltk b t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta text) (a t b name))
+  (defstrand init 1 (k k) (ta ta) (a a) (b b) (t t))
+  (non-orig (ltk a t))
+  (uniq-orig k)
+  (traces ((send (cat a (enc a ta b k (ltk a t))))))
+  (label 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (t t) (k k) (b b) (ta ta))))
+  (origs (k (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol wide-mouth-frog basic
+  (defrole init
+    (vars (a b t name) (ta text) (k skey))
+    (trace (send (cat a (enc a ta b k (ltk a t))))))
+  (defrole resp
+    (vars (a b t name) (k skey) (tb text))
+    (trace (recv (enc t tb a k (ltk b t)))))
+  (defrole ks
+    (vars (a b t name) (k skey) (ta tb text))
+    (trace (recv (cat a (enc a ta b k (ltk a t))))
+      (send (enc t tb a k (ltk b t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (tb text) (b t a name))
+  (defstrand resp 1 (k k) (tb tb) (a a) (b b) (t t))
+  (non-orig (ltk b t))
+  (uniq-orig k)
+  (traces ((recv (enc t tb a k (ltk b t)))))
+  (label 1)
+  (unrealized (0 0))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (tb text) (b a name))
+  (defstrand resp 1 (k k) (tb tb) (a a) (b b) (t b))
+  (defstrand init 1 (k k) (ta tb) (a b) (b a) (t b))
+  (precedes ((1 0) (0 0)))
+  (non-orig (ltk b b))
+  (uniq-orig k)
+  (operation encryption-test (added-strand init 1)
+    (enc b tb a k (ltk b b)) (0 0))
+  (traces ((recv (enc b tb a k (ltk b b))))
+    ((send (cat b (enc b tb a k (ltk b b))))))
+  (label 2)
+  (parent 1)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t b) (k k) (a a) (tb tb))))
+  (origs (k (1 0))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (tb ta text) (b t a name))
+  (defstrand resp 1 (k k) (tb tb) (a a) (b b) (t t))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a a) (b b) (t t))
+  (precedes ((1 1) (0 0)))
+  (non-orig (ltk b t))
+  (uniq-orig k)
+  (operation encryption-test (added-strand ks 2)
+    (enc t tb a k (ltk b t)) (0 0))
+  (traces ((recv (enc t tb a k (ltk b t))))
+    ((recv (cat a (enc a ta b k (ltk a t))))
+      (send (enc t tb a k (ltk b t)))))
+  (label 3)
+  (parent 1)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (k k) (a a) (tb tb))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wide-mouth-frog basic
+  (defrole init
+    (vars (a b t name) (ta text) (k skey))
+    (trace (send (cat a (enc a ta b k (ltk a t))))))
+  (defrole resp
+    (vars (a b t name) (k skey) (tb text))
+    (trace (recv (enc t tb a k (ltk b t)))))
+  (defrole ks
+    (vars (a b t name) (k skey) (ta tb text))
+    (trace (recv (cat a (enc a ta b k (ltk a t))))
+      (send (enc t tb a k (ltk b t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta tb text) (a b t name))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a a) (b b) (t t))
+  (non-orig (ltk a t) (ltk b t))
+  (uniq-orig k)
+  (traces
+    ((recv (cat a (enc a ta b k (ltk a t))))
+      (send (enc t tb a k (ltk b t)))))
+  (label 4)
+  (unrealized (0 0))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta tb text) (a b t name))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a a) (b b) (t t))
+  (defstrand init 1 (k k) (ta ta) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)))
+  (non-orig (ltk a t) (ltk b t))
+  (uniq-orig k)
+  (operation encryption-test (added-strand init 1)
+    (enc a ta b k (ltk a t)) (0 0))
+  (traces
+    ((recv (cat a (enc a ta b k (ltk a t))))
+      (send (enc t tb a k (ltk b t))))
+    ((send (cat a (enc a ta b k (ltk a t))))))
+  (label 5)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (k k) (ta ta) (tb tb))))
+  (origs (k (1 0))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta tb ta-0 text) (b t name))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a t) (b b) (t t))
+  (defstrand ks 2 (k k) (ta ta-0) (tb ta) (a b) (b t) (t t))
+  (defstrand init 1 (k k) (ta ta-0) (a b) (b t) (t t))
+  (precedes ((1 1) (0 0)) ((2 0) (1 0)))
+  (non-orig (ltk b t) (ltk t t))
+  (uniq-orig k)
+  (operation encryption-test (added-strand init 1)
+    (enc b ta-0 t k (ltk b t)) (1 0))
+  (traces
+    ((recv (cat t (enc t ta b k (ltk t t))))
+      (send (enc t tb t k (ltk b t))))
+    ((recv (cat b (enc b ta-0 t k (ltk b t))))
+      (send (enc t ta b k (ltk t t))))
+    ((send (cat b (enc b ta-0 t k (ltk b t))))))
+  (label 7)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a t) (b b) (t t) (k k) (ta ta) (tb tb))))
+  (origs (k (2 0))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta tb ta-0 ta-1 text) (t name))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-0) (tb ta) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-1) (tb ta-0) (a t) (b t) (t t))
+  (defstrand init 1 (k k) (ta ta-1) (a t) (b t) (t t))
+  (precedes ((1 1) (0 0)) ((2 1) (1 0)) ((3 0) (2 0)))
+  (non-orig (ltk t t))
+  (uniq-orig k)
+  (operation encryption-test (added-strand init 1)
+    (enc t ta-1 t k (ltk t t)) (2 0))
+  (traces
+    ((recv (cat t (enc t ta t k (ltk t t))))
+      (send (enc t tb t k (ltk t t))))
+    ((recv (cat t (enc t ta-0 t k (ltk t t))))
+      (send (enc t ta t k (ltk t t))))
+    ((recv (cat t (enc t ta-1 t k (ltk t t))))
+      (send (enc t ta-0 t k (ltk t t))))
+    ((send (cat t (enc t ta-1 t k (ltk t t))))))
+  (label 9)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a t) (b t) (t t) (k k) (ta ta) (tb tb))))
+  (origs (k (3 0))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta tb ta-0 ta-1 ta-2 text) (t name))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-0) (tb ta) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-1) (tb ta-0) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-2) (tb ta-1) (a t) (b t) (t t))
+  (defstrand init 1 (k k) (ta ta-2) (a t) (b t) (t t))
+  (precedes ((1 1) (0 0)) ((2 1) (1 0)) ((3 1) (2 0)) ((4 0) (3 0)))
+  (non-orig (ltk t t))
+  (uniq-orig k)
+  (operation encryption-test (added-strand init 1)
+    (enc t ta-2 t k (ltk t t)) (3 0))
+  (traces
+    ((recv (cat t (enc t ta t k (ltk t t))))
+      (send (enc t tb t k (ltk t t))))
+    ((recv (cat t (enc t ta-0 t k (ltk t t))))
+      (send (enc t ta t k (ltk t t))))
+    ((recv (cat t (enc t ta-1 t k (ltk t t))))
+      (send (enc t ta-0 t k (ltk t t))))
+    ((recv (cat t (enc t ta-2 t k (ltk t t))))
+      (send (enc t ta-1 t k (ltk t t))))
+    ((send (cat t (enc t ta-2 t k (ltk t t))))))
+  (label 11)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a t) (b t) (t t) (k k) (ta ta) (tb tb))))
+  (origs (k (4 0))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta tb ta-0 ta-1 ta-2 ta-3 text) (t name))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-0) (tb ta) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-1) (tb ta-0) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-2) (tb ta-1) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-3) (tb ta-2) (a t) (b t) (t t))
+  (defstrand init 1 (k k) (ta ta-3) (a t) (b t) (t t))
+  (precedes ((1 1) (0 0)) ((2 1) (1 0)) ((3 1) (2 0)) ((4 1) (3 0))
+    ((5 0) (4 0)))
+  (non-orig (ltk t t))
+  (uniq-orig k)
+  (operation encryption-test (added-strand init 1)
+    (enc t ta-3 t k (ltk t t)) (4 0))
+  (traces
+    ((recv (cat t (enc t ta t k (ltk t t))))
+      (send (enc t tb t k (ltk t t))))
+    ((recv (cat t (enc t ta-0 t k (ltk t t))))
+      (send (enc t ta t k (ltk t t))))
+    ((recv (cat t (enc t ta-1 t k (ltk t t))))
+      (send (enc t ta-0 t k (ltk t t))))
+    ((recv (cat t (enc t ta-2 t k (ltk t t))))
+      (send (enc t ta-1 t k (ltk t t))))
+    ((recv (cat t (enc t ta-3 t k (ltk t t))))
+      (send (enc t ta-2 t k (ltk t t))))
+    ((send (cat t (enc t ta-3 t k (ltk t t))))))
+  (label 13)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a t) (b t) (t t) (k k) (ta ta) (tb tb))))
+  (origs (k (5 0))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta tb ta-0 ta-1 ta-2 ta-3 ta-4 text) (t name))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-0) (tb ta) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-1) (tb ta-0) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-2) (tb ta-1) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-3) (tb ta-2) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-4) (tb ta-3) (a t) (b t) (t t))
+  (defstrand init 1 (k k) (ta ta-4) (a t) (b t) (t t))
+  (precedes ((1 1) (0 0)) ((2 1) (1 0)) ((3 1) (2 0)) ((4 1) (3 0))
+    ((5 1) (4 0)) ((6 0) (5 0)))
+  (non-orig (ltk t t))
+  (uniq-orig k)
+  (operation encryption-test (added-strand init 1)
+    (enc t ta-4 t k (ltk t t)) (5 0))
+  (traces
+    ((recv (cat t (enc t ta t k (ltk t t))))
+      (send (enc t tb t k (ltk t t))))
+    ((recv (cat t (enc t ta-0 t k (ltk t t))))
+      (send (enc t ta t k (ltk t t))))
+    ((recv (cat t (enc t ta-1 t k (ltk t t))))
+      (send (enc t ta-0 t k (ltk t t))))
+    ((recv (cat t (enc t ta-2 t k (ltk t t))))
+      (send (enc t ta-1 t k (ltk t t))))
+    ((recv (cat t (enc t ta-3 t k (ltk t t))))
+      (send (enc t ta-2 t k (ltk t t))))
+    ((recv (cat t (enc t ta-4 t k (ltk t t))))
+      (send (enc t ta-3 t k (ltk t t))))
+    ((send (cat t (enc t ta-4 t k (ltk t t))))))
+  (label 15)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a t) (b t) (t t) (k k) (ta ta) (tb tb))))
+  (origs (k (6 0))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta tb ta-0 ta-1 ta-2 ta-3 ta-4 ta-5 text) (t name))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-0) (tb ta) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-1) (tb ta-0) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-2) (tb ta-1) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-3) (tb ta-2) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-4) (tb ta-3) (a t) (b t) (t t))
+  (defstrand ks 2 (k k) (ta ta-5) (tb ta-4) (a t) (b t) (t t))
+  (defstrand init 1 (k k) (ta ta-5) (a t) (b t) (t t))
+  (precedes ((1 1) (0 0)) ((2 1) (1 0)) ((3 1) (2 0)) ((4 1) (3 0))
+    ((5 1) (4 0)) ((6 1) (5 0)) ((7 0) (6 0)))
+  (non-orig (ltk t t))
+  (uniq-orig k)
+  (operation encryption-test (added-strand init 1)
+    (enc t ta-5 t k (ltk t t)) (6 0))
+  (traces
+    ((recv (cat t (enc t ta t k (ltk t t))))
+      (send (enc t tb t k (ltk t t))))
+    ((recv (cat t (enc t ta-0 t k (ltk t t))))
+      (send (enc t ta t k (ltk t t))))
+    ((recv (cat t (enc t ta-1 t k (ltk t t))))
+      (send (enc t ta-0 t k (ltk t t))))
+    ((recv (cat t (enc t ta-2 t k (ltk t t))))
+      (send (enc t ta-1 t k (ltk t t))))
+    ((recv (cat t (enc t ta-3 t k (ltk t t))))
+      (send (enc t ta-2 t k (ltk t t))))
+    ((recv (cat t (enc t ta-4 t k (ltk t t))))
+      (send (enc t ta-3 t k (ltk t t))))
+    ((recv (cat t (enc t ta-5 t k (ltk t t))))
+      (send (enc t ta-4 t k (ltk t t))))
+    ((send (cat t (enc t ta-5 t k (ltk t t))))))
+  (label 17)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a t) (b t) (t t) (k k) (ta ta) (tb tb))))
+  (origs (k (7 0))))
+
+(comment "Strand bound exceeded--aborting run")
diff --git a/tst/wide-mouth-frog.tst b/tst/wide-mouth-frog.tst
--- a/tst/wide-mouth-frog.tst
+++ b/tst/wide-mouth-frog.tst
@@ -1,7 +1,7 @@
 (herald "Wide-Mouth Frog Protocol"
   (comment "This protocol has an infinite number of shapes") (bound 8))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/wide-mouth-frog.lsp")
 (comment "Strand count bounded at 8")
 
@@ -75,6 +75,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 1)
     (enc tb a k (ltk b t)) (0 0))
+  (strand-map 0)
   (traces ((recv (enc tb a k (ltk b t))))
     ((send (cat b (enc tb a k (ltk b t))))))
   (label 2)
@@ -93,6 +94,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand ks 2) (enc tb a k (ltk b t))
     (0 0))
+  (strand-map 0)
   (traces ((recv (enc tb a k (ltk b t))))
     ((recv (cat a (enc ta b k (ltk a t))))
       (send (enc tb a k (ltk b t)))))
@@ -145,6 +147,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 1)
     (enc ta b k (ltk a t)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (cat a (enc ta b k (ltk a t))))
       (send (enc tb a k (ltk b t))))
@@ -165,6 +168,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand ks 2) (enc ta b k (ltk a t))
     (0 0))
+  (strand-map 0)
   (traces
     ((recv (cat a (enc ta b k (ltk a t))))
       (send (enc tb a k (ltk b t))))
@@ -185,6 +189,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 1)
     (enc ta-0 a k (ltk b t)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat a (enc ta b k (ltk a t))))
       (send (enc tb a k (ltk b t))))
@@ -208,6 +213,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand ks 2)
     (enc ta-0 a k (ltk b t)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat a (enc ta b k (ltk a t))))
       (send (enc tb a k (ltk b t))))
@@ -231,6 +237,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 1)
     (enc ta-1 b k (ltk a t)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a (enc ta b k (ltk a t))))
       (send (enc tb a k (ltk b t))))
@@ -257,6 +264,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand ks 2)
     (enc ta-1 b k (ltk a t)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a (enc ta b k (ltk a t))))
       (send (enc tb a k (ltk b t))))
@@ -283,6 +291,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 1)
     (enc ta-2 a k (ltk b t)) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a (enc ta b k (ltk a t))))
       (send (enc tb a k (ltk b t))))
@@ -312,6 +321,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand ks 2)
     (enc ta-2 a k (ltk b t)) (3 0))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a (enc ta b k (ltk a t))))
       (send (enc tb a k (ltk b t))))
@@ -342,6 +352,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 1)
     (enc ta-3 b k (ltk a t)) (4 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a (enc ta b k (ltk a t))))
       (send (enc tb a k (ltk b t))))
@@ -375,6 +386,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand ks 2)
     (enc ta-3 b k (ltk a t)) (4 0))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a (enc ta b k (ltk a t))))
       (send (enc tb a k (ltk b t))))
@@ -408,6 +420,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 1)
     (enc ta-4 a k (ltk b t)) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a (enc ta b k (ltk a t))))
       (send (enc tb a k (ltk b t))))
@@ -445,6 +458,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand ks 2)
     (enc ta-4 a k (ltk b t)) (5 0))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a (enc ta b k (ltk a t))))
       (send (enc tb a k (ltk b t))))
@@ -482,6 +496,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand init 1)
     (enc ta-5 b k (ltk a t)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a (enc ta b k (ltk a t))))
       (send (enc tb a k (ltk b t))))
@@ -524,6 +539,7 @@
   (uniq-orig k)
   (operation encryption-test (added-strand ks 2)
     (enc ta-5 b k (ltk a t)) (6 0))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a (enc ta b k (ltk a t))))
       (send (enc tb a k (ltk b t))))
diff --git a/tst/wide-mouth-frog_shapes.tst b/tst/wide-mouth-frog_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/wide-mouth-frog_shapes.tst
@@ -0,0 +1,349 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Wide-Mouth Frog Protocol"
+  (comment "This protocol has an infinite number of shapes"))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/wide-mouth-frog.lsp")
+
+(defprotocol wide-mouth-frog basic
+  (defrole init
+    (vars (a b t name) (ta text) (k skey))
+    (trace (send (cat a (enc ta b k (ltk a t))))))
+  (defrole resp
+    (vars (a b t name) (k skey) (tb text))
+    (trace (recv (enc tb a k (ltk b t)))))
+  (defrole ks
+    (vars (a b t name) (k skey) (ta tb text))
+    (trace (recv (cat a (enc ta b k (ltk a t))))
+      (send (enc tb a k (ltk b t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta text) (a t b name))
+  (defstrand init 1 (k k) (ta ta) (a a) (b b) (t t))
+  (non-orig (ltk a t))
+  (uniq-orig k)
+  (traces ((send (cat a (enc ta b k (ltk a t))))))
+  (label 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (t t) (k k) (b b) (ta ta))))
+  (origs (k (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol wide-mouth-frog basic
+  (defrole init
+    (vars (a b t name) (ta text) (k skey))
+    (trace (send (cat a (enc ta b k (ltk a t))))))
+  (defrole resp
+    (vars (a b t name) (k skey) (tb text))
+    (trace (recv (enc tb a k (ltk b t)))))
+  (defrole ks
+    (vars (a b t name) (k skey) (ta tb text))
+    (trace (recv (cat a (enc ta b k (ltk a t))))
+      (send (enc tb a k (ltk b t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (tb text) (b t a name))
+  (defstrand resp 1 (k k) (tb tb) (a a) (b b) (t t))
+  (non-orig (ltk b t))
+  (uniq-orig k)
+  (traces ((recv (enc tb a k (ltk b t)))))
+  (label 1)
+  (unrealized (0 0))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (tb text) (b t a name))
+  (defstrand resp 1 (k k) (tb tb) (a a) (b b) (t t))
+  (defstrand init 1 (k k) (ta tb) (a b) (b a) (t t))
+  (precedes ((1 0) (0 0)))
+  (non-orig (ltk b t))
+  (uniq-orig k)
+  (operation encryption-test (added-strand init 1)
+    (enc tb a k (ltk b t)) (0 0))
+  (traces ((recv (enc tb a k (ltk b t))))
+    ((send (cat b (enc tb a k (ltk b t))))))
+  (label 2)
+  (parent 1)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (k k) (a a) (tb tb))))
+  (origs (k (1 0))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (tb ta text) (b t a name))
+  (defstrand resp 1 (k k) (tb tb) (a a) (b b) (t t))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a a) (b b) (t t))
+  (precedes ((1 1) (0 0)))
+  (non-orig (ltk b t))
+  (uniq-orig k)
+  (operation encryption-test (added-strand ks 2) (enc tb a k (ltk b t))
+    (0 0))
+  (traces ((recv (enc tb a k (ltk b t))))
+    ((recv (cat a (enc ta b k (ltk a t))))
+      (send (enc tb a k (ltk b t)))))
+  (label 3)
+  (parent 1)
+  (realized)
+  (shape)
+  (maps ((0) ((b b) (t t) (k k) (a a) (tb tb))))
+  (origs))
+
+(comment "Nothing left to do")
+
+(defprotocol wide-mouth-frog basic
+  (defrole init
+    (vars (a b t name) (ta text) (k skey))
+    (trace (send (cat a (enc ta b k (ltk a t))))))
+  (defrole resp
+    (vars (a b t name) (k skey) (tb text))
+    (trace (recv (enc tb a k (ltk b t)))))
+  (defrole ks
+    (vars (a b t name) (k skey) (ta tb text))
+    (trace (recv (cat a (enc ta b k (ltk a t))))
+      (send (enc tb a k (ltk b t)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta tb text) (a b t name))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a a) (b b) (t t))
+  (non-orig (ltk a t) (ltk b t))
+  (uniq-orig k)
+  (traces
+    ((recv (cat a (enc ta b k (ltk a t))))
+      (send (enc tb a k (ltk b t)))))
+  (label 4)
+  (unrealized (0 0))
+  (origs)
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta tb text) (a b t name))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a a) (b b) (t t))
+  (defstrand init 1 (k k) (ta ta) (a a) (b b) (t t))
+  (precedes ((1 0) (0 0)))
+  (non-orig (ltk a t) (ltk b t))
+  (uniq-orig k)
+  (operation encryption-test (added-strand init 1)
+    (enc ta b k (ltk a t)) (0 0))
+  (traces
+    ((recv (cat a (enc ta b k (ltk a t))))
+      (send (enc tb a k (ltk b t))))
+    ((send (cat a (enc ta b k (ltk a t))))))
+  (label 5)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (k k) (ta ta) (tb tb))))
+  (origs (k (1 0))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta tb ta-0 text) (a b t name))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a a) (b b) (t t))
+  (defstrand ks 2 (k k) (ta ta-0) (tb ta) (a b) (b a) (t t))
+  (defstrand init 1 (k k) (ta ta-0) (a b) (b a) (t t))
+  (precedes ((1 1) (0 0)) ((2 0) (1 0)))
+  (non-orig (ltk a t) (ltk b t))
+  (uniq-orig k)
+  (operation encryption-test (added-strand init 1)
+    (enc ta-0 a k (ltk b t)) (1 0))
+  (traces
+    ((recv (cat a (enc ta b k (ltk a t))))
+      (send (enc tb a k (ltk b t))))
+    ((recv (cat b (enc ta-0 a k (ltk b t))))
+      (send (enc ta b k (ltk a t))))
+    ((send (cat b (enc ta-0 a k (ltk b t))))))
+  (label 7)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (k k) (ta ta) (tb tb))))
+  (origs (k (2 0))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta tb ta-0 ta-1 text) (a b t name))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a a) (b b) (t t))
+  (defstrand ks 2 (k k) (ta ta-0) (tb ta) (a b) (b a) (t t))
+  (defstrand ks 2 (k k) (ta ta-1) (tb ta-0) (a a) (b b) (t t))
+  (defstrand init 1 (k k) (ta ta-1) (a a) (b b) (t t))
+  (precedes ((1 1) (0 0)) ((2 1) (1 0)) ((3 0) (2 0)))
+  (non-orig (ltk a t) (ltk b t))
+  (uniq-orig k)
+  (operation encryption-test (added-strand init 1)
+    (enc ta-1 b k (ltk a t)) (2 0))
+  (traces
+    ((recv (cat a (enc ta b k (ltk a t))))
+      (send (enc tb a k (ltk b t))))
+    ((recv (cat b (enc ta-0 a k (ltk b t))))
+      (send (enc ta b k (ltk a t))))
+    ((recv (cat a (enc ta-1 b k (ltk a t))))
+      (send (enc ta-0 a k (ltk b t))))
+    ((send (cat a (enc ta-1 b k (ltk a t))))))
+  (label 9)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (k k) (ta ta) (tb tb))))
+  (origs (k (3 0))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta tb ta-0 ta-1 ta-2 text) (a b t name))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a a) (b b) (t t))
+  (defstrand ks 2 (k k) (ta ta-0) (tb ta) (a b) (b a) (t t))
+  (defstrand ks 2 (k k) (ta ta-1) (tb ta-0) (a a) (b b) (t t))
+  (defstrand ks 2 (k k) (ta ta-2) (tb ta-1) (a b) (b a) (t t))
+  (defstrand init 1 (k k) (ta ta-2) (a b) (b a) (t t))
+  (precedes ((1 1) (0 0)) ((2 1) (1 0)) ((3 1) (2 0)) ((4 0) (3 0)))
+  (non-orig (ltk a t) (ltk b t))
+  (uniq-orig k)
+  (operation encryption-test (added-strand init 1)
+    (enc ta-2 a k (ltk b t)) (3 0))
+  (traces
+    ((recv (cat a (enc ta b k (ltk a t))))
+      (send (enc tb a k (ltk b t))))
+    ((recv (cat b (enc ta-0 a k (ltk b t))))
+      (send (enc ta b k (ltk a t))))
+    ((recv (cat a (enc ta-1 b k (ltk a t))))
+      (send (enc ta-0 a k (ltk b t))))
+    ((recv (cat b (enc ta-2 a k (ltk b t))))
+      (send (enc ta-1 b k (ltk a t))))
+    ((send (cat b (enc ta-2 a k (ltk b t))))))
+  (label 11)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (k k) (ta ta) (tb tb))))
+  (origs (k (4 0))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta tb ta-0 ta-1 ta-2 ta-3 text) (a b t name))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a a) (b b) (t t))
+  (defstrand ks 2 (k k) (ta ta-0) (tb ta) (a b) (b a) (t t))
+  (defstrand ks 2 (k k) (ta ta-1) (tb ta-0) (a a) (b b) (t t))
+  (defstrand ks 2 (k k) (ta ta-2) (tb ta-1) (a b) (b a) (t t))
+  (defstrand ks 2 (k k) (ta ta-3) (tb ta-2) (a a) (b b) (t t))
+  (defstrand init 1 (k k) (ta ta-3) (a a) (b b) (t t))
+  (precedes ((1 1) (0 0)) ((2 1) (1 0)) ((3 1) (2 0)) ((4 1) (3 0))
+    ((5 0) (4 0)))
+  (non-orig (ltk a t) (ltk b t))
+  (uniq-orig k)
+  (operation encryption-test (added-strand init 1)
+    (enc ta-3 b k (ltk a t)) (4 0))
+  (traces
+    ((recv (cat a (enc ta b k (ltk a t))))
+      (send (enc tb a k (ltk b t))))
+    ((recv (cat b (enc ta-0 a k (ltk b t))))
+      (send (enc ta b k (ltk a t))))
+    ((recv (cat a (enc ta-1 b k (ltk a t))))
+      (send (enc ta-0 a k (ltk b t))))
+    ((recv (cat b (enc ta-2 a k (ltk b t))))
+      (send (enc ta-1 b k (ltk a t))))
+    ((recv (cat a (enc ta-3 b k (ltk a t))))
+      (send (enc ta-2 a k (ltk b t))))
+    ((send (cat a (enc ta-3 b k (ltk a t))))))
+  (label 13)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (k k) (ta ta) (tb tb))))
+  (origs (k (5 0))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta tb ta-0 ta-1 ta-2 ta-3 ta-4 text) (a b t name))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a a) (b b) (t t))
+  (defstrand ks 2 (k k) (ta ta-0) (tb ta) (a b) (b a) (t t))
+  (defstrand ks 2 (k k) (ta ta-1) (tb ta-0) (a a) (b b) (t t))
+  (defstrand ks 2 (k k) (ta ta-2) (tb ta-1) (a b) (b a) (t t))
+  (defstrand ks 2 (k k) (ta ta-3) (tb ta-2) (a a) (b b) (t t))
+  (defstrand ks 2 (k k) (ta ta-4) (tb ta-3) (a b) (b a) (t t))
+  (defstrand init 1 (k k) (ta ta-4) (a b) (b a) (t t))
+  (precedes ((1 1) (0 0)) ((2 1) (1 0)) ((3 1) (2 0)) ((4 1) (3 0))
+    ((5 1) (4 0)) ((6 0) (5 0)))
+  (non-orig (ltk a t) (ltk b t))
+  (uniq-orig k)
+  (operation encryption-test (added-strand init 1)
+    (enc ta-4 a k (ltk b t)) (5 0))
+  (traces
+    ((recv (cat a (enc ta b k (ltk a t))))
+      (send (enc tb a k (ltk b t))))
+    ((recv (cat b (enc ta-0 a k (ltk b t))))
+      (send (enc ta b k (ltk a t))))
+    ((recv (cat a (enc ta-1 b k (ltk a t))))
+      (send (enc ta-0 a k (ltk b t))))
+    ((recv (cat b (enc ta-2 a k (ltk b t))))
+      (send (enc ta-1 b k (ltk a t))))
+    ((recv (cat a (enc ta-3 b k (ltk a t))))
+      (send (enc ta-2 a k (ltk b t))))
+    ((recv (cat b (enc ta-4 a k (ltk b t))))
+      (send (enc ta-3 b k (ltk a t))))
+    ((send (cat b (enc ta-4 a k (ltk b t))))))
+  (label 15)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (k k) (ta ta) (tb tb))))
+  (origs (k (6 0))))
+
+(defskeleton wide-mouth-frog
+  (vars (k skey) (ta tb ta-0 ta-1 ta-2 ta-3 ta-4 ta-5 text)
+    (a b t name))
+  (defstrand ks 2 (k k) (ta ta) (tb tb) (a a) (b b) (t t))
+  (defstrand ks 2 (k k) (ta ta-0) (tb ta) (a b) (b a) (t t))
+  (defstrand ks 2 (k k) (ta ta-1) (tb ta-0) (a a) (b b) (t t))
+  (defstrand ks 2 (k k) (ta ta-2) (tb ta-1) (a b) (b a) (t t))
+  (defstrand ks 2 (k k) (ta ta-3) (tb ta-2) (a a) (b b) (t t))
+  (defstrand ks 2 (k k) (ta ta-4) (tb ta-3) (a b) (b a) (t t))
+  (defstrand ks 2 (k k) (ta ta-5) (tb ta-4) (a a) (b b) (t t))
+  (defstrand init 1 (k k) (ta ta-5) (a a) (b b) (t t))
+  (precedes ((1 1) (0 0)) ((2 1) (1 0)) ((3 1) (2 0)) ((4 1) (3 0))
+    ((5 1) (4 0)) ((6 1) (5 0)) ((7 0) (6 0)))
+  (non-orig (ltk a t) (ltk b t))
+  (uniq-orig k)
+  (operation encryption-test (added-strand init 1)
+    (enc ta-5 b k (ltk a t)) (6 0))
+  (traces
+    ((recv (cat a (enc ta b k (ltk a t))))
+      (send (enc tb a k (ltk b t))))
+    ((recv (cat b (enc ta-0 a k (ltk b t))))
+      (send (enc ta b k (ltk a t))))
+    ((recv (cat a (enc ta-1 b k (ltk a t))))
+      (send (enc ta-0 a k (ltk b t))))
+    ((recv (cat b (enc ta-2 a k (ltk b t))))
+      (send (enc ta-1 b k (ltk a t))))
+    ((recv (cat a (enc ta-3 b k (ltk a t))))
+      (send (enc ta-2 a k (ltk b t))))
+    ((recv (cat b (enc ta-4 a k (ltk b t))))
+      (send (enc ta-3 b k (ltk a t))))
+    ((recv (cat a (enc ta-5 b k (ltk a t))))
+      (send (enc ta-4 a k (ltk b t))))
+    ((send (cat a (enc ta-5 b k (ltk a t))))))
+  (label 17)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (t t) (k k) (ta ta) (tb tb))))
+  (origs (k (7 0))))
+
+(comment "Strand bound exceeded--aborting run")
diff --git a/tst/wonthull.tst b/tst/wonthull.tst
--- a/tst/wonthull.tst
+++ b/tst/wonthull.tst
@@ -1,6 +1,6 @@
 (herald wonthull (bound 9))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/wonthull.scm")
 (comment "Strand count bounded at 9")
 
@@ -42,6 +42,7 @@
   (uniq-orig x1 x2)
   (operation nonce-test (displaced 1 0 init 1) x3 (0 1)
     (enc x3 x2 (pubk a)))
+  (strand-map 0)
   (traces
     ((send (cat (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a))))
       (recv (enc "okay" x2 x4 (pubk a)))))
@@ -60,6 +61,7 @@
   (uniq-orig x1 x2 x3)
   (operation nonce-test (added-strand resp 2) x3 (0 1)
     (enc x3 x2 (pubk a)))
+  (strand-map 0)
   (traces
     ((send (cat (enc x1 x2 (pubk a)) (enc x3 x2 (pubk a))))
       (recv (enc "okay" x3 x4 (pubk a))))
@@ -67,6 +69,11 @@
   (label 2)
   (parent 0)
   (seen 3)
+  (seen-ops
+    (3
+      (operation nonce-test (displaced 2 0 init 1) x3 (0 1)
+        (enc "okay" y3 x3 (pubk a)) (enc x3 x2 (pubk a)))
+      (strand-map 0 1)))
   (unrealized (0 1))
   (comment "2 in cohort - 1 not yet seen"))
 
@@ -79,6 +86,7 @@
   (uniq-orig x1 x2)
   (operation nonce-test (added-strand resp 2) x2 (0 1)
     (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a)))
+  (strand-map 0)
   (traces
     ((send (cat (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a))))
       (recv (enc "okay" x2 x4 (pubk a))))
@@ -97,6 +105,7 @@
   (uniq-orig x1 x2 y3)
   (operation nonce-test (contracted (x3 y3) (x4 y3)) y3 (0 1)
     (enc "okay" y3 y3 (pubk a)) (enc y3 x2 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (cat (enc x1 x2 (pubk a)) (enc y3 x2 (pubk a))))
       (recv (enc "okay" y3 y3 (pubk a))))
@@ -118,6 +127,7 @@
   (operation nonce-test (contracted (x2 y3) (x4 y3)) y3 (0 1)
     (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
     (enc y3 y3 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (cat (enc x1 y3 (pubk a)) (enc y3 y3 (pubk a))))
       (recv (enc "okay" y3 y3 (pubk a))))
@@ -125,6 +135,8 @@
   (label 5)
   (parent 3)
   (seen 4)
+  (seen-ops
+    (4 (operation generalization separated y3-0) (strand-map 0 1)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -139,6 +151,7 @@
   (operation nonce-test (added-strand resp 2) x2 (0 1)
     (enc "okay" y3 x2 (pubk a)) (enc x1 x2 (pubk a))
     (enc x2 x2 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (cat (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a))))
       (recv (enc "okay" x2 x4 (pubk a))))
@@ -160,6 +173,7 @@
   (operation nonce-test (contracted (x4 x2)) x2 (0 1)
     (enc "okay" x2 x2 (pubk a)) (enc "okay" y3 x2 (pubk a))
     (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (cat (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a))))
       (recv (enc "okay" x2 x2 (pubk a))))
@@ -168,6 +182,8 @@
   (label 7)
   (parent 6)
   (seen 5)
+  (seen-ops
+    (5 (operation generalization deleted (1 0)) (strand-map 0 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/wonthull2.tst b/tst/wonthull2.tst
--- a/tst/wonthull2.tst
+++ b/tst/wonthull2.tst
@@ -1,9657 +1,11553 @@
 (herald wonthull2 (bound 9))
 
-(comment "CPSA 4.4.3")
-(comment "All input read from tst/wonthull2.scm")
-(comment "Strand count bounded at 9")
-
-(defprotocol wonthull2 basic
-  (defrole init
-    (vars (a name) (x1 x2 x3 x4 text))
-    (trace (send (cat (enc x1 x3 (pubk a)) (enc x3 x2 (pubk a))))
-      (recv (enc "okay" x3 x4 (pubk a))))
-    (non-orig (privk a))
-    (uniq-orig x3))
-  (defrole resp
-    (vars (a name) (y1 y2 y3 text))
-    (trace (recv (enc y1 y2 (pubk a)))
-      (send (enc "okay" y3 y1 (pubk a)))))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton wonthull2
-  (vars (x1 x2 x3 x4 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x2) (x3 x3) (x4 x4) (a a))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x2 (pubk a))))
-      (recv (enc "okay" x3 x4 (pubk a)))))
-  (label 0)
-  (unrealized (0 1))
-  (origs (x3 (0 0)))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x2 x3 x4 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x2) (x3 x3) (x4 x4) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x2) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (added-strand resp 2) x3 (0 1)
-    (enc x1 x3 (pubk a)) (enc x3 x2 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x2 (pubk a))))
-      (recv (enc "okay" x3 x4 (pubk a))))
-    ((recv (enc x3 x2 (pubk a))) (send (enc "okay" y3 x3 (pubk a)))))
-  (label 1)
-  (parent 0)
-  (unrealized (0 1))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x2 x4 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x4) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (0 1)
-    (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
-      (recv (enc "okay" x1 x4 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
-  (label 2)
-  (parent 0)
-  (seen 5)
-  (unrealized (0 1))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x2 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x2) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x2) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (x3 y3) (x4 y3)) y3 (0 1)
-    (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
-    (enc y3 x2 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x2 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x2 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 3)
-  (parent 1)
-  (realized)
-  (shape)
-  (maps ((0) ((a a) (x1 x1) (x2 x2) (x3 y3) (x4 y3))))
-  (origs (y3 (0 0))))
-
-(defskeleton wonthull2
-  (vars (x1 x2 x3 x4 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x2) (x3 x3) (x4 x4) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x2) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x2) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (added-strand resp 2) x3 (0 1)
-    (enc "okay" y3 x3 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x3 x2 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x2 (pubk a))))
-      (recv (enc "okay" x3 x4 (pubk a))))
-    ((recv (enc x3 x2 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x2 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 4)
-  (parent 1)
-  (unrealized (0 1))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x2 x4 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x4) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x2) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (0 1)
-    (enc "okay" y3 x1 (pubk a)) (enc x1 x1 (pubk a))
-    (enc x1 x2 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
-      (recv (enc "okay" x1 x4 (pubk a))))
-    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 5)
-  (parent 1)
-  (seen 10)
-  (unrealized (0 1))
-  (comment "4 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x2 y3 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x2) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (x1 y3) (x4 y3)) y3 (0 1)
-    (enc "okay" y3 y3 (pubk a)) (enc y3 x2 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x2 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 6)
-  (parent 2)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x2 x4 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x4) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (0 1)
-    (enc "okay" y3 x1 (pubk a)) (enc x1 x1 (pubk a))
-    (enc x1 x2 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
-      (recv (enc "okay" x1 x4 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 7)
-  (parent 2)
-  (seen 13)
-  (unrealized (0 1))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x2 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x2) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x2) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x3 x1) (x4 x1)) x1 (0 1)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 8)
-  (parent 4)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x2 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x2) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x2) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x2) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (x3 y3) (x4 y3)) y3 (0 1)
-    (enc "okay" x1 y3 (pubk a)) (enc "okay" y3 y3 (pubk a))
-    (enc x1 y3 (pubk a)) (enc y3 x2 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x2 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x2 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x2 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
-  (label 9)
-  (parent 4)
-  (seen 3)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x2 x4 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x4) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x2) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x2) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (0 1)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
-      (recv (enc "okay" x1 x4 (pubk a))))
-    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 10)
-  (parent 4)
-  (unrealized (0 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x2 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 y3-0) (x2 x2) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x2) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (contracted (x1 y3-0) (x4 y3-0)) y3-0 (0 1)
-    (enc "okay" y3 y3-0 (pubk a)) (enc "okay" y3-0 y3-0 (pubk a))
-    (enc y3-0 x2 (pubk a)) (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x2 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x2 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a)))))
-  (label 11)
-  (parent 5)
-  (seen 6)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x2 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x2) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x2) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (x1 y3) (x4 y3)) y3 (0 1)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
-    (enc y3 x2 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x2 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x2 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 12)
-  (parent 5)
-  (seen 16)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x2 x4 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x4) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x2) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (0 1)
-    (enc "okay" y3 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
-      (recv (enc "okay" x1 x4 (pubk a))))
-    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 13)
-  (parent 5)
-  (unrealized (0 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x2 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x2) (x3 y3-0) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3-0) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3 y3-0)
-  (operation generalization separated y3-0)
-  (traces
-    ((send (cat (enc y3 y3-0 (pubk a)) (enc y3-0 x2 (pubk a))))
-      (recv (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 14)
-  (parent 6)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x2 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x4 x1)) x1 (0 1)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 15)
-  (parent 7)
-  (seen 6)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x2 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x2) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation generalization deleted (1 0))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 16)
-  (parent 8)
-  (seen 3)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x2 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x2) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x2) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x4 x1)) x1 (0 1)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x1 (pubk a))
-    (enc x1 x2 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 17)
-  (parent 10)
-  (seen 12)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x2 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x2) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x4 x1)) x1 (0 1)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x1 (pubk a))
-    (enc x1 x2 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 18)
-  (parent 13)
-  (seen 15)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x2 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x2) (x3 y3-0) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3-0) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation generalization forgot y3)
-  (traces
-    ((send (cat (enc y3 y3-0 (pubk a)) (enc y3-0 x2 (pubk a))))
-      (recv (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 19)
-  (parent 14)
-  (realized)
-  (shape)
-  (maps ((0) ((a a) (x1 y3) (x2 x2) (x3 y3-0) (x4 y3))))
-  (origs (y3-0 (0 0))))
-
-(comment "Nothing left to do")
-
-(defprotocol wonthull2 basic
-  (defrole init
-    (vars (a name) (x1 x2 x3 x4 text))
-    (trace (send (cat (enc x1 x3 (pubk a)) (enc x3 x2 (pubk a))))
-      (recv (enc "okay" x3 x4 (pubk a))))
-    (non-orig (privk a))
-    (uniq-orig x3))
-  (defrole resp
-    (vars (a name) (y1 y2 y3 text))
-    (trace (recv (enc y1 y2 (pubk a)))
-      (send (enc "okay" y3 y1 (pubk a)))))
-  (defgenrule neqRl_indx
-    (forall ((x indx)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_strd
-    (forall ((x strd)) (implies (fact neq x x) (false))))
-  (defgenrule neqRl_mesg
-    (forall ((x mesg)) (implies (fact neq x x) (false)))))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 x3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3-0)
-  (traces
-    ((send (cat (enc x1-0 x3-0 (pubk a)) (enc x3-0 x3 (pubk a))))
-      (recv (enc "okay" x3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0)))
-      (send (enc "okay" x3 x1 (pubk a-0)))))
-  (label 20)
-  (unrealized (0 1))
-  (origs (x3-0 (0 0)))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 text) (a name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (displaced 2 1 resp 2) x3-0 (0 1)
-    (enc x1-0 x3-0 (pubk a-0)) (enc x3-0 x3 (pubk a-0)))
-  (traces
-    ((send (cat (enc x1-0 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a)))))
-  (label 21)
-  (parent 20)
-  (unrealized (0 1))
-  (origs (x1 (0 0)))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (displaced 2 1 resp 2) x3-0 (0 1)
-    (enc x1-0 x3-0 (pubk a)) (enc x3-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0)))
-      (send (enc "okay" x3 x1 (pubk a-0)))))
-  (label 22)
-  (parent 20)
-  (seen 25)
-  (unrealized (1 0))
-  (origs (x3 (0 0)))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 x3-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3-0) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3-0)
-  (operation nonce-test (added-strand resp 2) x3-0 (0 1)
-    (enc x1-0 x3-0 (pubk a)) (enc x3-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3-0 (pubk a)) (enc x3-0 x3 (pubk a))))
-      (recv (enc "okay" x3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3-0 x3 (pubk a)))
-      (send (enc "okay" y3 x3-0 (pubk a)))))
-  (label 23)
-  (parent 20)
-  (seen 27)
-  (unrealized (0 1))
-  (comment "5 in cohort - 4 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x1-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1-0)
-  (operation nonce-test (added-strand resp 2) x1-0 (0 1)
-    (enc x1-0 x3 (pubk a)) (enc x1-0 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))))
-      (recv (enc "okay" x1-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3 x1-0 (pubk a)))))
-  (label 24)
-  (parent 20)
-  (seen 26 33)
-  (unrealized (0 1))
-  (comment "5 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (displaced 2 1 resp 2) x1-0 (0 1)
-    (enc "okay" x3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
-    (enc x1 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 25)
-  (parent 21)
-  (realized)
-  (shape)
-  (maps ((0 1) ((x1 x3) (x3 x3) (a a) (x1-0 x1) (x3-0 x3) (a-0 a))))
-  (origs (x3 (0 0))))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (0 1)
-    (enc "okay" x3 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
-  (label 26)
-  (parent 21)
-  (unrealized (0 1))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 text) (a name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (0 1)
-    (enc "okay" x3 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1-0 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
-  (label 27)
-  (parent 21)
-  (seen 40)
-  (unrealized (0 1))
-  (comment "4 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a)))))
-  (label 28)
-  (parent 22)
-  (realized)
-  (shape)
-  (maps ((0 1) ((x1 x1) (x3 x3) (a a) (x1-0 x1) (x3-0 x3) (a-0 a))))
-  (origs (x3 (0 0))))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (added-strand resp 2) x3 (1 0)
-    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a)))))
-  (label 29)
-  (parent 22)
-  (unrealized (1 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 x3-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3-0) (y2 x3) (y3 x1-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3-0)
-  (operation nonce-test (added-strand resp 2) x3-0 (0 1)
-    (enc "okay" y3 x3-0 (pubk a)) (enc x1-0 x3-0 (pubk a))
-    (enc x3-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3-0 (pubk a)) (enc x3-0 x3 (pubk a))))
-      (recv (enc "okay" x3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3-0 x3 (pubk a))) (send (enc "okay" y3 x3-0 (pubk a))))
-    ((recv (enc x3-0 x3 (pubk a)))
-      (send (enc "okay" x1-0 x3-0 (pubk a)))))
-  (label 30)
-  (parent 23)
-  (seen 42)
-  (unrealized (0 1))
-  (comment "5 in cohort - 4 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (x1-0 y3) (x3-0 y3)) y3 (0 1)
-    (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
-    (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 31)
-  (parent 23)
-  (seen 43)
-  (unrealized (1 0))
-  (comment "4 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (displaced 3 1 resp 2) x3-0 (0 1)
-    (enc "okay" y3 x3-0 (pubk a)) (enc x1-0 x3-0 (pubk a))
-    (enc x3-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a)))))
-  (label 32)
-  (parent 23)
-  (seen 29 41)
-  (unrealized (1 0))
-  (comment "4 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x1-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1-0)
-  (operation nonce-test (added-strand resp 2) x1-0 (0 1)
-    (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
-    (enc x1-0 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))))
-      (recv (enc "okay" x1-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1-0 x3 (pubk a))) (send (enc "okay" y3 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3-0 x1-0 (pubk a)))))
-  (label 33)
-  (parent 23)
-  (seen 36 40 51)
-  (unrealized (0 1))
-  (comment "6 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x1-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1-0)
-  (operation nonce-test (added-strand resp 2) x1-0 (0 1)
-    (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
-    (enc x1-0 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))))
-      (recv (enc "okay" x1-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" x1-0 x1-0 (pubk a)))))
-  (label 34)
-  (parent 24)
-  (seen 57)
-  (unrealized (0 1))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (x1 y3) (x1-0 y3)) y3 (0 1)
-    (enc "okay" y3 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 35)
-  (parent 24)
-  (seen 37)
-  (unrealized (1 0))
-  (comment "4 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1-0)
-  (operation nonce-test (displaced 3 2 resp 2) x1-0 (0 1)
-    (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
-    (enc x1-0 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
-      (recv (enc "okay" x1-0 x1 (pubk a))))
-    ((recv (enc x1 x1-0 (pubk a-0)))
-      (send (enc "okay" x1-0 x1 (pubk a-0))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3 x1-0 (pubk a)))))
-  (label 36)
-  (parent 24)
-  (seen 39)
-  (unrealized (1 0))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (displaced 3 2 resp 2) x1 (0 1)
-    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 37)
-  (parent 26)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (0 1)
-    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 38)
-  (parent 26)
-  (seen 37)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (displaced 3 2 resp 2) x1 (0 1)
-    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
-  (label 39)
-  (parent 26)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (0 1)
-    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 40)
-  (parent 26)
-  (seen 39)
-  (unrealized (0 1))
-  (comment "5 in cohort - 4 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (displaced 3 1 resp 2) x1-0 (0 1)
-    (enc "okay" x3 x1-0 (pubk a)) (enc "okay" y3 x1-0 (pubk a))
-    (enc x1-0 x3 (pubk a)) (enc x1 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a)))))
-  (label 41)
-  (parent 27)
-  (seen 25)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 text) (a name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (0 1)
-    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1-0 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1-0 x1 (pubk a)))))
-  (label 42)
-  (parent 27)
-  (unrealized (0 1))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (displaced 3 2 resp 2) x1-0 (0 1)
-    (enc "okay" x3 x1-0 (pubk a)) (enc "okay" y3 x1-0 (pubk a))
-    (enc x1-0 x3 (pubk a)) (enc x1 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 43)
-  (parent 27)
-  (realized)
-  (shape)
-  (maps ((0 1) ((x1 y3) (x3 x3) (a a) (x1-0 x1) (x3-0 y3) (a-0 a))))
-  (origs (y3 (0 0))))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a)))))
-  (label 44)
-  (parent 29)
-  (seen 28)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
-    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a)))))
-  (label 45)
-  (parent 29)
-  (seen 25)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (added-strand resp 2) x3 (1 0)
-    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a)))))
-  (label 46)
-  (parent 29)
-  (unrealized (1 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (added-strand resp 2) x3 (1 0)
-    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 47)
-  (parent 29)
-  (seen 78)
-  (unrealized (1 0))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (x1-0 y3) (x3-0 y3)) y3 (0 1)
-    (enc "okay" x1 y3 (pubk a)) (enc "okay" y3 y3 (pubk a))
-    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
-  (label 48)
-  (parent 30)
-  (seen 54 74)
-  (unrealized (1 0))
-  (comment "5 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x1-0 x1) (x3-0 x1)) x1 (0 1)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 49)
-  (parent 30)
-  (seen 75)
-  (unrealized (1 0))
-  (comment "5 in cohort - 4 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (displaced 4 1 resp 2) x3-0 (0 1)
-    (enc "okay" x1-0 x3-0 (pubk a)) (enc "okay" y3 x3-0 (pubk a))
-    (enc x1-0 x3-0 (pubk a)) (enc x3-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a)))))
-  (label 50)
-  (parent 30)
-  (seen 73)
-  (unrealized (1 0))
-  (comment "5 in cohort - 4 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x1-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x3) (y3 x1-0) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1-0)
-  (operation nonce-test (added-strand resp 2) x1-0 (0 1)
-    (enc "okay" x1-0 x1-0 (pubk a)) (enc "okay" y3 x1-0 (pubk a))
-    (enc x1-0 x3 (pubk a)) (enc x1-0 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))))
-      (recv (enc "okay" x1-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1-0 x3 (pubk a))) (send (enc "okay" y3 x1-0 (pubk a))))
-    ((recv (enc x1-0 x3 (pubk a)))
-      (send (enc "okay" x1-0 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3-0 x1-0 (pubk a)))))
-  (label 51)
-  (parent 30)
-  (seen 61)
-  (unrealized (0 1))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (displaced 3 2 resp 2) y3 (1 0)
-    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 52)
-  (parent 31)
-  (unrealized (1 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 53)
-  (parent 31)
-  (seen 94)
-  (unrealized (1 0))
-  (comment "4 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
-  (label 54)
-  (parent 31)
-  (seen 95 98)
-  (unrealized (1 0))
-  (comment "4 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a)))))
-  (label 55)
-  (parent 32)
-  (seen 28)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (added-strand resp 2) x3 (1 0)
-    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a)))))
-  (label 56)
-  (parent 32)
-  (seen 29)
-  (unrealized (1 0))
-  (comment "5 in cohort - 4 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x1-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1-0)
-  (operation nonce-test (added-strand resp 2) x1-0 (0 1)
-    (enc "okay" y3 x1-0 (pubk a)) (enc "okay" y3-0 x1-0 (pubk a))
-    (enc x1-0 x3 (pubk a)) (enc x1-0 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))))
-      (recv (enc "okay" x1-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1-0 x3 (pubk a))) (send (enc "okay" y3 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3-0 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" x1-0 x1-0 (pubk a)))))
-  (label 57)
-  (parent 33)
-  (seen 61)
-  (unrealized (0 1))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (contracted (x1 y3-0) (x1-0 y3-0)) y3-0 (0 1)
-    (enc "okay" y3 y3-0 (pubk a)) (enc "okay" y3-0 y3-0 (pubk a))
-    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a-0)))
-      (send (enc "okay" x3 y3-0 (pubk a-0))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a)))))
-  (label 58)
-  (parent 33)
-  (seen 64 71)
-  (unrealized (1 0))
-  (comment "5 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (x1 y3) (x1-0 y3)) y3 (0 1)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 59)
-  (parent 33)
-  (seen 54 72)
-  (unrealized (1 0))
-  (comment "5 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x1-0 x1)) x1 (0 1)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 60)
-  (parent 34)
-  (seen 38 63)
-  (unrealized (1 0))
-  (comment "5 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1-0)
-  (operation nonce-test (displaced 4 3 resp 2) x1-0 (0 1)
-    (enc "okay" x1-0 x1-0 (pubk a)) (enc "okay" y3 x1-0 (pubk a))
-    (enc x1-0 x3 (pubk a)) (enc x1-0 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
-      (recv (enc "okay" x1-0 x1 (pubk a))))
-    ((recv (enc x1 x1-0 (pubk a-0)))
-      (send (enc "okay" x1-0 x1 (pubk a-0))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" x1-0 x1-0 (pubk a)))))
-  (label 61)
-  (parent 34)
-  (unrealized (1 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (displaced 3 2 resp 2) y3 (1 0)
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 62)
-  (parent 35)
-  (unrealized (1 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 63)
-  (parent 35)
-  (seen 120)
-  (unrealized (1 0))
-  (comment "4 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 64)
-  (parent 35)
-  (seen 121 124)
-  (unrealized (1 0))
-  (comment "4 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1-0)
-  (operation nonce-test (displaced 3 2 resp 2) x1-0 (1 0)
-    (enc x1-0 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
-      (recv (enc "okay" x1-0 x1 (pubk a))))
-    ((recv (enc x1 x1-0 (pubk a-0)))
-      (send (enc "okay" x1-0 x1 (pubk a-0))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3 x1-0 (pubk a)))))
-  (label 65)
-  (parent 36)
-  (unrealized (1 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x1-0 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1-0)
-  (operation nonce-test (added-strand resp 2) x1-0 (1 0)
-    (enc x1-0 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
-      (recv (enc "okay" x1-0 x1 (pubk a))))
-    ((recv (enc x1 x1-0 (pubk a-0)))
-      (send (enc "okay" x1-0 x1 (pubk a-0))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3-0 x1-0 (pubk a)))))
-  (label 66)
-  (parent 36)
-  (seen 65)
-  (unrealized (1 0))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3-0) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3-0) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation generalization separated y3-0)
-  (traces
-    ((send (cat (enc y3 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 67)
-  (parent 37)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 68)
-  (parent 39)
-  (seen 25)
-  (realized)
-  (origs (x1 (0 0)))
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (0 1)
-    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 69)
-  (parent 40)
-  (seen 75)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (0 1)
-    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 70)
-  (parent 40)
-  (seen 71)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (displaced 4 2 resp 2) x1 (0 1)
-    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 71)
-  (parent 40)
-  (seen 37)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (displaced 4 3 resp 2) x1 (0 1)
-    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a)))))
-  (label 72)
-  (parent 40)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (displaced 4 1 resp 2) x1-0 (0 1)
-    (enc "okay" x3 x1-0 (pubk a)) (enc "okay" x1 x1-0 (pubk a))
-    (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
-    (enc x1 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 73)
-  (parent 42)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (displaced 4 2 resp 2) x1-0 (0 1)
-    (enc "okay" x3 x1-0 (pubk a)) (enc "okay" x1 x1-0 (pubk a))
-    (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
-    (enc x1 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
-  (label 74)
-  (parent 42)
-  (seen 43)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (displaced 4 3 resp 2) x1-0 (0 1)
-    (enc "okay" x3 x1-0 (pubk a)) (enc "okay" x1 x1-0 (pubk a))
-    (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
-    (enc x1 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 75)
-  (parent 42)
-  (seen 132)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
-    (enc "okay" x1 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 76)
-  (parent 46)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc "okay" x1 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 77)
-  (parent 46)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (added-strand resp 2) x3 (1 0)
-    (enc "okay" x1-0 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 78)
-  (parent 46)
-  (unrealized (1 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
-    (enc "okay" x3 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 79)
-  (parent 47)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc "okay" x3 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 80)
-  (parent 47)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (displaced 4 2 resp 2) y3 (1 0)
-    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
-  (label 81)
-  (parent 48)
-  (unrealized (1 0))
-  (comment "4 in cohort - 4 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (displaced 4 3 resp 2) y3 (1 0)
-    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
-  (label 82)
-  (parent 48)
-  (seen 96 140 143)
-  (unrealized (1 0))
-  (comment "4 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 83)
-  (parent 48)
-  (seen 96 98 142)
-  (unrealized (1 0))
-  (comment "5 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 84)
-  (parent 49)
-  (seen 98)
-  (unrealized (1 0))
-  (comment "5 in cohort - 4 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (displaced 4 2 resp 2) x1 (1 0)
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 85)
-  (parent 49)
-  (seen 98)
-  (unrealized (1 0))
-  (comment "4 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (displaced 4 3 resp 2) x1 (1 0)
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 86)
-  (parent 49)
-  (seen 149 153)
-  (unrealized (1 0))
-  (comment "4 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 87)
-  (parent 49)
-  (seen 85 150 155)
-  (unrealized (1 0))
-  (comment "5 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 88)
-  (parent 50)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (displaced 4 2 resp 2) x3 (1 0)
-    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a)))))
-  (label 89)
-  (parent 50)
-  (seen 46)
-  (unrealized (1 0))
-  (comment "5 in cohort - 4 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (displaced 4 3 resp 2) x3 (1 0)
-    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a)))))
-  (label 90)
-  (parent 50)
-  (seen 46 103)
-  (unrealized (1 0))
-  (comment "4 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (added-strand resp 2) x3 (1 0)
-    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a)))))
-  (label 91)
-  (parent 50)
-  (seen 89 103)
-  (unrealized (1 0))
-  (comment "6 in cohort - 4 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x1-0 x1)) x1 (0 1)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 92)
-  (parent 51)
-  (seen 69 84 111)
-  (unrealized (1 0))
-  (comment "6 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
-    (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 93)
-  (parent 52)
-  (seen 43)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
-    (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 94)
-  (parent 52)
-  (unrealized (1 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
-  (label 95)
-  (parent 52)
-  (seen 174)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3-0 y3 (pubk a)) (enc x1 y3 (pubk a))
-    (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
-  (label 96)
-  (parent 53)
-  (seen 173)
-  (unrealized (1 0))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3-0 y3 (pubk a)) (enc x1 y3 (pubk a))
-    (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 97)
-  (parent 53)
-  (seen 43)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 98)
-  (parent 53)
-  (seen 174 177)
-  (unrealized (1 0))
-  (comment "4 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 99)
-  (parent 54)
-  (seen 178)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" y3 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
-  (label 100)
-  (parent 54)
-  (seen 132)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a)))))
-  (label 101)
-  (parent 56)
-  (seen 44)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
-    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a)))))
-  (label 102)
-  (parent 56)
-  (seen 45)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (added-strand resp 2) x3 (1 0)
-    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a)))))
-  (label 103)
-  (parent 56)
-  (seen 46)
-  (unrealized (1 0))
-  (comment "4 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (added-strand resp 2) x3 (1 0)
-    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 104)
-  (parent 56)
-  (seen 47 183)
-  (unrealized (1 0))
-  (comment "4 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x1-0 x1)) x1 (0 1)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 105)
-  (parent 57)
-  (seen 70 107 114)
-  (unrealized (1 0))
-  (comment "6 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (displaced 4 3 resp 2) y3-0 (1 0)
-    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a-0)))
-      (send (enc "okay" x3 y3-0 (pubk a-0))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a)))))
-  (label 106)
-  (parent 58)
-  (seen 121)
-  (unrealized (1 0))
-  (comment "4 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
-    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a-0)))
-      (send (enc "okay" x3 y3-0 (pubk a-0))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a)))))
-  (label 107)
-  (parent 58)
-  (seen 124 189)
-  (unrealized (1 0))
-  (comment "5 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
-    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a-0)))
-      (send (enc "okay" x3 y3-0 (pubk a-0))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a)))))
-  (label 108)
-  (parent 58)
-  (seen 64 191 194)
-  (unrealized (1 0))
-  (comment "5 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
-  (label 109)
-  (parent 59)
-  (seen 54)
-  (unrealized (1 0))
-  (comment "5 in cohort - 4 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (displaced 4 2 resp 2) y3 (1 0)
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 110)
-  (parent 59)
-  (seen 95 199)
-  (unrealized (1 0))
-  (comment "4 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
-  (label 111)
-  (parent 59)
-  (seen 98 200 202)
-  (unrealized (1 0))
-  (comment "5 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (displaced 4 3 resp 2) x1 (1 0)
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 112)
-  (parent 60)
-  (seen 120)
-  (unrealized (1 0))
-  (comment "4 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 113)
-  (parent 60)
-  (seen 63 206)
-  (unrealized (1 0))
-  (comment "5 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 114)
-  (parent 60)
-  (seen 124 207 210)
-  (unrealized (1 0))
-  (comment "5 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1-0)
-  (operation nonce-test (displaced 4 2 resp 2) x1-0 (1 0)
-    (enc x1-0 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
-      (recv (enc "okay" x1-0 x1 (pubk a))))
-    ((recv (enc x1 x1-0 (pubk a-0)))
-      (send (enc "okay" x1-0 x1 (pubk a-0))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" x1-0 x1-0 (pubk a)))))
-  (label 115)
-  (parent 61)
-  (seen 128)
-  (unrealized (1 0))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 116)
-  (parent 61)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1-0)
-  (operation nonce-test (displaced 4 3 resp 2) x1-0 (1 0)
-    (enc x1-0 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
-      (recv (enc "okay" x1-0 x1 (pubk a))))
-    ((recv (enc x1 x1-0 (pubk a-0)))
-      (send (enc "okay" x1-0 x1 (pubk a-0))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" x1-0 x1-0 (pubk a)))))
-  (label 117)
-  (parent 61)
-  (seen 128 130)
-  (unrealized (1 0))
-  (comment "3 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x1-0 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1-0)
-  (operation nonce-test (added-strand resp 2) x1-0 (1 0)
-    (enc x1-0 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
-      (recv (enc "okay" x1-0 x1 (pubk a))))
-    ((recv (enc x1 x1-0 (pubk a-0)))
-      (send (enc "okay" x1-0 x1 (pubk a-0))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" x1-0 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3-0 x1-0 (pubk a)))))
-  (label 118)
-  (parent 61)
-  (seen 115 130)
-  (unrealized (1 0))
-  (comment "4 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 119)
-  (parent 62)
-  (seen 37)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 120)
-  (parent 62)
-  (unrealized (1 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 121)
-  (parent 62)
-  (seen 220)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3-0 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 122)
-  (parent 63)
-  (unrealized (1 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3-0 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 123)
-  (parent 63)
-  (seen 37)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3-0 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
-  (label 124)
-  (parent 63)
-  (seen 220 223)
-  (unrealized (1 0))
-  (comment "4 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3-0 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 125)
-  (parent 64)
-  (seen 225)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3-0 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 126)
-  (parent 64)
-  (seen 37)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
-    (enc "okay" y3 x1 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
-  (label 127)
-  (parent 65)
-  (seen 68)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1-0)
-  (operation nonce-test (added-strand resp 2) x1-0 (1 0)
-    (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
-      (recv (enc "okay" x1-0 x1 (pubk a))))
-    ((recv (enc x1 x1-0 (pubk a-0)))
-      (send (enc "okay" x1-0 x1 (pubk a-0))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" x1-0 x1-0 (pubk a)))))
-  (label 128)
-  (parent 65)
-  (unrealized (1 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 129)
-  (parent 66)
-  (seen 127)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x1-0 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1-0)
-  (operation nonce-test (added-strand resp 2) x1-0 (1 0)
-    (enc "okay" y3-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
-      (recv (enc "okay" x1-0 x1 (pubk a))))
-    ((recv (enc x1 x1-0 (pubk a-0)))
-      (send (enc "okay" x1-0 x1 (pubk a-0))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3-0 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" x1-0 x1-0 (pubk a)))))
-  (label 130)
-  (parent 66)
-  (seen 128)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3-0) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 y3-0) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a) (privk a-0))
-  (uniq-orig y3-0)
-  (operation generalization separated a-0)
-  (traces
-    ((send (cat (enc y3 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 131)
-  (parent 67)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 132)
-  (parent 72)
-  (seen 43)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 133)
-  (parent 73)
-  (seen 25)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 134)
-  (parent 76)
-  (seen 25)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 135)
-  (parent 77)
-  (seen 28)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
-    (enc "okay" x3 x3 (pubk a)) (enc "okay" x1 x3 (pubk a))
-    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 136)
-  (parent 78)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc "okay" x3 x3 (pubk a)) (enc "okay" x1 x3 (pubk a))
-    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 137)
-  (parent 78)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 138)
-  (parent 79)
-  (seen 25)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 139)
-  (parent 80)
-  (seen 28)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (displaced 4 3 resp 2) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
-    (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
-  (label 140)
-  (parent 81)
-  (seen 95 173)
-  (unrealized (1 0))
-  (comment "3 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
-    (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
-  (label 141)
-  (parent 81)
-  (seen 93)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
-    (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 142)
-  (parent 81)
-  (seen 173 177)
-  (unrealized (1 0))
-  (comment "4 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
-  (label 143)
-  (parent 81)
-  (seen 177)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" x1 y3 (pubk a)) (enc x1 y3 (pubk a))
-    (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
-  (label 144)
-  (parent 82)
-  (seen 43)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3-0 y3 (pubk a)) (enc x1 y3 (pubk a))
-    (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
-  (label 145)
-  (parent 83)
-  (seen 177 233)
-  (unrealized (1 0))
-  (comment "3 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3-0 y3 (pubk a)) (enc x1 y3 (pubk a))
-    (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 146)
-  (parent 83)
-  (seen 97)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 147)
-  (parent 84)
-  (seen 178)
-  (unrealized (1 0))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 148)
-  (parent 84)
-  (seen 100)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (displaced 5 3 resp 2) x1 (1 0)
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 149)
-  (parent 84)
-  (seen 174)
-  (unrealized (1 0))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 150)
-  (parent 84)
-  (seen 98 238 240)
-  (unrealized (1 0))
-  (comment "5 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 151)
-  (parent 85)
-  (seen 177)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" y3 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 152)
-  (parent 85)
-  (seen 132)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (displaced 4 3 resp 2) x1 (1 0)
-    (enc "okay" y3 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 153)
-  (parent 85)
-  (seen 174)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 154)
-  (parent 86)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 155)
-  (parent 86)
-  (seen 153 240)
-  (unrealized (1 0))
-  (comment "3 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 156)
-  (parent 87)
-  (seen 151 242)
-  (unrealized (1 0))
-  (comment "3 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 157)
-  (parent 87)
-  (seen 152)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 158)
-  (parent 88)
-  (seen 28)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 159)
-  (parent 89)
-  (seen 158)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
-    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 160)
-  (parent 89)
-  (seen 133)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (added-strand resp 2) x3 (1 0)
-    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a)))))
-  (label 161)
-  (parent 89)
-  (unrealized (1 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (added-strand resp 2) x3 (1 0)
-    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 162)
-  (parent 89)
-  (seen 78 250)
-  (unrealized (1 0))
-  (comment "4 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc "okay" x1 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 163)
-  (parent 90)
-  (seen 135)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
-    (enc "okay" x1 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 164)
-  (parent 90)
-  (seen 134)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (added-strand resp 2) x3 (1 0)
-    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a)))))
-  (label 165)
-  (parent 91)
-  (seen 161)
-  (unrealized (1 0))
-  (comment "4 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a)))))
-  (label 166)
-  (parent 91)
-  (seen 159)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
-    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a)))))
-  (label 167)
-  (parent 91)
-  (seen 160)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (added-strand resp 2) x3 (1 0)
-    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 168)
-  (parent 91)
-  (seen 162 183 255)
-  (unrealized (1 0))
-  (comment "5 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 169)
-  (parent 92)
-  (seen 84 200)
-  (unrealized (1 0))
-  (comment "6 in cohort - 4 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (displaced 5 3 resp 2) x1 (1 0)
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 170)
-  (parent 92)
-  (seen 149 202 260)
-  (unrealized (1 0))
-  (comment "5 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 171)
-  (parent 92)
-  (seen 111 150 261 263)
-  (unrealized (1 0))
-  (comment "6 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
-    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 172)
-  (parent 94)
-  (seen 93)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
-    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
-  (label 173)
-  (parent 94)
-  (seen 174)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 174)
-  (parent 94)
-  (unrealized (1 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
-  (label 175)
-  (parent 95)
-  (seen 245)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" x1 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
-    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
-  (label 176)
-  (parent 96)
-  (seen 144)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 177)
-  (parent 96)
-  (unrealized (1 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 178)
-  (parent 98)
-  (unrealized (1 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" y3 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 179)
-  (parent 98)
-  (seen 100)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 180)
-  (parent 99)
-  (seen 219)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc "okay" x1 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 181)
-  (parent 103)
-  (seen 77)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
-    (enc "okay" x1 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 182)
-  (parent 103)
-  (seen 76)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (added-strand resp 2) x3 (1 0)
-    (enc "okay" x1-0 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 183)
-  (parent 103)
-  (seen 78)
-  (unrealized (1 0))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc "okay" x3 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 184)
-  (parent 104)
-  (seen 80)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
-    (enc "okay" x3 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 185)
-  (parent 104)
-  (seen 79)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (displaced 5 4 resp 2) x1 (1 0)
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 186)
-  (parent 105)
-  (seen 189 207)
-  (unrealized (1 0))
-  (comment "5 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 187)
-  (parent 105)
-  (seen 107 210 273)
-  (unrealized (1 0))
-  (comment "6 in cohort - 3 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 188)
-  (parent 105)
-  (seen 114 194 274 277)
-  (unrealized (1 0))
-  (comment "6 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
-    (enc "okay" y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
-    (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a-0)))
-      (send (enc "okay" x3 y3-0 (pubk a-0))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a)))))
-  (label 189)
-  (parent 106)
-  (seen 220)
-  (unrealized (1 0))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
-    (enc "okay" y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
-    (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a)))))
-  (label 190)
-  (parent 106)
-  (seen 119)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
-    (enc "okay" y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
-    (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a-0)))
-      (send (enc "okay" x3 y3-0 (pubk a-0))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a)))))
-  (label 191)
-  (parent 106)
-  (seen 121 281)
-  (unrealized (1 0))
-  (comment "3 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
-    (enc "okay" y3-1 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
-    (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a-0)))
-      (send (enc "okay" x3 y3-0 (pubk a-0))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a)))))
-  (label 192)
-  (parent 107)
-  (seen 223)
-  (unrealized (1 0))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
-    (enc "okay" y3-1 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
-    (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a)))))
-  (label 193)
-  (parent 107)
-  (seen 123)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
-    (enc "okay" y3-1 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
-    (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a-0)))
-      (send (enc "okay" x3 y3-0 (pubk a-0))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-2 y3-0 (pubk a)))))
-  (label 194)
-  (parent 107)
-  (seen 124 281 284)
-  (unrealized (1 0))
-  (comment "5 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
-    (enc "okay" y3-1 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
-    (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a-0)))
-      (send (enc "okay" x3 y3-0 (pubk a-0))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a)))))
-  (label 195)
-  (parent 108)
-  (seen 125 286)
-  (unrealized (1 0))
-  (comment "3 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
-    (enc "okay" y3-1 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
-    (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a)))))
-  (label 196)
-  (parent 108)
-  (seen 126)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 197)
-  (parent 109)
-  (seen 99)
-  (unrealized (1 0))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
-  (label 198)
-  (parent 109)
-  (seen 100)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (displaced 5 2 resp 2) y3 (1 0)
-    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
-  (label 199)
-  (parent 109)
-  (seen 95)
-  (unrealized (1 0))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-2 y3 (pubk a)))))
-  (label 200)
-  (parent 109)
-  (seen 98 289 291)
-  (unrealized (1 0))
-  (comment "5 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 201)
-  (parent 110)
-  (seen 245)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
-  (label 202)
-  (parent 110)
-  (seen 174 291)
-  (unrealized (1 0))
-  (comment "3 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 203)
-  (parent 111)
-  (seen 177 293)
-  (unrealized (1 0))
-  (comment "3 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
-  (label 204)
-  (parent 111)
-  (seen 152)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 205)
-  (parent 112)
-  (seen 119)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 206)
-  (parent 112)
-  (seen 120)
-  (unrealized (1 0))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 207)
-  (parent 112)
-  (seen 220 297)
-  (unrealized (1 0))
-  (comment "3 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 208)
-  (parent 113)
-  (seen 122)
-  (unrealized (1 0))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 209)
-  (parent 113)
-  (seen 123)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 210)
-  (parent 113)
-  (seen 124 297 300)
-  (unrealized (1 0))
-  (comment "5 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 211)
-  (parent 114)
-  (seen 225 302)
-  (unrealized (1 0))
-  (comment "3 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 212)
-  (parent 114)
-  (seen 126)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
-    (enc "okay" y3 x1 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 213)
-  (parent 115)
-  (seen 215)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1-0)
-  (operation nonce-test (added-strand resp 2) x1-0 (1 0)
-    (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
-      (recv (enc "okay" x1-0 x1 (pubk a))))
-    ((recv (enc x1 x1-0 (pubk a-0)))
-      (send (enc "okay" x1-0 x1 (pubk a-0))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" x1-0 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" x1-0 x1-0 (pubk a)))))
-  (label 214)
-  (parent 115)
-  (unrealized (1 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 215)
-  (parent 116)
-  (seen 68)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 216)
-  (parent 117)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x1-0 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1-0)
-  (operation nonce-test (added-strand resp 2) x1-0 (1 0)
-    (enc "okay" y3-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
-      (recv (enc "okay" x1-0 x1 (pubk a))))
-    ((recv (enc x1 x1-0 (pubk a-0)))
-      (send (enc "okay" x1-0 x1 (pubk a-0))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" x1-0 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" y3-0 x1-0 (pubk a))))
-    ((recv (enc x1-0 x1-0 (pubk a)))
-      (send (enc "okay" x1-0 x1-0 (pubk a)))))
-  (label 217)
-  (parent 118)
-  (seen 214)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 218)
-  (parent 118)
-  (seen 213)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 219)
-  (parent 120)
-  (seen 119)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
-  (label 220)
-  (parent 120)
-  (unrealized (1 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 221)
-  (parent 121)
-  (seen 119)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 222)
-  (parent 122)
-  (seen 219)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
-  (label 223)
-  (parent 122)
-  (unrealized (1 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3-0 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
-  (label 224)
-  (parent 124)
-  (seen 126)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3-0 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 225)
-  (parent 124)
-  (unrealized (1 0))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 226)
-  (parent 125)
-  (seen 244)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 227)
-  (parent 128)
-  (seen 305)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 228)
-  (parent 130)
-  (seen 227)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3-0) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 y3-0) (y3 y3-0) (a a))
-  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation generalization forgot (privk a-0))
-  (traces
-    ((send (cat (enc y3 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 229)
-  (parent 131)
-  (realized)
-  (shape)
-  (maps ((0 1) ((x1 y3) (x3 x3) (a a) (x1-0 y3) (x3-0 y3-0) (a-0 a-0))))
-  (origs (y3-0 (0 0))))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 230)
-  (parent 136)
-  (seen 138)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 231)
-  (parent 137)
-  (seen 139)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" x1 y3 (pubk a)) (enc "okay" y3 y3 (pubk a))
-    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
-  (label 232)
-  (parent 140)
-  (seen 93)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
-    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
-  (label 233)
-  (parent 142)
-  (seen 177)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
-    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
-  (label 234)
-  (parent 142)
-  (seen 172)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
-  (label 235)
-  (parent 143)
-  (seen 100)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" x1 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
-    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
-  (label 236)
-  (parent 145)
-  (seen 176)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 237)
-  (parent 147)
-  (seen 180)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 238)
-  (parent 147)
-  (seen 178)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 239)
-  (parent 149)
-  (seen 175)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 240)
-  (parent 149)
-  (seen 174)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" y3-0 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 241)
-  (parent 150)
-  (seen 179)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3-0 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 242)
-  (parent 150)
-  (seen 177)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 243)
-  (parent 151)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 244)
-  (parent 153)
-  (seen 245)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 245)
-  (parent 154)
-  (seen 132)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 246)
-  (parent 155)
-  (seen 244)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 247)
-  (parent 156)
-  (seen 243)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
-    (enc "okay" x1 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 248)
-  (parent 161)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc "okay" x1 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 249)
-  (parent 161)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (added-strand resp 2) x3 (1 0)
-    (enc "okay" x1-0 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 250)
-  (parent 161)
-  (unrealized (1 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc "okay" x3 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 251)
-  (parent 162)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
-    (enc "okay" x3 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 252)
-  (parent 162)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc "okay" x1 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 253)
-  (parent 165)
-  (seen 249)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
-    (enc "okay" x1 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 254)
-  (parent 165)
-  (seen 248)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
-  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (added-strand resp 2) x3 (1 0)
-    (enc "okay" x1-0 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 255)
-  (parent 165)
-  (seen 250)
-  (unrealized (1 0))
-  (comment "3 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc "okay" x3 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 256)
-  (parent 168)
-  (seen 251)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
-    (enc "okay" x3 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
-    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 257)
-  (parent 168)
-  (seen 252)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 258)
-  (parent 169)
-  (seen 147 289)
-  (unrealized (1 0))
-  (comment "4 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 259)
-  (parent 169)
-  (seen 198)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (0 1))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (displaced 6 3 resp 2) x1 (1 0)
-    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 260)
-  (parent 169)
-  (seen 149 291)
-  (unrealized (1 0))
-  (comment "4 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
-  (label 261)
-  (parent 169)
-  (seen 150 200 324 326)
-  (unrealized (1 0))
-  (comment "6 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (0 1)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 262)
-  (parent 170)
-  (seen 201)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (0 1))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 263)
-  (parent 170)
-  (seen 202 240 326)
-  (unrealized (1 0))
-  (comment "4 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 264)
-  (parent 171)
-  (seen 203 242 327)
-  (unrealized (1 0))
-  (comment "4 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 265)
-  (parent 171)
-  (seen 204)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" x1 y3 (pubk a)) (enc "okay" y3 y3 (pubk a))
-    (enc "okay" y3-0 y3 (pubk a)) (enc x1 y3 (pubk a))
-    (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
-  (label 266)
-  (parent 173)
-  (seen 232)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 267)
-  (parent 174)
-  (seen 175)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 268)
-  (parent 177)
-  (seen 267)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 269)
-  (parent 178)
-  (seen 307)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
-    (enc "okay" x3 x3 (pubk a)) (enc "okay" x1 x3 (pubk a))
-    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 270)
-  (parent 183)
-  (seen 136)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc "okay" x3 x3 (pubk a)) (enc "okay" x1 x3 (pubk a))
-    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 271)
-  (parent 183)
-  (seen 137)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 272)
-  (parent 186)
-  (seen 205)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 273)
-  (parent 186)
-  (seen 189 297)
-  (unrealized (1 0))
-  (comment "4 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 274)
-  (parent 186)
-  (seen 207 281 332)
-  (unrealized (1 0))
-  (comment "4 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 275)
-  (parent 187)
-  (seen 192 300)
-  (unrealized (1 0))
-  (comment "4 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 276)
-  (parent 187)
-  (seen 209)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
-  (label 277)
-  (parent 187)
-  (seen 194 210 332 335)
-  (unrealized (1 0))
-  (comment "6 in cohort - 2 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 278)
-  (parent 188)
-  (seen 211 286 336)
-  (unrealized (1 0))
-  (comment "4 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 279)
-  (parent 188)
-  (seen 212)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
-    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
-    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a)))))
-  (label 280)
-  (parent 189)
-  (seen 219)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
-    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
-    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a-0)))
-      (send (enc "okay" x3 y3-0 (pubk a-0))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-2 y3-0 (pubk a)))))
-  (label 281)
-  (parent 189)
-  (seen 220)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
-    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
-    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a)))))
-  (label 282)
-  (parent 191)
-  (seen 221)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
-    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
-    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a)))))
-  (label 283)
-  (parent 192)
-  (seen 222)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
-    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
-    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a-0)))
-      (send (enc "okay" x3 y3-0 (pubk a-0))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-2 y3-0 (pubk a)))))
-  (label 284)
-  (parent 192)
-  (seen 223)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
-    (enc "okay" y3-1 y3-0 (pubk a)) (enc "okay" y3-2 y3-0 (pubk a))
-    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-2 y3-0 (pubk a)))))
-  (label 285)
-  (parent 194)
-  (seen 224)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-2) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
-    (enc "okay" y3-1 y3-0 (pubk a)) (enc "okay" y3-2 y3-0 (pubk a))
-    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a-0)))
-      (send (enc "okay" x3 y3-0 (pubk a-0))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-2 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a)))))
-  (label 286)
-  (parent 194)
-  (seen 225)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
-    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
-    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a)))))
-  (label 287)
-  (parent 195)
-  (seen 226)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 288)
-  (parent 197)
-  (seen 296)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-2 y3 (pubk a)))))
-  (label 289)
-  (parent 197)
-  (seen 178)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
-  (label 290)
-  (parent 199)
-  (seen 175)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-2 y3 (pubk a)))))
-  (label 291)
-  (parent 199)
-  (seen 174)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3-1 y3 (pubk a)) (enc "okay" y3-2 y3 (pubk a))
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-2 y3 (pubk a)))))
-  (label 292)
-  (parent 200)
-  (seen 179)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-2) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (added-strand resp 2) y3 (1 0)
-    (enc "okay" y3-1 y3 (pubk a)) (enc "okay" y3-2 y3 (pubk a))
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-2 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 293)
-  (parent 200)
-  (seen 177)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
-  (label 294)
-  (parent 202)
-  (seen 244)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
-    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 295)
-  (parent 203)
-  (seen 294)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 296)
-  (parent 206)
-  (seen 219)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 297)
-  (parent 206)
-  (seen 220)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
-  (label 298)
-  (parent 207)
-  (seen 221)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 299)
-  (parent 208)
-  (seen 222)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 300)
-  (parent 208)
-  (seen 223)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" y3-0 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 301)
-  (parent 210)
-  (seen 224)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3-0 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 302)
-  (parent 210)
-  (seen 225)
-  (unrealized (1 0))
-  (comment "2 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 303)
-  (parent 211)
-  (seen 226)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 304)
-  (parent 214)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 305)
-  (parent 216)
-  (seen 68)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 306)
-  (parent 217)
-  (seen 304)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
-    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
-  (label 307)
-  (parent 220)
-  (seen 221)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
-    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
-  (label 308)
-  (parent 223)
-  (seen 307)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
-    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 309)
-  (parent 225)
-  (seen 267)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" x1 y3 (pubk a)) (enc "okay" y3 y3 (pubk a))
-    (enc "okay" y3-0 y3 (pubk a)) (enc x1 y3 (pubk a))
-    (enc y3 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
-  (label 310)
-  (parent 233)
-  (seen 266)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 311)
-  (parent 238)
-  (seen 269)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 312)
-  (parent 240)
-  (seen 267)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 313)
-  (parent 242)
-  (seen 268)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 314)
-  (parent 243)
-  (seen 245)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 315)
-  (parent 248)
-  (seen 134)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
-  (label 316)
-  (parent 249)
-  (seen 135)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
-    (enc "okay" x3 x3 (pubk a)) (enc "okay" x1 x3 (pubk a))
-    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 317)
-  (parent 250)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc "okay" x3 x3 (pubk a)) (enc "okay" x1 x3 (pubk a))
-    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 318)
-  (parent 250)
-  (realized)
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 319)
-  (parent 251)
-  (seen 139)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 320)
-  (parent 252)
-  (seen 138)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
-    (enc "okay" x3 x3 (pubk a)) (enc "okay" x1 x3 (pubk a))
-    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 321)
-  (parent 255)
-  (seen 317)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
-    (enc "okay" x3 x3 (pubk a)) (enc "okay" x1 x3 (pubk a))
-    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
-    (enc x1 x3 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 322)
-  (parent 255)
-  (seen 318)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 323)
-  (parent 258)
-  (seen 288)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((0 0) (7 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (0 1)) ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0))
-    ((7 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
-  (label 324)
-  (parent 258)
-  (seen 238 289)
-  (unrealized (1 0))
-  (comment "3 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (0 1))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 325)
-  (parent 260)
-  (seen 290)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0))
-    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
-  (label 326)
-  (parent 260)
-  (seen 240 291)
-  (unrealized (1 0))
-  (comment "3 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((0 0) (7 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (0 1)) ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0))
-    ((7 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3-1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 327)
-  (parent 261)
-  (seen 242 293)
-  (unrealized (1 0))
-  (comment "3 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" y3-1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
-  (label 328)
-  (parent 261)
-  (seen 292)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (0 1))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 329)
-  (parent 263)
-  (seen 294)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 330)
-  (parent 264)
-  (seen 295)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 331)
-  (parent 273)
-  (seen 296)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
-  (label 332)
-  (parent 273)
-  (seen 281 297)
-  (unrealized (1 0))
-  (comment "3 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 333)
-  (parent 274)
-  (seen 298)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 334)
-  (parent 275)
-  (seen 299)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((0 0) (7 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (0 1)) ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0))
-    ((7 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
-  (label 335)
-  (parent 275)
-  (seen 284 300)
-  (unrealized (1 0))
-  (comment "3 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((0 0) (7 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (0 1)) ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0))
-    ((7 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (added-strand resp 2) x1 (1 0)
-    (enc "okay" y3-1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 336)
-  (parent 277)
-  (seen 286 302)
-  (unrealized (1 0))
-  (comment "3 in cohort - 1 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" y3-1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
-  (label 337)
-  (parent 277)
-  (seen 301)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 338)
-  (parent 278)
-  (seen 303)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
-    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
-    (enc "okay" y3-2 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
-    (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-2 y3-0 (pubk a)))))
-  (label 339)
-  (parent 281)
-  (seen 307)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
-    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
-    (enc "okay" y3-2 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
-    (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-2 y3-0 (pubk a)))))
-  (label 340)
-  (parent 284)
-  (seen 308)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a name))
-  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-2) (a a))
-  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-0) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3-0)
-  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
-    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
-    (enc "okay" y3-2 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
-    (enc y3-0 y3-0 (pubk a)))
-  (traces
-    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
-      (recv (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a))))
-    ((recv (enc y3-0 y3-0 (pubk a)))
-      (send (enc "okay" y3-1 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-2 y3-0 (pubk a))))
-    ((recv (enc y3-0 x3 (pubk a)))
-      (send (enc "okay" y3-0 y3-0 (pubk a)))))
-  (label 341)
-  (parent 286)
-  (seen 309)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
-    (enc "okay" y3-2 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-2 y3 (pubk a)))))
-  (label 342)
-  (parent 289)
-  (seen 345)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
-    (enc "okay" y3-2 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-2 y3 (pubk a)))))
-  (label 343)
-  (parent 291)
-  (seen 267)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a name))
-  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-2) (a a))
-  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig y3)
-  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
-    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
-    (enc "okay" y3-2 y3 (pubk a)) (enc y3 x3 (pubk a))
-    (enc y3 y3 (pubk a)))
-  (traces
-    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
-      (recv (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
-    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-2 y3 (pubk a))))
-    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
-  (label 344)
-  (parent 293)
-  (seen 343)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
-    ((5 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 345)
-  (parent 297)
-  (seen 307)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
-  (label 346)
-  (parent 300)
-  (seen 308)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
-    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 347)
-  (parent 302)
-  (seen 309)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 348)
-  (parent 304)
-  (seen 305)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 349)
-  (parent 317)
-  (seen 230)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
-    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x3)
-  (operation generalization deleted (2 0))
-  (traces
-    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
-      (recv (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
-    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
-  (label 350)
-  (parent 318)
-  (seen 231)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((0 0) (7 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (0 1)) ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0))
-    ((7 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
-  (label 351)
-  (parent 324)
-  (seen 342)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0))
-    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
-  (label 352)
-  (parent 326)
-  (seen 343)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((0 0) (7 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (0 1)) ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0))
-    ((7 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 353)
-  (parent 327)
-  (seen 344)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
-    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
-  (label 354)
-  (parent 332)
-  (seen 345)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((0 0) (7 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (0 1)) ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0))
-    ((7 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
-  (label 355)
-  (parent 335)
-  (seen 346)
-  (realized)
-  (comment "1 in cohort - 0 not yet seen"))
-
-(defskeleton wonthull2
-  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a name))
-  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
-  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
-  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
-    ((0 0) (6 0)) ((0 0) (7 0)) ((1 1) (0 1)) ((2 1) (0 1))
-    ((3 1) (0 1)) ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0))
-    ((7 1) (1 0)))
-  (non-orig (privk a))
-  (uniq-orig x1)
-  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
-    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
-    (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
-    (enc x1 x1 (pubk a)))
-  (traces
-    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
-      (recv (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
-    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a))))
-    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
-  (label 356)
-  (parent 336)
-  (seen 347)
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/wonthull2.scm")
+(comment "Strand count bounded at 9")
+
+(defprotocol wonthull2 basic
+  (defrole init
+    (vars (a name) (x1 x2 x3 x4 text))
+    (trace (send (cat (enc x1 x3 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a))))
+    (non-orig (privk a))
+    (uniq-orig x3))
+  (defrole resp
+    (vars (a name) (y1 y2 y3 text))
+    (trace (recv (enc y1 y2 (pubk a)))
+      (send (enc "okay" y3 y1 (pubk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wonthull2
+  (vars (x1 x2 x3 x4 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x3) (x4 x4) (a a))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (x3 (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x2 x3 x4 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x3) (x4 x4) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x2) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (0 1)
+    (enc x1 x3 (pubk a)) (enc x3 x2 (pubk a)))
+  (strand-map 0)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a))))
+    ((recv (enc x3 x2 (pubk a))) (send (enc "okay" y3 x3 (pubk a)))))
+  (label 1)
+  (parent 0)
+  (unrealized (0 1))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x2 x4 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x4) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (0 1)
+    (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a)))
+  (strand-map 0)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
+      (recv (enc "okay" x1 x4 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
+  (label 2)
+  (parent 0)
+  (seen 5)
+  (seen-ops
+    (5
+      (operation nonce-test (added-strand resp 2) x1 (0 1)
+        (enc "okay" y3 x1 (pubk a)) (enc x1 x1 (pubk a))
+        (enc x1 x2 (pubk a))) (strand-map 0 2)))
+  (unrealized (0 1))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x2 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x2) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (x3 y3) (x4 y3)) y3 (0 1)
+    (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
+    (enc y3 x2 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x2 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x2 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 3)
+  (parent 1)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (x1 x1) (x2 x2) (x3 y3) (x4 y3))))
+  (origs (y3 (0 0))))
+
+(defskeleton wonthull2
+  (vars (x1 x2 x3 x4 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x3) (x4 x4) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x2) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x2) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (0 1)
+    (enc "okay" y3 x3 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x3 x2 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a))))
+    ((recv (enc x3 x2 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x2 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 4)
+  (parent 1)
+  (unrealized (0 1))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x2 x4 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x4) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x2) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (0 1)
+    (enc "okay" y3 x1 (pubk a)) (enc x1 x1 (pubk a))
+    (enc x1 x2 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
+      (recv (enc "okay" x1 x4 (pubk a))))
+    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 5)
+  (parent 1)
+  (seen 10)
+  (seen-ops
+    (10
+      (operation nonce-test (added-strand resp 2) x1 (0 1)
+        (enc "okay" y3 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))) (strand-map 0 1 3)))
+  (unrealized (0 1))
+  (comment "4 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x2 y3 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x2) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (x1 y3) (x4 y3)) y3 (0 1)
+    (enc "okay" y3 y3 (pubk a)) (enc y3 x2 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x2 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 6)
+  (parent 2)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x2 x4 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x4) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (0 1)
+    (enc "okay" y3 x1 (pubk a)) (enc x1 x1 (pubk a))
+    (enc x1 x2 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
+      (recv (enc "okay" x1 x4 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 7)
+  (parent 2)
+  (seen 13)
+  (seen-ops
+    (13
+      (operation nonce-test (added-strand resp 2) x1 (0 1)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+        (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))) (strand-map 0 2 3)))
+  (unrealized (0 1))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x2 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x2) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x2) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x3 x1) (x4 x1)) x1 (0 1)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 8)
+  (parent 4)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x2 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x2) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x2) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (x3 y3) (x4 y3)) y3 (0 1)
+    (enc "okay" x1 y3 (pubk a)) (enc "okay" y3 y3 (pubk a))
+    (enc x1 y3 (pubk a)) (enc y3 x2 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x2 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x2 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x2 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 9)
+  (parent 4)
+  (seen 3)
+  (seen-ops
+    (3 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x2 x4 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x4) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x2) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x2) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (0 1)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
+      (recv (enc "okay" x1 x4 (pubk a))))
+    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 10)
+  (parent 4)
+  (unrealized (0 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x2 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 y3-0) (x2 x2) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x2) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (contracted (x1 y3-0) (x4 y3-0)) y3-0 (0 1)
+    (enc "okay" y3 y3-0 (pubk a)) (enc "okay" y3-0 y3-0 (pubk a))
+    (enc y3-0 x2 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x2 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x2 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a)))))
+  (label 11)
+  (parent 5)
+  (seen 6)
+  (seen-ops
+    (6 (operation generalization deleted (1 0)) (strand-map 0 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x2 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x2) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x2) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (x1 y3) (x4 y3)) y3 (0 1)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc y3 x2 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x2 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x2 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 12)
+  (parent 5)
+  (seen 16)
+  (seen-ops
+    (16 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x2 x4 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x4) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x2) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (0 1)
+    (enc "okay" y3 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
+      (recv (enc "okay" x1 x4 (pubk a))))
+    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 13)
+  (parent 5)
+  (unrealized (0 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x2 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x2) (x3 y3-0) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3-0) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3 y3-0)
+  (operation generalization separated y3-0)
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc y3 y3-0 (pubk a)) (enc y3-0 x2 (pubk a))))
+      (recv (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 14)
+  (parent 6)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x2 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x4 x1)) x1 (0 1)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 15)
+  (parent 7)
+  (seen 6)
+  (seen-ops
+    (6 (operation generalization deleted (1 0)) (strand-map 0 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x2 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x2) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation generalization deleted (1 0))
+  (strand-map 0 2)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 16)
+  (parent 8)
+  (seen 3)
+  (seen-ops
+    (3 (operation generalization separated x1-0) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x2 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x2) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x2) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x4 x1)) x1 (0 1)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x1 (pubk a))
+    (enc x1 x2 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 17)
+  (parent 10)
+  (seen 12)
+  (seen-ops
+    (12 (operation generalization deleted (1 0)) (strand-map 0 2 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x2 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x2) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x4 x1)) x1 (0 1)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x1 (pubk a))
+    (enc x1 x2 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x2 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x2 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 18)
+  (parent 13)
+  (seen 15)
+  (seen-ops
+    (15 (operation generalization deleted (1 0)) (strand-map 0 2 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x2 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x2) (x3 y3-0) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3-0) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation generalization forgot y3)
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc y3 y3-0 (pubk a)) (enc y3-0 x2 (pubk a))))
+      (recv (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 19)
+  (parent 14)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (x1 y3) (x2 x2) (x3 y3-0) (x4 y3))))
+  (origs (y3-0 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol wonthull2 basic
+  (defrole init
+    (vars (a name) (x1 x2 x3 x4 text))
+    (trace (send (cat (enc x1 x3 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a))))
+    (non-orig (privk a))
+    (uniq-orig x3))
+  (defrole resp
+    (vars (a name) (y1 y2 y3 text))
+    (trace (recv (enc y1 y2 (pubk a)))
+      (send (enc "okay" y3 y1 (pubk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 x3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3-0)
+  (traces
+    ((send (cat (enc x1-0 x3-0 (pubk a)) (enc x3-0 x3 (pubk a))))
+      (recv (enc "okay" x3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0)))
+      (send (enc "okay" x3 x1 (pubk a-0)))))
+  (label 20)
+  (unrealized (0 1))
+  (origs (x3-0 (0 0)))
+  (comment "4 in cohort - 4 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 text) (a name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (displaced 2 1 resp 2) x3-0 (0 1)
+    (enc x1-0 x3-0 (pubk a-0)) (enc x3-0 x3 (pubk a-0)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1-0 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a)))))
+  (label 21)
+  (parent 20)
+  (unrealized (0 1))
+  (origs (x1 (0 0)))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (displaced 2 1 resp 2) x3-0 (0 1)
+    (enc x1-0 x3-0 (pubk a)) (enc x3-0 x3 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0)))
+      (send (enc "okay" x3 x1 (pubk a-0)))))
+  (label 22)
+  (parent 20)
+  (seen 25)
+  (seen-ops
+    (25
+      (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+        (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a))) (strand-map 0 1)))
+  (unrealized (1 0))
+  (origs (x3 (0 0)))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 x3-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3-0) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3-0)
+  (operation nonce-test (added-strand resp 2) x3-0 (0 1)
+    (enc x1-0 x3-0 (pubk a)) (enc x3-0 x3 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1-0 x3-0 (pubk a)) (enc x3-0 x3 (pubk a))))
+      (recv (enc "okay" x3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3-0 x3 (pubk a)))
+      (send (enc "okay" y3 x3-0 (pubk a)))))
+  (label 23)
+  (parent 20)
+  (seen 27)
+  (seen-ops
+    (27
+      (operation nonce-test (displaced 3 1 resp 2) x3-0 (0 1)
+        (enc "okay" y3 x3-0 (pubk a-0)) (enc x1-0 x3-0 (pubk a-0))
+        (enc x3-0 x3 (pubk a-0))) (strand-map 0 1 2)))
+  (unrealized (0 1))
+  (comment "5 in cohort - 4 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x1-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1-0)
+  (operation nonce-test (added-strand resp 2) x1-0 (0 1)
+    (enc x1-0 x3 (pubk a)) (enc x1-0 x1-0 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))))
+      (recv (enc "okay" x1-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3 x1-0 (pubk a)))))
+  (label 24)
+  (parent 20)
+  (seen 26 33)
+  (seen-ops
+    (26
+      (operation nonce-test (displaced 3 1 resp 2) x1-0 (0 1)
+        (enc "okay" y3 x1-0 (pubk a-0)) (enc x1-0 x3 (pubk a-0))
+        (enc x1-0 x1-0 (pubk a-0))) (strand-map 0 1 2))
+    (33
+      (operation nonce-test (added-strand resp 2) x1-0 (0 1)
+        (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
+        (enc x1-0 x1-0 (pubk a))) (strand-map 0 1 3)))
+  (unrealized (0 1))
+  (comment "5 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (displaced 2 1 resp 2) x1-0 (0 1)
+    (enc "okay" x3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
+    (enc x1 x1-0 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 25)
+  (parent 21)
+  (realized)
+  (shape)
+  (maps ((0 1) ((x1 x3) (x3 x3) (a a) (x1-0 x1) (x3-0 x3) (a-0 a))))
+  (origs (x3 (0 0))))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (0 1)
+    (enc "okay" x3 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
+  (label 26)
+  (parent 21)
+  (unrealized (0 1))
+  (comment "4 in cohort - 4 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 text) (a name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (0 1)
+    (enc "okay" x3 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1-0 x1 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1-0 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
+  (label 27)
+  (parent 21)
+  (seen 40)
+  (seen-ops
+    (40
+      (operation nonce-test (added-strand resp 2) x1 (0 1)
+        (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a))) (strand-map 0 1 3)))
+  (unrealized (0 1))
+  (comment "4 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a)))))
+  (label 28)
+  (parent 22)
+  (realized)
+  (shape)
+  (maps ((0 1) ((x1 x1) (x3 x3) (a a) (x1-0 x1) (x3-0 x3) (a-0 a))))
+  (origs (x3 (0 0))))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (1 0)
+    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a)))))
+  (label 29)
+  (parent 22)
+  (unrealized (1 0))
+  (comment "4 in cohort - 4 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 x3-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3-0) (y2 x3) (y3 x1-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3-0)
+  (operation nonce-test (added-strand resp 2) x3-0 (0 1)
+    (enc "okay" y3 x3-0 (pubk a)) (enc x1-0 x3-0 (pubk a))
+    (enc x3-0 x3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1-0 x3-0 (pubk a)) (enc x3-0 x3 (pubk a))))
+      (recv (enc "okay" x3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3-0 x3 (pubk a))) (send (enc "okay" y3 x3-0 (pubk a))))
+    ((recv (enc x3-0 x3 (pubk a)))
+      (send (enc "okay" x1-0 x3-0 (pubk a)))))
+  (label 30)
+  (parent 23)
+  (seen 42)
+  (seen-ops
+    (42
+      (operation nonce-test (displaced 4 1 resp 2) x3-0 (0 1)
+        (enc "okay" x1-0 x3-0 (pubk a-0))
+        (enc "okay" y3 x3-0 (pubk a-0)) (enc x1-0 x3-0 (pubk a-0))
+        (enc x3-0 x3 (pubk a-0))) (strand-map 0 1 2 3)))
+  (unrealized (0 1))
+  (comment "5 in cohort - 4 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (x1-0 y3) (x3-0 y3)) y3 (0 1)
+    (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
+    (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 31)
+  (parent 23)
+  (seen 43)
+  (seen-ops
+    (43
+      (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+        (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))) (strand-map 0 1 2)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (displaced 3 1 resp 2) x3-0 (0 1)
+    (enc "okay" y3 x3-0 (pubk a)) (enc x1-0 x3-0 (pubk a))
+    (enc x3-0 x3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a)))))
+  (label 32)
+  (parent 23)
+  (seen 29 41)
+  (seen-ops
+    (29
+      (operation nonce-test (displaced 3 2 resp 2) x3 (1 0)
+        (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a))) (strand-map 0 1 2))
+    (41
+      (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+        (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a))) (strand-map 0 1 2)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x1-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1-0)
+  (operation nonce-test (added-strand resp 2) x1-0 (0 1)
+    (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
+    (enc x1-0 x1-0 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))))
+      (recv (enc "okay" x1-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1-0 x3 (pubk a))) (send (enc "okay" y3 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3-0 x1-0 (pubk a)))))
+  (label 33)
+  (parent 23)
+  (seen 36 40 51)
+  (seen-ops
+    (36
+      (operation nonce-test (displaced 4 3 resp 2) x1-0 (0 1)
+        (enc "okay" y3 x1-0 (pubk a)) (enc "okay" y3-0 x1-0 (pubk a))
+        (enc x1-0 x3 (pubk a)) (enc x1-0 x1-0 (pubk a)))
+      (strand-map 0 1 2 2))
+    (40
+      (operation nonce-test (displaced 4 1 resp 2) x1-0 (0 1)
+        (enc "okay" y3 x1-0 (pubk a-0))
+        (enc "okay" y3-0 x1-0 (pubk a-0)) (enc x1-0 x3 (pubk a-0))
+        (enc x1-0 x1-0 (pubk a-0))) (strand-map 0 1 3 2))
+    (51
+      (operation nonce-test (added-strand resp 2) x1-0 (0 1)
+        (enc "okay" y3 x1-0 (pubk a)) (enc "okay" y3-0 x1-0 (pubk a))
+        (enc x1-0 x3 (pubk a)) (enc x1-0 x1-0 (pubk a)))
+      (strand-map 0 1 2 4)))
+  (unrealized (0 1))
+  (comment "6 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x1-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1-0)
+  (operation nonce-test (added-strand resp 2) x1-0 (0 1)
+    (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
+    (enc x1-0 x1-0 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))))
+      (recv (enc "okay" x1-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" x1-0 x1-0 (pubk a)))))
+  (label 34)
+  (parent 24)
+  (seen 57)
+  (seen-ops
+    (57
+      (operation nonce-test (added-strand resp 2) x1-0 (0 1)
+        (enc "okay" x1-0 x1-0 (pubk a)) (enc "okay" y3 x1-0 (pubk a))
+        (enc x1-0 x3 (pubk a)) (enc x1-0 x1-0 (pubk a)))
+      (strand-map 0 1 3 4)))
+  (unrealized (0 1))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (x1 y3) (x1-0 y3)) y3 (0 1)
+    (enc "okay" y3 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 35)
+  (parent 24)
+  (seen 37)
+  (seen-ops
+    (37
+      (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+        (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a))) (strand-map 0 1 2)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1-0)
+  (operation nonce-test (displaced 3 2 resp 2) x1-0 (0 1)
+    (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
+    (enc x1-0 x1-0 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
+      (recv (enc "okay" x1-0 x1 (pubk a))))
+    ((recv (enc x1 x1-0 (pubk a-0)))
+      (send (enc "okay" x1-0 x1 (pubk a-0))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3 x1-0 (pubk a)))))
+  (label 36)
+  (parent 24)
+  (seen 39)
+  (seen-ops
+    (39
+      (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (displaced 3 2 resp 2) x1 (0 1)
+    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 37)
+  (parent 26)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (0 1)
+    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 38)
+  (parent 26)
+  (seen 37)
+  (seen-ops
+    (37 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (displaced 3 2 resp 2) x1 (0 1)
+    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
+  (label 39)
+  (parent 26)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (0 1)
+    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 40)
+  (parent 26)
+  (seen 39)
+  (seen-ops
+    (39
+      (operation nonce-test (displaced 4 2 resp 2) x1 (0 1)
+        (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+        (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 2)))
+  (unrealized (0 1))
+  (comment "5 in cohort - 4 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (displaced 3 1 resp 2) x1-0 (0 1)
+    (enc "okay" x3 x1-0 (pubk a)) (enc "okay" y3 x1-0 (pubk a))
+    (enc x1-0 x3 (pubk a)) (enc x1 x1-0 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a)))))
+  (label 41)
+  (parent 27)
+  (seen 25)
+  (seen-ops
+    (25 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 text) (a name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (0 1)
+    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1-0 x1 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1-0 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1-0 x1 (pubk a)))))
+  (label 42)
+  (parent 27)
+  (unrealized (0 1))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (displaced 3 2 resp 2) x1-0 (0 1)
+    (enc "okay" x3 x1-0 (pubk a)) (enc "okay" y3 x1-0 (pubk a))
+    (enc x1-0 x3 (pubk a)) (enc x1 x1-0 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 43)
+  (parent 27)
+  (realized)
+  (shape)
+  (maps ((0 1) ((x1 y3) (x3 x3) (a a) (x1-0 x1) (x3-0 y3) (a-0 a))))
+  (origs (y3 (0 0))))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a)))))
+  (label 44)
+  (parent 29)
+  (seen 28)
+  (seen-ops
+    (28 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a)))))
+  (label 45)
+  (parent 29)
+  (seen 25)
+  (seen-ops
+    (25 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (1 0)
+    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a)))))
+  (label 46)
+  (parent 29)
+  (unrealized (1 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (1 0)
+    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 47)
+  (parent 29)
+  (seen 78)
+  (seen-ops
+    (78
+      (operation nonce-test (added-strand resp 2) x3 (1 0)
+        (enc "okay" x3 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
+        (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+      (strand-map 0 1 2 4)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (x1-0 y3) (x3-0 y3)) y3 (0 1)
+    (enc "okay" x1 y3 (pubk a)) (enc "okay" y3 y3 (pubk a))
+    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 48)
+  (parent 30)
+  (seen 54 74)
+  (seen-ops
+    (54
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a))) (strand-map 0 1 2 2))
+    (74
+      (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+        (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+      (strand-map 0 1 2 3)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x1-0 x1) (x3-0 x1)) x1 (0 1)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 49)
+  (parent 30)
+  (seen 75)
+  (seen-ops
+    (75
+      (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 4 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (displaced 4 1 resp 2) x3-0 (0 1)
+    (enc "okay" x1-0 x3-0 (pubk a)) (enc "okay" y3 x3-0 (pubk a))
+    (enc x1-0 x3-0 (pubk a)) (enc x3-0 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a)))))
+  (label 50)
+  (parent 30)
+  (seen 73)
+  (seen-ops
+    (73
+      (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+        (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+      (strand-map 0 1 2 3)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 4 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x1-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x3) (y3 x1-0) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1-0)
+  (operation nonce-test (added-strand resp 2) x1-0 (0 1)
+    (enc "okay" x1-0 x1-0 (pubk a)) (enc "okay" y3 x1-0 (pubk a))
+    (enc x1-0 x3 (pubk a)) (enc x1-0 x1-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))))
+      (recv (enc "okay" x1-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1-0 x3 (pubk a))) (send (enc "okay" y3 x1-0 (pubk a))))
+    ((recv (enc x1-0 x3 (pubk a)))
+      (send (enc "okay" x1-0 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3-0 x1-0 (pubk a)))))
+  (label 51)
+  (parent 30)
+  (seen 61)
+  (seen-ops
+    (61
+      (operation nonce-test (displaced 5 4 resp 2) x1-0 (0 1)
+        (enc "okay" x1-0 x1-0 (pubk a)) (enc "okay" y3 x1-0 (pubk a))
+        (enc "okay" y3-0 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
+        (enc x1-0 x1-0 (pubk a))) (strand-map 0 1 2 3 2)))
+  (unrealized (0 1))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (displaced 3 2 resp 2) y3 (1 0)
+    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 52)
+  (parent 31)
+  (unrealized (1 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 53)
+  (parent 31)
+  (seen 94)
+  (seen-ops
+    (94
+      (operation nonce-test (displaced 4 2 resp 2) y3 (1 0)
+        (enc "okay" y3-0 y3 (pubk a)) (enc x1 y3 (pubk a))
+        (enc y3 x3 (pubk a))) (strand-map 0 1 2 3)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
+  (label 54)
+  (parent 31)
+  (seen 95 98)
+  (seen-ops
+    (95
+      (operation nonce-test (displaced 4 2 resp 2) x1 (1 0)
+        (enc "okay" y3 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3))
+    (98
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" y3 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 4)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a)))))
+  (label 55)
+  (parent 32)
+  (seen 28)
+  (seen-ops
+    (28 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (1 0)
+    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a)))))
+  (label 56)
+  (parent 32)
+  (seen 29)
+  (seen-ops
+    (29
+      (operation nonce-test (displaced 4 2 resp 2) x3 (1 0)
+        (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+        (enc x1-0 x3 (pubk a))) (strand-map 0 1 2 2)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 4 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x1-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1-0)
+  (operation nonce-test (added-strand resp 2) x1-0 (0 1)
+    (enc "okay" y3 x1-0 (pubk a)) (enc "okay" y3-0 x1-0 (pubk a))
+    (enc x1-0 x3 (pubk a)) (enc x1-0 x1-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))))
+      (recv (enc "okay" x1-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1-0 x3 (pubk a))) (send (enc "okay" y3 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3-0 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" x1-0 x1-0 (pubk a)))))
+  (label 57)
+  (parent 33)
+  (seen 61)
+  (seen-ops
+    (61
+      (operation nonce-test (displaced 5 4 resp 2) x1-0 (0 1)
+        (enc "okay" x1-0 x1-0 (pubk a)) (enc "okay" y3 x1-0 (pubk a))
+        (enc "okay" y3-0 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
+        (enc x1-0 x1-0 (pubk a))) (strand-map 0 1 2 2 3)))
+  (unrealized (0 1))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (contracted (x1 y3-0) (x1-0 y3-0)) y3-0 (0 1)
+    (enc "okay" y3 y3-0 (pubk a)) (enc "okay" y3-0 y3-0 (pubk a))
+    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a-0)))
+      (send (enc "okay" x3 y3-0 (pubk a-0))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a)))))
+  (label 58)
+  (parent 33)
+  (seen 64 71)
+  (seen-ops
+    (64
+      (operation nonce-test (displaced 4 2 resp 2) y3-0 (1 0)
+        (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+      (strand-map 0 1 3 2))
+    (71
+      (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
+        (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+      (strand-map 0 1 3 2)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (x1 y3) (x1-0 y3)) y3 (0 1)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 59)
+  (parent 33)
+  (seen 54 72)
+  (seen-ops
+    (54
+      (operation nonce-test (displaced 4 3 resp 2) y3 (1 0)
+        (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a))) (strand-map 0 1 2 3))
+    (72
+      (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+        (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+      (strand-map 0 1 3 2)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x1-0 x1)) x1 (0 1)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 60)
+  (parent 34)
+  (seen 38 63)
+  (seen-ops
+    (38
+      (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a))) (strand-map 0 1 2 3))
+    (63
+      (operation nonce-test (displaced 4 2 resp 2) x1 (1 0)
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 3 2)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1-0)
+  (operation nonce-test (displaced 4 3 resp 2) x1-0 (0 1)
+    (enc "okay" x1-0 x1-0 (pubk a)) (enc "okay" y3 x1-0 (pubk a))
+    (enc x1-0 x3 (pubk a)) (enc x1-0 x1-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
+      (recv (enc "okay" x1-0 x1 (pubk a))))
+    ((recv (enc x1 x1-0 (pubk a-0)))
+      (send (enc "okay" x1-0 x1 (pubk a-0))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" x1-0 x1-0 (pubk a)))))
+  (label 61)
+  (parent 34)
+  (unrealized (1 0))
+  (comment "4 in cohort - 4 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (displaced 3 2 resp 2) y3 (1 0)
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 62)
+  (parent 35)
+  (unrealized (1 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 63)
+  (parent 35)
+  (seen 120)
+  (seen-ops
+    (120
+      (operation nonce-test (displaced 4 2 resp 2) y3 (1 0)
+        (enc "okay" y3-0 y3 (pubk a)) (enc y3 x3 (pubk a))
+        (enc y3 y3 (pubk a))) (strand-map 0 1 2 3)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 64)
+  (parent 35)
+  (seen 121 124)
+  (seen-ops
+    (121
+      (operation nonce-test (displaced 4 2 resp 2) y3 (1 0)
+        (enc "okay" y3-0 y3 (pubk a)) (enc y3 x3 (pubk a))
+        (enc y3 y3 (pubk a))) (strand-map 0 1 2 3))
+    (124
+      (operation nonce-test (added-strand resp 2) y3 (1 0)
+        (enc "okay" y3-0 y3 (pubk a)) (enc y3 x3 (pubk a))
+        (enc y3 y3 (pubk a))) (strand-map 0 1 2 4)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1-0)
+  (operation nonce-test (displaced 3 2 resp 2) x1-0 (1 0)
+    (enc x1-0 x1-0 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
+      (recv (enc "okay" x1-0 x1 (pubk a))))
+    ((recv (enc x1 x1-0 (pubk a-0)))
+      (send (enc "okay" x1-0 x1 (pubk a-0))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3 x1-0 (pubk a)))))
+  (label 65)
+  (parent 36)
+  (unrealized (1 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x1-0 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1-0)
+  (operation nonce-test (added-strand resp 2) x1-0 (1 0)
+    (enc x1-0 x1-0 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
+      (recv (enc "okay" x1-0 x1 (pubk a))))
+    ((recv (enc x1 x1-0 (pubk a-0)))
+      (send (enc "okay" x1-0 x1 (pubk a-0))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3-0 x1-0 (pubk a)))))
+  (label 66)
+  (parent 36)
+  (seen 65)
+  (seen-ops
+    (65
+      (operation nonce-test (displaced 4 2 resp 2) x1-0 (1 0)
+        (enc "okay" y3-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a)))
+      (strand-map 0 1 2 2)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3-0) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3-0) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation generalization separated y3-0)
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc y3 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 67)
+  (parent 37)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 68)
+  (parent 39)
+  (seen 25)
+  (seen-ops
+    (25 (operation generalization separated x1-0) (strand-map 0 1)))
+  (realized)
+  (origs (x1 (0 0)))
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (0 1)
+    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 69)
+  (parent 40)
+  (seen 75)
+  (seen-ops
+    (75 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (0 1)
+    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 70)
+  (parent 40)
+  (seen 71)
+  (seen-ops
+    (71 (operation generalization deleted (2 0)) (strand-map 0 1 4 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (displaced 4 2 resp 2) x1 (0 1)
+    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 71)
+  (parent 40)
+  (seen 37)
+  (seen-ops
+    (37 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (displaced 4 3 resp 2) x1 (0 1)
+    (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a)))))
+  (label 72)
+  (parent 40)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (displaced 4 1 resp 2) x1-0 (0 1)
+    (enc "okay" x3 x1-0 (pubk a)) (enc "okay" x1 x1-0 (pubk a))
+    (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
+    (enc x1 x1-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 73)
+  (parent 42)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (displaced 4 2 resp 2) x1-0 (0 1)
+    (enc "okay" x3 x1-0 (pubk a)) (enc "okay" x1 x1-0 (pubk a))
+    (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
+    (enc x1 x1-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 74)
+  (parent 42)
+  (seen 43)
+  (seen-ops
+    (43 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (displaced 4 3 resp 2) x1-0 (0 1)
+    (enc "okay" x3 x1-0 (pubk a)) (enc "okay" x1 x1-0 (pubk a))
+    (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
+    (enc x1 x1-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 75)
+  (parent 42)
+  (seen 132)
+  (seen-ops
+    (132 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc "okay" x1 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 76)
+  (parent 46)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc "okay" x1 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 77)
+  (parent 46)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (1 0)
+    (enc "okay" x1-0 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 78)
+  (parent 46)
+  (unrealized (1 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc "okay" x3 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 79)
+  (parent 47)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc "okay" x3 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 80)
+  (parent 47)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (displaced 4 2 resp 2) y3 (1 0)
+    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 81)
+  (parent 48)
+  (unrealized (1 0))
+  (comment "4 in cohort - 4 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (displaced 4 3 resp 2) y3 (1 0)
+    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 82)
+  (parent 48)
+  (seen 96 140 143)
+  (seen-ops
+    (96
+      (operation nonce-test (added-strand resp 2) y3 (1 0)
+        (enc "okay" x1 y3 (pubk a)) (enc x1 y3 (pubk a))
+        (enc y3 x3 (pubk a))) (strand-map 0 1 2 4))
+    (140
+      (operation nonce-test (displaced 4 2 resp 2) y3 (1 0)
+        (enc "okay" x1 y3 (pubk a)) (enc x1 y3 (pubk a))
+        (enc y3 x3 (pubk a))) (strand-map 0 1 2 3))
+    (143
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 3 2)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 83)
+  (parent 48)
+  (seen 96 98 142)
+  (seen-ops
+    (96
+      (operation nonce-test (displaced 5 3 resp 2) y3 (1 0)
+        (enc "okay" y3-0 y3 (pubk a)) (enc x1 y3 (pubk a))
+        (enc y3 x3 (pubk a))) (strand-map 0 1 2 4 3))
+    (98
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" y3 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 2 3))
+    (142
+      (operation nonce-test (displaced 5 2 resp 2) y3 (1 0)
+        (enc "okay" y3-0 y3 (pubk a)) (enc x1 y3 (pubk a))
+        (enc y3 x3 (pubk a))) (strand-map 0 1 2 3 4)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 84)
+  (parent 49)
+  (seen 98)
+  (seen-ops
+    (98
+      (operation nonce-test (displaced 5 2 resp 2) x1 (1 0)
+        (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 3 2 4)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 4 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (displaced 4 2 resp 2) x1 (1 0)
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 85)
+  (parent 49)
+  (seen 98)
+  (seen-ops
+    (98
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" y3 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 3 2)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (displaced 4 3 resp 2) x1 (1 0)
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 86)
+  (parent 49)
+  (seen 149 153)
+  (seen-ops
+    (149
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3))
+    (153
+      (operation nonce-test (displaced 4 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 87)
+  (parent 49)
+  (seen 85 150 155)
+  (seen-ops
+    (85
+      (operation nonce-test (displaced 5 2 resp 2) x1 (1 0)
+        (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 2))
+    (150
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 5))
+    (155
+      (operation nonce-test (displaced 5 3 resp 2) x1 (1 0)
+        (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 4)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 88)
+  (parent 50)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (displaced 4 2 resp 2) x3 (1 0)
+    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a)))))
+  (label 89)
+  (parent 50)
+  (seen 46)
+  (seen-ops
+    (46
+      (operation nonce-test (displaced 4 3 resp 2) x3 (1 0)
+        (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
+        (enc x1-0 x3 (pubk a))) (strand-map 0 1 2 3)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 4 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (displaced 4 3 resp 2) x3 (1 0)
+    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a)))))
+  (label 90)
+  (parent 50)
+  (seen 46 103)
+  (seen-ops
+    (46
+      (operation nonce-test (displaced 4 2 resp 2) x3 (1 0)
+        (enc "okay" x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+        (enc x1-0 x3 (pubk a))) (strand-map 0 1 2 3))
+    (103
+      (operation nonce-test (added-strand resp 2) x3 (1 0)
+        (enc "okay" x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+        (enc x1-0 x3 (pubk a))) (strand-map 0 1 2 4)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (1 0)
+    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a)))))
+  (label 91)
+  (parent 50)
+  (seen 89 103)
+  (seen-ops
+    (89
+      (operation nonce-test (displaced 5 2 resp 2) x3 (1 0)
+        (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+        (enc x1-0 x3 (pubk a))) (strand-map 0 1 2 3 2))
+    (103
+      (operation nonce-test (displaced 5 3 resp 2) x3 (1 0)
+        (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+        (enc x1-0 x3 (pubk a))) (strand-map 0 1 2 4 3)))
+  (unrealized (1 0))
+  (comment "6 in cohort - 4 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x1-0 x1)) x1 (0 1)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 92)
+  (parent 51)
+  (seen 69 84 111)
+  (seen-ops
+    (69
+      (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 3 4 2))
+    (84
+      (operation nonce-test (displaced 5 4 resp 2) x1 (1 0)
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4))
+    (111
+      (operation nonce-test (displaced 5 2 resp 2) x1 (1 0)
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 4 2 3)))
+  (unrealized (1 0))
+  (comment "6 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
+    (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 93)
+  (parent 52)
+  (seen 43)
+  (seen-ops
+    (43 (operation generalization weakened ((2 1) (1 0)))
+      (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
+    (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 94)
+  (parent 52)
+  (unrealized (1 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
+  (label 95)
+  (parent 52)
+  (seen 174)
+  (seen-ops
+    (174
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 4)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3-0 y3 (pubk a)) (enc x1 y3 (pubk a))
+    (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 96)
+  (parent 53)
+  (seen 173)
+  (seen-ops
+    (173
+      (operation nonce-test (displaced 5 2 resp 2) y3 (1 0)
+        (enc "okay" x1 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+        (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+      (strand-map 0 1 2 3 4)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3-0 y3 (pubk a)) (enc x1 y3 (pubk a))
+    (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 97)
+  (parent 53)
+  (seen 43)
+  (seen-ops
+    (43 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 98)
+  (parent 53)
+  (seen 174 177)
+  (seen-ops
+    (174
+      (operation nonce-test (displaced 5 2 resp 2) x1 (1 0)
+        (enc "okay" y3 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4))
+    (177
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" y3 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 5)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 99)
+  (parent 54)
+  (seen 178)
+  (seen-ops
+    (178
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 4 5)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" y3 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
+  (label 100)
+  (parent 54)
+  (seen 132)
+  (seen-ops
+    (132 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a)))))
+  (label 101)
+  (parent 56)
+  (seen 44)
+  (seen-ops
+    (44 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a)))))
+  (label 102)
+  (parent 56)
+  (seen 45)
+  (seen-ops
+    (45 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (1 0)
+    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a)))))
+  (label 103)
+  (parent 56)
+  (seen 46)
+  (seen-ops
+    (46
+      (operation nonce-test (displaced 5 2 resp 2) x3 (1 0)
+        (enc "okay" x1-0 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+        (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+      (strand-map 0 1 2 2 3)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (1 0)
+    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 104)
+  (parent 56)
+  (seen 47 183)
+  (seen-ops
+    (47
+      (operation nonce-test (displaced 5 2 resp 2) x3 (1 0)
+        (enc "okay" x3 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+        (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+      (strand-map 0 1 2 2 3))
+    (183
+      (operation nonce-test (added-strand resp 2) x3 (1 0)
+        (enc "okay" x3 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+        (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+      (strand-map 0 1 2 3 5)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x1-0 x1)) x1 (0 1)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 105)
+  (parent 57)
+  (seen 70 107 114)
+  (seen-ops
+    (70
+      (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 3 2 4))
+    (107
+      (operation nonce-test (displaced 5 3 resp 2) x1 (1 0)
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 4 3))
+    (114
+      (operation nonce-test (displaced 5 2 resp 2) x1 (1 0)
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 4 2 3)))
+  (unrealized (1 0))
+  (comment "6 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (displaced 4 3 resp 2) y3-0 (1 0)
+    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a-0)))
+      (send (enc "okay" x3 y3-0 (pubk a-0))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a)))))
+  (label 106)
+  (parent 58)
+  (seen 121)
+  (seen-ops
+    (121
+      (operation nonce-test (displaced 4 2 resp 2) y3-0 (1 0)
+        (enc "okay" y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+        (enc y3-0 y3-0 (pubk a))) (strand-map 0 1 3 2)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
+    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a-0)))
+      (send (enc "okay" x3 y3-0 (pubk a-0))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a)))))
+  (label 107)
+  (parent 58)
+  (seen 124 189)
+  (seen-ops
+    (124
+      (operation nonce-test (displaced 5 2 resp 2) y3-0 (1 0)
+        (enc "okay" y3-1 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+        (enc y3-0 y3-0 (pubk a))) (strand-map 0 1 4 2 3))
+    (189
+      (operation nonce-test (displaced 5 3 resp 2) y3-0 (1 0)
+        (enc "okay" y3-1 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+        (enc y3-0 y3-0 (pubk a))) (strand-map 0 1 2 3 4)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
+    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a-0)))
+      (send (enc "okay" x3 y3-0 (pubk a-0))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a)))))
+  (label 108)
+  (parent 58)
+  (seen 64 191 194)
+  (seen-ops
+    (64
+      (operation nonce-test (displaced 5 2 resp 2) y3-0 (1 0)
+        (enc "okay" y3-1 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+        (enc y3-0 y3-0 (pubk a))) (strand-map 0 1 3 2 3))
+    (191
+      (operation nonce-test (displaced 5 3 resp 2) y3-0 (1 0)
+        (enc "okay" y3-1 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+        (enc y3-0 y3-0 (pubk a))) (strand-map 0 1 2 3 4))
+    (194
+      (operation nonce-test (added-strand resp 2) y3-0 (1 0)
+        (enc "okay" y3-1 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+        (enc y3-0 y3-0 (pubk a))) (strand-map 0 1 2 3 5)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
+  (label 109)
+  (parent 59)
+  (seen 54)
+  (seen-ops
+    (54
+      (operation nonce-test (displaced 5 3 resp 2) y3 (1 0)
+        (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
+        (enc y3 y3 (pubk a))) (strand-map 0 1 2 3 3)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 4 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (displaced 4 2 resp 2) y3 (1 0)
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 110)
+  (parent 59)
+  (seen 95 199)
+  (seen-ops
+    (95
+      (operation nonce-test (displaced 4 3 resp 2) y3 (1 0)
+        (enc "okay" y3 y3 (pubk a)) (enc y3 x3 (pubk a))
+        (enc y3 y3 (pubk a))) (strand-map 0 1 2 3))
+    (199
+      (operation nonce-test (added-strand resp 2) y3 (1 0)
+        (enc "okay" y3 y3 (pubk a)) (enc y3 x3 (pubk a))
+        (enc y3 y3 (pubk a))) (strand-map 0 1 2 3)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
+  (label 111)
+  (parent 59)
+  (seen 98 200 202)
+  (seen-ops
+    (98
+      (operation nonce-test (displaced 5 3 resp 2) y3 (1 0)
+        (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
+        (enc y3 y3 (pubk a))) (strand-map 0 1 2 4 3))
+    (200
+      (operation nonce-test (added-strand resp 2) y3 (1 0)
+        (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
+        (enc y3 y3 (pubk a))) (strand-map 0 1 2 3 5))
+    (202
+      (operation nonce-test (displaced 5 2 resp 2) y3 (1 0)
+        (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
+        (enc y3 y3 (pubk a))) (strand-map 0 1 2 3 4)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (displaced 4 3 resp 2) x1 (1 0)
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 112)
+  (parent 60)
+  (seen 120)
+  (seen-ops
+    (120
+      (operation nonce-test (displaced 4 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 3 2)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 113)
+  (parent 60)
+  (seen 63 206)
+  (seen-ops
+    (63
+      (operation nonce-test (displaced 5 2 resp 2) x1 (1 0)
+        (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 3 2 3))
+    (206
+      (operation nonce-test (displaced 5 3 resp 2) x1 (1 0)
+        (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 4)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 114)
+  (parent 60)
+  (seen 124 207 210)
+  (seen-ops
+    (124
+      (operation nonce-test (displaced 5 2 resp 2) x1 (1 0)
+        (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 3 2 4))
+    (207
+      (operation nonce-test (displaced 5 3 resp 2) x1 (1 0)
+        (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 4))
+    (210
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 5)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1-0)
+  (operation nonce-test (displaced 4 2 resp 2) x1-0 (1 0)
+    (enc x1-0 x1-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
+      (recv (enc "okay" x1-0 x1 (pubk a))))
+    ((recv (enc x1 x1-0 (pubk a-0)))
+      (send (enc "okay" x1-0 x1 (pubk a-0))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" x1-0 x1-0 (pubk a)))))
+  (label 115)
+  (parent 61)
+  (seen 128)
+  (seen-ops
+    (128
+      (operation nonce-test (displaced 4 3 resp 2) x1-0 (1 0)
+        (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a)))
+      (strand-map 0 1 2 3)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 116)
+  (parent 61)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1-0)
+  (operation nonce-test (displaced 4 3 resp 2) x1-0 (1 0)
+    (enc x1-0 x1-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
+      (recv (enc "okay" x1-0 x1 (pubk a))))
+    ((recv (enc x1 x1-0 (pubk a-0)))
+      (send (enc "okay" x1-0 x1 (pubk a-0))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" x1-0 x1-0 (pubk a)))))
+  (label 117)
+  (parent 61)
+  (seen 128 130)
+  (seen-ops
+    (128
+      (operation nonce-test (displaced 4 2 resp 2) x1-0 (1 0)
+        (enc "okay" x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a)))
+      (strand-map 0 1 2 3))
+    (130
+      (operation nonce-test (added-strand resp 2) x1-0 (1 0)
+        (enc "okay" x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a)))
+      (strand-map 0 1 2 4)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x1-0 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1-0)
+  (operation nonce-test (added-strand resp 2) x1-0 (1 0)
+    (enc x1-0 x1-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
+      (recv (enc "okay" x1-0 x1 (pubk a))))
+    ((recv (enc x1 x1-0 (pubk a-0)))
+      (send (enc "okay" x1-0 x1 (pubk a-0))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" x1-0 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3-0 x1-0 (pubk a)))))
+  (label 118)
+  (parent 61)
+  (seen 115 130)
+  (seen-ops
+    (115
+      (operation nonce-test (displaced 5 2 resp 2) x1-0 (1 0)
+        (enc "okay" y3-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a)))
+      (strand-map 0 1 2 3 2))
+    (130
+      (operation nonce-test (displaced 5 3 resp 2) x1-0 (1 0)
+        (enc "okay" y3-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a)))
+      (strand-map 0 1 2 4 3)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 119)
+  (parent 62)
+  (seen 37)
+  (seen-ops
+    (37 (operation generalization weakened ((2 1) (1 0)))
+      (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 120)
+  (parent 62)
+  (unrealized (1 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 121)
+  (parent 62)
+  (seen 220)
+  (seen-ops
+    (220
+      (operation nonce-test (added-strand resp 2) y3 (1 0)
+        (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+        (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+      (strand-map 0 1 2 4)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3-0 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 122)
+  (parent 63)
+  (unrealized (1 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3-0 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 123)
+  (parent 63)
+  (seen 37)
+  (seen-ops
+    (37 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3-0 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
+  (label 124)
+  (parent 63)
+  (seen 220 223)
+  (seen-ops
+    (220
+      (operation nonce-test (displaced 5 2 resp 2) y3 (1 0)
+        (enc "okay" y3-0 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+        (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+      (strand-map 0 1 2 3 4))
+    (223
+      (operation nonce-test (added-strand resp 2) y3 (1 0)
+        (enc "okay" y3-0 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+        (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+      (strand-map 0 1 2 3 5)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3-0 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 125)
+  (parent 64)
+  (seen 225)
+  (seen-ops
+    (225
+      (operation nonce-test (added-strand resp 2) y3 (1 0)
+        (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+        (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+      (strand-map 0 1 2 4 5)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3-0 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 126)
+  (parent 64)
+  (seen 37)
+  (seen-ops
+    (37 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
+    (enc "okay" y3 x1 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
+  (label 127)
+  (parent 65)
+  (seen 68)
+  (seen-ops
+    (68 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1-0)
+  (operation nonce-test (added-strand resp 2) x1-0 (1 0)
+    (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a)))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
+      (recv (enc "okay" x1-0 x1 (pubk a))))
+    ((recv (enc x1 x1-0 (pubk a-0)))
+      (send (enc "okay" x1-0 x1 (pubk a-0))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" x1-0 x1-0 (pubk a)))))
+  (label 128)
+  (parent 65)
+  (unrealized (1 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 129)
+  (parent 66)
+  (seen 127)
+  (seen-ops
+    (127 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x1-0 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1-0)
+  (operation nonce-test (added-strand resp 2) x1-0 (1 0)
+    (enc "okay" y3-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
+      (recv (enc "okay" x1-0 x1 (pubk a))))
+    ((recv (enc x1 x1-0 (pubk a-0)))
+      (send (enc "okay" x1-0 x1 (pubk a-0))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3-0 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" x1-0 x1-0 (pubk a)))))
+  (label 130)
+  (parent 66)
+  (seen 128)
+  (seen-ops
+    (128
+      (operation nonce-test (displaced 5 2 resp 2) x1-0 (1 0)
+        (enc "okay" x1-0 x1-0 (pubk a)) (enc "okay" y3-0 x1-0 (pubk a))
+        (enc x1-0 x1-0 (pubk a))) (strand-map 0 1 2 2 3)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3-0) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 y3-0) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a) (privk a-0))
+  (uniq-orig y3-0)
+  (operation generalization separated a-0)
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc y3 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 131)
+  (parent 67)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 132)
+  (parent 72)
+  (seen 43)
+  (seen-ops
+    (43 (operation generalization separated y3-0) (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 133)
+  (parent 73)
+  (seen 25)
+  (seen-ops
+    (25 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 134)
+  (parent 76)
+  (seen 25)
+  (seen-ops
+    (25 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 135)
+  (parent 77)
+  (seen 28)
+  (seen-ops
+    (28 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc "okay" x3 x3 (pubk a)) (enc "okay" x1 x3 (pubk a))
+    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 136)
+  (parent 78)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc "okay" x3 x3 (pubk a)) (enc "okay" x1 x3 (pubk a))
+    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 137)
+  (parent 78)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 138)
+  (parent 79)
+  (seen 25)
+  (seen-ops
+    (25 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 139)
+  (parent 80)
+  (seen 28)
+  (seen-ops
+    (28 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (displaced 4 3 resp 2) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
+    (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 140)
+  (parent 81)
+  (seen 95 173)
+  (seen-ops
+    (95
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 2))
+    (173
+      (operation nonce-test (added-strand resp 2) y3 (1 0)
+        (enc "okay" x1 y3 (pubk a)) (enc "okay" y3 y3 (pubk a))
+        (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+      (strand-map 0 1 2 4)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
+    (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 141)
+  (parent 81)
+  (seen 93)
+  (seen-ops
+    (93 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
+    (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 142)
+  (parent 81)
+  (seen 173 177)
+  (seen-ops
+    (173
+      (operation nonce-test (displaced 5 3 resp 2) y3 (1 0)
+        (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+        (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+      (strand-map 0 1 2 4 3))
+    (177
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 4 2 3)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
+  (label 143)
+  (parent 81)
+  (seen 177)
+  (seen-ops
+    (177
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 4 2 5)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" x1 y3 (pubk a)) (enc x1 y3 (pubk a))
+    (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 144)
+  (parent 82)
+  (seen 43)
+  (seen-ops
+    (43 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3-0 y3 (pubk a)) (enc x1 y3 (pubk a))
+    (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 145)
+  (parent 83)
+  (seen 177 233)
+  (seen-ops
+    (177
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 2 3 4))
+    (233
+      (operation nonce-test (displaced 6 2 resp 2) y3 (1 0)
+        (enc "okay" x1 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+        (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+      (strand-map 0 1 2 3 4 5)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3-0 y3 (pubk a)) (enc x1 y3 (pubk a))
+    (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 146)
+  (parent 83)
+  (seen 97)
+  (seen-ops
+    (97 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 147)
+  (parent 84)
+  (seen 178)
+  (seen-ops
+    (178
+      (operation nonce-test (displaced 6 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 3 2 4 5)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 148)
+  (parent 84)
+  (seen 100)
+  (seen-ops
+    (100 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (displaced 5 3 resp 2) x1 (1 0)
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 149)
+  (parent 84)
+  (seen 174)
+  (seen-ops
+    (174
+      (operation nonce-test (displaced 5 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 3 2 4)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 150)
+  (parent 84)
+  (seen 98 238 240)
+  (seen-ops
+    (98
+      (operation nonce-test (displaced 6 2 resp 2) x1 (1 0)
+        (enc "okay" y3-0 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 3 2 4 3))
+    (238
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" y3-0 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4 6))
+    (240
+      (operation nonce-test (displaced 6 3 resp 2) x1 (1 0)
+        (enc "okay" y3-0 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4 5)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 151)
+  (parent 85)
+  (seen 177)
+  (seen-ops
+    (177
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 3 2 4)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" y3 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 152)
+  (parent 85)
+  (seen 132)
+  (seen-ops
+    (132 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (displaced 4 3 resp 2) x1 (1 0)
+    (enc "okay" y3 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 153)
+  (parent 85)
+  (seen 174)
+  (seen-ops
+    (174
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 3 2)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 154)
+  (parent 86)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 155)
+  (parent 86)
+  (seen 153 240)
+  (seen-ops
+    (153
+      (operation nonce-test (displaced 5 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 2))
+    (240
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 5)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 156)
+  (parent 87)
+  (seen 151 242)
+  (seen-ops
+    (151
+      (operation nonce-test (displaced 6 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 2 4))
+    (242
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 5 6)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 157)
+  (parent 87)
+  (seen 152)
+  (seen-ops
+    (152 (operation generalization deleted (2 0)) (strand-map 0 1 4 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 158)
+  (parent 88)
+  (seen 28)
+  (seen-ops
+    (28 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 159)
+  (parent 89)
+  (seen 158)
+  (seen-ops
+    (158 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 160)
+  (parent 89)
+  (seen 133)
+  (seen-ops
+    (133 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (1 0)
+    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a)))))
+  (label 161)
+  (parent 89)
+  (unrealized (1 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (1 0)
+    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 162)
+  (parent 89)
+  (seen 78 250)
+  (seen-ops
+    (78
+      (operation nonce-test (displaced 5 3 resp 2) x3 (1 0)
+        (enc "okay" x3 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
+        (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+      (strand-map 0 1 2 3 4))
+    (250
+      (operation nonce-test (added-strand resp 2) x3 (1 0)
+        (enc "okay" x3 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
+        (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+      (strand-map 0 1 2 3 5)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc "okay" x1 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 163)
+  (parent 90)
+  (seen 135)
+  (seen-ops
+    (135 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc "okay" x1 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 164)
+  (parent 90)
+  (seen 134)
+  (seen-ops
+    (134 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (1 0)
+    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a)))))
+  (label 165)
+  (parent 91)
+  (seen 161)
+  (seen-ops
+    (161
+      (operation nonce-test (displaced 6 2 resp 2) x3 (1 0)
+        (enc "okay" x1-0 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+        (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+      (strand-map 0 1 2 3 2 4)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a)))))
+  (label 166)
+  (parent 91)
+  (seen 159)
+  (seen-ops
+    (159 (operation generalization deleted (2 0)) (strand-map 0 1 4 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a)))))
+  (label 167)
+  (parent 91)
+  (seen 160)
+  (seen-ops
+    (160 (operation generalization deleted (2 0)) (strand-map 0 1 4 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (1 0)
+    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 168)
+  (parent 91)
+  (seen 162 183 255)
+  (seen-ops
+    (162
+      (operation nonce-test (displaced 6 2 resp 2) x3 (1 0)
+        (enc "okay" x3 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+        (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+      (strand-map 0 1 2 3 2 4))
+    (183
+      (operation nonce-test (displaced 6 3 resp 2) x3 (1 0)
+        (enc "okay" x3 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+        (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+      (strand-map 0 1 2 4 3 5))
+    (255
+      (operation nonce-test (added-strand resp 2) x3 (1 0)
+        (enc "okay" x3 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+        (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+      (strand-map 0 1 2 3 4 6)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 169)
+  (parent 92)
+  (seen 84 200)
+  (seen-ops
+    (84
+      (operation nonce-test (displaced 6 4 resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 4 4))
+    (200
+      (operation nonce-test (displaced 6 2 resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 5 2 3 4)))
+  (unrealized (1 0))
+  (comment "6 in cohort - 4 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (displaced 5 3 resp 2) x1 (1 0)
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 170)
+  (parent 92)
+  (seen 149 202 260)
+  (seen-ops
+    (149
+      (operation nonce-test (displaced 5 4 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 4))
+    (202
+      (operation nonce-test (displaced 5 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 4 2 3))
+    (260
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 4)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 171)
+  (parent 92)
+  (seen 111 150 261 263)
+  (seen-ops
+    (111
+      (operation nonce-test (displaced 6 2 resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 4 2 3 4))
+    (150
+      (operation nonce-test (displaced 6 4 resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 4 5))
+    (261
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 4 6))
+    (263
+      (operation nonce-test (displaced 6 3 resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 4 5)))
+  (unrealized (1 0))
+  (comment "6 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 172)
+  (parent 94)
+  (seen 93)
+  (seen-ops
+    (93 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 173)
+  (parent 94)
+  (seen 174)
+  (seen-ops
+    (174
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 2)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 174)
+  (parent 94)
+  (unrealized (1 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
+  (label 175)
+  (parent 95)
+  (seen 245)
+  (seen-ops
+    (245 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" x1 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 176)
+  (parent 96)
+  (seen 144)
+  (seen-ops
+    (144 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 177)
+  (parent 96)
+  (unrealized (1 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 178)
+  (parent 98)
+  (unrealized (1 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" y3 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 179)
+  (parent 98)
+  (seen 100)
+  (seen-ops
+    (100 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 180)
+  (parent 99)
+  (seen 219)
+  (seen-ops
+    (219 (operation generalization deleted (2 0)) (strand-map 0 1 4 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc "okay" x1 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 181)
+  (parent 103)
+  (seen 77)
+  (seen-ops
+    (77 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc "okay" x1 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 182)
+  (parent 103)
+  (seen 76)
+  (seen-ops
+    (76 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (1 0)
+    (enc "okay" x1-0 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 183)
+  (parent 103)
+  (seen 78)
+  (seen-ops
+    (78
+      (operation nonce-test (displaced 6 2 resp 2) x3 (1 0)
+        (enc "okay" x3 x3 (pubk a)) (enc "okay" x1-0 x3 (pubk a))
+        (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+        (enc x1-0 x3 (pubk a))) (strand-map 0 1 2 2 3 4)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc "okay" x3 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 184)
+  (parent 104)
+  (seen 80)
+  (seen-ops
+    (80 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc "okay" x3 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 185)
+  (parent 104)
+  (seen 79)
+  (seen-ops
+    (79 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (displaced 5 4 resp 2) x1 (1 0)
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 186)
+  (parent 105)
+  (seen 189 207)
+  (seen-ops
+    (189
+      (operation nonce-test (displaced 5 3 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 4 3))
+    (207
+      (operation nonce-test (displaced 5 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 4 2 3)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 187)
+  (parent 105)
+  (seen 107 210 273)
+  (seen-ops
+    (107
+      (operation nonce-test (displaced 6 3 resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 4 3 4))
+    (210
+      (operation nonce-test (displaced 6 2 resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 5 2 3 4))
+    (273
+      (operation nonce-test (displaced 6 4 resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 4 5)))
+  (unrealized (1 0))
+  (comment "6 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 188)
+  (parent 105)
+  (seen 114 194 274 277)
+  (seen-ops
+    (114
+      (operation nonce-test (displaced 6 2 resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 4 2 3 4))
+    (194
+      (operation nonce-test (displaced 6 3 resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 4 3 5))
+    (274
+      (operation nonce-test (displaced 6 4 resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 4 5))
+    (277
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 4 6)))
+  (unrealized (1 0))
+  (comment "6 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
+    (enc "okay" y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+    (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a-0)))
+      (send (enc "okay" x3 y3-0 (pubk a-0))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a)))))
+  (label 189)
+  (parent 106)
+  (seen 220)
+  (seen-ops
+    (220
+      (operation nonce-test (displaced 5 2 resp 2) y3-0 (1 0)
+        (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+        (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+      (strand-map 0 1 4 2 3)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
+    (enc "okay" y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+    (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a)))))
+  (label 190)
+  (parent 106)
+  (seen 119)
+  (seen-ops
+    (119 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
+    (enc "okay" y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+    (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a-0)))
+      (send (enc "okay" x3 y3-0 (pubk a-0))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a)))))
+  (label 191)
+  (parent 106)
+  (seen 121 281)
+  (seen-ops
+    (121
+      (operation nonce-test (displaced 5 2 resp 2) y3-0 (1 0)
+        (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+        (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+      (strand-map 0 1 3 2 3))
+    (281
+      (operation nonce-test (added-strand resp 2) y3-0 (1 0)
+        (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+        (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+      (strand-map 0 1 2 3 5)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
+    (enc "okay" y3-1 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+    (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a-0)))
+      (send (enc "okay" x3 y3-0 (pubk a-0))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a)))))
+  (label 192)
+  (parent 107)
+  (seen 223)
+  (seen-ops
+    (223
+      (operation nonce-test (displaced 6 2 resp 2) y3-0 (1 0)
+        (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+        (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+      (strand-map 0 1 5 2 3 4)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
+    (enc "okay" y3-1 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+    (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a)))))
+  (label 193)
+  (parent 107)
+  (seen 123)
+  (seen-ops
+    (123 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
+    (enc "okay" y3-1 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+    (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a-0)))
+      (send (enc "okay" x3 y3-0 (pubk a-0))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-2 y3-0 (pubk a)))))
+  (label 194)
+  (parent 107)
+  (seen 124 281 284)
+  (seen-ops
+    (124
+      (operation nonce-test (displaced 6 2 resp 2) y3-0 (1 0)
+        (enc "okay" y3-1 y3-0 (pubk a)) (enc "okay" y3-2 y3-0 (pubk a))
+        (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+      (strand-map 0 1 4 2 3 4))
+    (281
+      (operation nonce-test (displaced 6 3 resp 2) y3-0 (1 0)
+        (enc "okay" y3-1 y3-0 (pubk a)) (enc "okay" y3-2 y3-0 (pubk a))
+        (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+      (strand-map 0 1 2 3 4 5))
+    (284
+      (operation nonce-test (added-strand resp 2) y3-0 (1 0)
+        (enc "okay" y3-1 y3-0 (pubk a)) (enc "okay" y3-2 y3-0 (pubk a))
+        (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+      (strand-map 0 1 2 3 4 6)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
+    (enc "okay" y3-1 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+    (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a-0)))
+      (send (enc "okay" x3 y3-0 (pubk a-0))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a)))))
+  (label 195)
+  (parent 108)
+  (seen 125 286)
+  (seen-ops
+    (125
+      (operation nonce-test (displaced 6 2 resp 2) y3-0 (1 0)
+        (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+        (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+      (strand-map 0 1 3 2 3 4))
+    (286
+      (operation nonce-test (added-strand resp 2) y3-0 (1 0)
+        (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+        (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+      (strand-map 0 1 2 3 5 6)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
+    (enc "okay" y3-1 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+    (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a)))))
+  (label 196)
+  (parent 108)
+  (seen 126)
+  (seen-ops
+    (126 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 197)
+  (parent 109)
+  (seen 99)
+  (seen-ops
+    (99
+      (operation nonce-test (displaced 6 3 resp 2) y3 (1 0)
+        (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+        (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+      (strand-map 0 1 2 3 3 4)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
+  (label 198)
+  (parent 109)
+  (seen 100)
+  (seen-ops
+    (100 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (displaced 5 2 resp 2) y3 (1 0)
+    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
+  (label 199)
+  (parent 109)
+  (seen 95)
+  (seen-ops
+    (95
+      (operation nonce-test (displaced 5 3 resp 2) y3 (1 0)
+        (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+        (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+      (strand-map 0 1 2 3 3)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-2 y3 (pubk a)))))
+  (label 200)
+  (parent 109)
+  (seen 98 289 291)
+  (seen-ops
+    (98
+      (operation nonce-test (displaced 6 3 resp 2) y3 (1 0)
+        (enc "okay" y3-2 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+        (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+      (strand-map 0 1 2 4 4 3))
+    (289
+      (operation nonce-test (added-strand resp 2) y3 (1 0)
+        (enc "okay" y3-1 y3 (pubk a)) (enc "okay" y3-2 y3 (pubk a))
+        (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+      (strand-map 0 1 2 3 4 6))
+    (291
+      (operation nonce-test (displaced 6 2 resp 2) y3 (1 0)
+        (enc "okay" y3-1 y3 (pubk a)) (enc "okay" y3-2 y3 (pubk a))
+        (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+      (strand-map 0 1 2 3 4 5)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 201)
+  (parent 110)
+  (seen 245)
+  (seen-ops
+    (245 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
+  (label 202)
+  (parent 110)
+  (seen 174 291)
+  (seen-ops
+    (174
+      (operation nonce-test (displaced 5 3 resp 2) y3 (1 0)
+        (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+        (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+      (strand-map 0 1 2 4 3))
+    (291
+      (operation nonce-test (added-strand resp 2) y3 (1 0)
+        (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+        (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+      (strand-map 0 1 2 3 5)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 203)
+  (parent 111)
+  (seen 177 293)
+  (seen-ops
+    (177
+      (operation nonce-test (displaced 6 3 resp 2) y3 (1 0)
+        (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+        (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+      (strand-map 0 1 2 5 3 4))
+    (293
+      (operation nonce-test (added-strand resp 2) y3 (1 0)
+        (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+        (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+      (strand-map 0 1 2 3 5 6)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
+  (label 204)
+  (parent 111)
+  (seen 152)
+  (seen-ops
+    (152 (operation generalization deleted (3 0)) (strand-map 0 1 4 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 205)
+  (parent 112)
+  (seen 119)
+  (seen-ops
+    (119 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 206)
+  (parent 112)
+  (seen 120)
+  (seen-ops
+    (120
+      (operation nonce-test (displaced 5 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 3 2 3)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 207)
+  (parent 112)
+  (seen 220 297)
+  (seen-ops
+    (220
+      (operation nonce-test (displaced 5 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 3 2 4))
+    (297
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 5)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 208)
+  (parent 113)
+  (seen 122)
+  (seen-ops
+    (122
+      (operation nonce-test (displaced 6 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 3 2 3 4)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 209)
+  (parent 113)
+  (seen 123)
+  (seen-ops
+    (123 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 210)
+  (parent 113)
+  (seen 124 297 300)
+  (seen-ops
+    (124
+      (operation nonce-test (displaced 6 2 resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 3 2 3 4))
+    (297
+      (operation nonce-test (displaced 6 3 resp 2) x1 (1 0)
+        (enc "okay" y3-0 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4 5))
+    (300
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" y3-0 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4 6)))
+  (unrealized (1 0))
+  (comment "5 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 211)
+  (parent 114)
+  (seen 225 302)
+  (seen-ops
+    (225
+      (operation nonce-test (displaced 6 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 3 2 4 5))
+    (302
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 5 6)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 212)
+  (parent 114)
+  (seen 126)
+  (seen-ops
+    (126 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
+    (enc "okay" y3 x1 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 213)
+  (parent 115)
+  (seen 215)
+  (seen-ops
+    (215 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1-0)
+  (operation nonce-test (added-strand resp 2) x1-0 (1 0)
+    (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
+      (recv (enc "okay" x1-0 x1 (pubk a))))
+    ((recv (enc x1 x1-0 (pubk a-0)))
+      (send (enc "okay" x1-0 x1 (pubk a-0))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" x1-0 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" x1-0 x1-0 (pubk a)))))
+  (label 214)
+  (parent 115)
+  (unrealized (1 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 215)
+  (parent 116)
+  (seen 68)
+  (seen-ops
+    (68 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 216)
+  (parent 117)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x1-0 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x1-0) (x3 x1-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1-0) (y3 x1-0) (a a-0))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1-0) (y2 x1-0) (y3 x1-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1-0)
+  (operation nonce-test (added-strand resp 2) x1-0 (1 0)
+    (enc "okay" y3-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1-0 x1-0 (pubk a)) (enc x1-0 x1-0 (pubk a))))
+      (recv (enc "okay" x1-0 x1 (pubk a))))
+    ((recv (enc x1 x1-0 (pubk a-0)))
+      (send (enc "okay" x1-0 x1 (pubk a-0))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" x1-0 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" y3-0 x1-0 (pubk a))))
+    ((recv (enc x1-0 x1-0 (pubk a)))
+      (send (enc "okay" x1-0 x1-0 (pubk a)))))
+  (label 217)
+  (parent 118)
+  (seen 214)
+  (seen-ops
+    (214
+      (operation nonce-test (displaced 6 2 resp 2) x1-0 (1 0)
+        (enc "okay" x1-0 x1-0 (pubk a)) (enc "okay" y3-0 x1-0 (pubk a))
+        (enc x1-0 x1-0 (pubk a))) (strand-map 0 1 2 3 2 4)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 218)
+  (parent 118)
+  (seen 213)
+  (seen-ops
+    (213 (operation generalization deleted (2 0)) (strand-map 0 1 4 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 219)
+  (parent 120)
+  (seen 119)
+  (seen-ops
+    (119 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
+  (label 220)
+  (parent 120)
+  (unrealized (1 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 221)
+  (parent 121)
+  (seen 119)
+  (seen-ops
+    (119 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 222)
+  (parent 122)
+  (seen 219)
+  (seen-ops
+    (219 (operation generalization deleted (2 0)) (strand-map 0 1 4 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
+  (label 223)
+  (parent 122)
+  (unrealized (1 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3-0 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
+  (label 224)
+  (parent 124)
+  (seen 126)
+  (seen-ops
+    (126 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3-0 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 225)
+  (parent 124)
+  (unrealized (1 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 226)
+  (parent 125)
+  (seen 244)
+  (seen-ops
+    (244 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 227)
+  (parent 128)
+  (seen 305)
+  (seen-ops
+    (305 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 228)
+  (parent 130)
+  (seen 227)
+  (seen-ops
+    (227 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3-0) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 y3-0) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation generalization forgot (privk a-0))
+  (strand-map 0 1 2)
+  (traces
+    ((send (cat (enc y3 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 229)
+  (parent 131)
+  (realized)
+  (shape)
+  (maps ((0 1) ((x1 y3) (x3 x3) (a a) (x1-0 y3) (x3-0 y3-0) (a-0 a-0))))
+  (origs (y3-0 (0 0))))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 230)
+  (parent 136)
+  (seen 138)
+  (seen-ops
+    (138 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 231)
+  (parent 137)
+  (seen 139)
+  (seen-ops
+    (139 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" x1 y3 (pubk a)) (enc "okay" y3 y3 (pubk a))
+    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 232)
+  (parent 140)
+  (seen 93)
+  (seen-ops
+    (93 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 233)
+  (parent 142)
+  (seen 177)
+  (seen-ops
+    (177
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 4 2 3 4)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 234)
+  (parent 142)
+  (seen 172)
+  (seen-ops
+    (172 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a)))))
+  (label 235)
+  (parent 143)
+  (seen 100)
+  (seen-ops
+    (100 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" x1 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 236)
+  (parent 145)
+  (seen 176)
+  (seen-ops
+    (176 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 237)
+  (parent 147)
+  (seen 180)
+  (seen-ops
+    (180 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 238)
+  (parent 147)
+  (seen 178)
+  (seen-ops
+    (178
+      (operation nonce-test (displaced 7 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 3 2 4 5 3)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 239)
+  (parent 149)
+  (seen 175)
+  (seen-ops
+    (175 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 240)
+  (parent 149)
+  (seen 174)
+  (seen-ops
+    (174
+      (operation nonce-test (displaced 6 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 3 2 4 3)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" y3-0 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 241)
+  (parent 150)
+  (seen 179)
+  (seen-ops
+    (179 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 5 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3-0 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 242)
+  (parent 150)
+  (seen 177)
+  (seen-ops
+    (177
+      (operation nonce-test (displaced 7 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 3 2 5 3 4)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 243)
+  (parent 151)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 244)
+  (parent 153)
+  (seen 245)
+  (seen-ops
+    (245 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 245)
+  (parent 154)
+  (seen 132)
+  (seen-ops
+    (132 (operation generalization weakened ((2 1) (1 0)))
+      (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 246)
+  (parent 155)
+  (seen 244)
+  (seen-ops
+    (244 (operation generalization deleted (2 0)) (strand-map 0 1 4 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 247)
+  (parent 156)
+  (seen 243)
+  (seen-ops
+    (243 (operation generalization deleted (2 0))
+      (strand-map 0 1 4 3 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc "okay" x1 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 248)
+  (parent 161)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc "okay" x1 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 249)
+  (parent 161)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (1 0)
+    (enc "okay" x1-0 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 250)
+  (parent 161)
+  (unrealized (1 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc "okay" x3 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 251)
+  (parent 162)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc "okay" x3 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 252)
+  (parent 162)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc "okay" x1 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 253)
+  (parent 165)
+  (seen 249)
+  (seen-ops
+    (249 (operation generalization deleted (2 0))
+      (strand-map 0 1 4 3 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc "okay" x1 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 254)
+  (parent 165)
+  (seen 248)
+  (seen-ops
+    (248 (operation generalization deleted (2 0))
+      (strand-map 0 1 4 3 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (added-strand resp 2) x3 (1 0)
+    (enc "okay" x1-0 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 255)
+  (parent 165)
+  (seen 250)
+  (seen-ops
+    (250
+      (operation nonce-test (displaced 7 2 resp 2) x3 (1 0)
+        (enc "okay" x3 x3 (pubk a)) (enc "okay" x1-0 x3 (pubk a))
+        (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+        (enc x1-0 x3 (pubk a))) (strand-map 0 1 2 3 2 4 5)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc "okay" x3 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 256)
+  (parent 168)
+  (seen 251)
+  (seen-ops
+    (251 (operation generalization deleted (2 0))
+      (strand-map 0 1 4 3 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc "okay" x3 x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 257)
+  (parent 168)
+  (seen 252)
+  (seen-ops
+    (252 (operation generalization deleted (2 0))
+      (strand-map 0 1 4 3 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 258)
+  (parent 169)
+  (seen 147 289)
+  (seen-ops
+    (147
+      (operation nonce-test (displaced 7 4 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4 4 5))
+    (289
+      (operation nonce-test (displaced 7 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 6 2 3 4 5)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 259)
+  (parent 169)
+  (seen 198)
+  (seen-ops
+    (198 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (0 1))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (displaced 6 3 resp 2) x1 (1 0)
+    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 260)
+  (parent 169)
+  (seen 149 291)
+  (seen-ops
+    (149
+      (operation nonce-test (displaced 6 4 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4 4))
+    (291
+      (operation nonce-test (displaced 6 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 5 2 3 4)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
+  (label 261)
+  (parent 169)
+  (seen 150 200 324 326)
+  (seen-ops
+    (150
+      (operation nonce-test (displaced 7 4 resp 2) x1 (1 0)
+        (enc "okay" y3-2 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4 4 5))
+    (200
+      (operation nonce-test (displaced 7 2 resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 5 2 3 4 5))
+    (324
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4 5 7))
+    (326
+      (operation nonce-test (displaced 7 3 resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4 5 6)))
+  (unrealized (1 0))
+  (comment "6 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 262)
+  (parent 170)
+  (seen 201)
+  (seen-ops
+    (201 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (0 1))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 263)
+  (parent 170)
+  (seen 202 240 326)
+  (seen-ops
+    (202
+      (operation nonce-test (displaced 6 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 4 2 3 4))
+    (240
+      (operation nonce-test (displaced 6 4 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4 5))
+    (326
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4 6)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 264)
+  (parent 171)
+  (seen 203 242 327)
+  (seen-ops
+    (203
+      (operation nonce-test (displaced 7 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 4 2 3 4 5))
+    (242
+      (operation nonce-test (displaced 7 4 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4 5 6))
+    (327
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4 6 7)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 265)
+  (parent 171)
+  (seen 204)
+  (seen-ops
+    (204 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" x1 y3 (pubk a)) (enc "okay" y3 y3 (pubk a))
+    (enc "okay" y3-0 y3 (pubk a)) (enc x1 y3 (pubk a))
+    (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 266)
+  (parent 173)
+  (seen 232)
+  (seen-ops
+    (232 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 267)
+  (parent 174)
+  (seen 175)
+  (seen-ops
+    (175 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 268)
+  (parent 177)
+  (seen 267)
+  (seen-ops
+    (267 (operation generalization deleted (2 0))
+      (strand-map 0 1 4 3 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 269)
+  (parent 178)
+  (seen 307)
+  (seen-ops
+    (307 (operation generalization deleted (2 0))
+      (strand-map 0 1 5 4 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc "okay" x3 x3 (pubk a)) (enc "okay" x1 x3 (pubk a))
+    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 270)
+  (parent 183)
+  (seen 136)
+  (seen-ops
+    (136 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc "okay" x3 x3 (pubk a)) (enc "okay" x1 x3 (pubk a))
+    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 271)
+  (parent 183)
+  (seen 137)
+  (seen-ops
+    (137 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 272)
+  (parent 186)
+  (seen 205)
+  (seen-ops
+    (205 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 273)
+  (parent 186)
+  (seen 189 297)
+  (seen-ops
+    (189
+      (operation nonce-test (displaced 6 3 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 4 3 4))
+    (297
+      (operation nonce-test (displaced 6 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 5 2 3 4)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 274)
+  (parent 186)
+  (seen 207 281 332)
+  (seen-ops
+    (207
+      (operation nonce-test (displaced 6 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 4 2 3 4))
+    (281
+      (operation nonce-test (displaced 6 3 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 4 3 5))
+    (332
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4 6)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 275)
+  (parent 187)
+  (seen 192 300)
+  (seen-ops
+    (192
+      (operation nonce-test (displaced 7 3 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 4 3 4 5))
+    (300
+      (operation nonce-test (displaced 7 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 6 2 3 4 5)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 276)
+  (parent 187)
+  (seen 209)
+  (seen-ops
+    (209 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
+  (label 277)
+  (parent 187)
+  (seen 194 210 332 335)
+  (seen-ops
+    (194
+      (operation nonce-test (displaced 7 3 resp 2) x1 (1 0)
+        (enc "okay" y3-2 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 4 3 4 5))
+    (210
+      (operation nonce-test (displaced 7 2 resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 5 2 3 4 5))
+    (332
+      (operation nonce-test (displaced 7 4 resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4 5 6))
+    (335
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" y3-1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4 5 7)))
+  (unrealized (1 0))
+  (comment "6 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 278)
+  (parent 188)
+  (seen 211 286 336)
+  (seen-ops
+    (211
+      (operation nonce-test (displaced 7 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 4 2 3 4 5))
+    (286
+      (operation nonce-test (displaced 7 3 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 4 3 5 6))
+    (336
+      (operation nonce-test (added-strand resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+      (strand-map 0 1 2 3 4 6 7)))
+  (unrealized (1 0))
+  (comment "4 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (0 1))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 279)
+  (parent 188)
+  (seen 212)
+  (seen-ops
+    (212 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
+    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a)))))
+  (label 280)
+  (parent 189)
+  (seen 219)
+  (seen-ops
+    (219 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
+    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a-0)))
+      (send (enc "okay" x3 y3-0 (pubk a-0))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-2 y3-0 (pubk a)))))
+  (label 281)
+  (parent 189)
+  (seen 220)
+  (seen-ops
+    (220
+      (operation nonce-test (displaced 6 2 resp 2) y3-0 (1 0)
+        (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+        (enc "okay" y3-2 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+        (enc y3-0 y3-0 (pubk a))) (strand-map 0 1 4 2 3 4)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
+    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a)))))
+  (label 282)
+  (parent 191)
+  (seen 221)
+  (seen-ops
+    (221 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
+    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a)))))
+  (label 283)
+  (parent 192)
+  (seen 222)
+  (seen-ops
+    (222 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
+    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a-0)))
+      (send (enc "okay" x3 y3-0 (pubk a-0))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-2 y3-0 (pubk a)))))
+  (label 284)
+  (parent 192)
+  (seen 223)
+  (seen-ops
+    (223
+      (operation nonce-test (displaced 7 2 resp 2) y3-0 (1 0)
+        (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+        (enc "okay" y3-2 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+        (enc y3-0 y3-0 (pubk a))) (strand-map 0 1 5 2 3 4 5)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
+    (enc "okay" y3-1 y3-0 (pubk a)) (enc "okay" y3-2 y3-0 (pubk a))
+    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-2 y3-0 (pubk a)))))
+  (label 285)
+  (parent 194)
+  (seen 224)
+  (seen-ops
+    (224 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-2) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (added-strand resp 2) y3-0 (1 0)
+    (enc "okay" y3-1 y3-0 (pubk a)) (enc "okay" y3-2 y3-0 (pubk a))
+    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a-0)))
+      (send (enc "okay" x3 y3-0 (pubk a-0))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-2 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a)))))
+  (label 286)
+  (parent 194)
+  (seen 225)
+  (seen-ops
+    (225
+      (operation nonce-test (displaced 7 2 resp 2) y3-0 (1 0)
+        (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+        (enc "okay" y3-2 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+        (enc y3-0 y3-0 (pubk a))) (strand-map 0 1 4 2 3 4 5)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
+    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+    (enc y3-0 x3 (pubk a)) (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a)))))
+  (label 287)
+  (parent 195)
+  (seen 226)
+  (seen-ops
+    (226 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 288)
+  (parent 197)
+  (seen 296)
+  (seen-ops
+    (296 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 5 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-2 y3 (pubk a)))))
+  (label 289)
+  (parent 197)
+  (seen 178)
+  (seen-ops
+    (178
+      (operation nonce-test (displaced 7 3 resp 2) y3 (1 0)
+        (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-2 y3 (pubk a))
+        (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
+        (enc y3 y3 (pubk a))) (strand-map 0 1 2 4 4 5 3)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
+  (label 290)
+  (parent 199)
+  (seen 175)
+  (seen-ops
+    (175 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-2 y3 (pubk a)))))
+  (label 291)
+  (parent 199)
+  (seen 174)
+  (seen-ops
+    (174
+      (operation nonce-test (displaced 6 3 resp 2) y3 (1 0)
+        (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-2 y3 (pubk a))
+        (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
+        (enc y3 y3 (pubk a))) (strand-map 0 1 2 4 4 3)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3-1 y3 (pubk a)) (enc "okay" y3-2 y3 (pubk a))
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-2 y3 (pubk a)))))
+  (label 292)
+  (parent 200)
+  (seen 179)
+  (seen-ops
+    (179 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 5 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-2) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (added-strand resp 2) y3 (1 0)
+    (enc "okay" y3-1 y3 (pubk a)) (enc "okay" y3-2 y3 (pubk a))
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-2 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 293)
+  (parent 200)
+  (seen 177)
+  (seen-ops
+    (177
+      (operation nonce-test (displaced 7 3 resp 2) y3 (1 0)
+        (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-2 y3 (pubk a))
+        (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
+        (enc y3 y3 (pubk a))) (strand-map 0 1 2 5 5 3 4)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
+  (label 294)
+  (parent 202)
+  (seen 244)
+  (seen-ops
+    (244 (operation generalization deleted (3 0)) (strand-map 0 1 4 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+    (enc y3 x3 (pubk a)) (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 295)
+  (parent 203)
+  (seen 294)
+  (seen-ops
+    (294 (operation generalization deleted (2 0))
+      (strand-map 0 1 5 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 296)
+  (parent 206)
+  (seen 219)
+  (seen-ops
+    (219 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 297)
+  (parent 206)
+  (seen 220)
+  (seen-ops
+    (220
+      (operation nonce-test (displaced 6 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 3 2 3 4)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a)))))
+  (label 298)
+  (parent 207)
+  (seen 221)
+  (seen-ops
+    (221 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 299)
+  (parent 208)
+  (seen 222)
+  (seen-ops
+    (222 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 300)
+  (parent 208)
+  (seen 223)
+  (seen-ops
+    (223
+      (operation nonce-test (displaced 7 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 3 2 3 4 5)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" y3-0 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 301)
+  (parent 210)
+  (seen 224)
+  (seen-ops
+    (224 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3-0 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 302)
+  (parent 210)
+  (seen 225)
+  (seen-ops
+    (225
+      (operation nonce-test (displaced 7 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc "okay" y3-0 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 3 2 3 4 5)))
+  (unrealized (1 0))
+  (comment "2 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 303)
+  (parent 211)
+  (seen 226)
+  (seen-ops
+    (226 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 304)
+  (parent 214)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 305)
+  (parent 216)
+  (seen 68)
+  (seen-ops
+    (68 (operation generalization deleted (2 0)) (strand-map 0 1)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 306)
+  (parent 217)
+  (seen 304)
+  (seen-ops
+    (304 (operation generalization deleted (2 0))
+      (strand-map 0 1 4 3 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (1 0)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
+  (label 307)
+  (parent 220)
+  (seen 221)
+  (seen-ops
+    (221 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a)))))
+  (label 308)
+  (parent 223)
+  (seen 307)
+  (seen-ops
+    (307 (operation generalization deleted (2 0))
+      (strand-map 0 1 4 3 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+    (enc "okay" y3-1 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 309)
+  (parent 225)
+  (seen 267)
+  (seen-ops
+    (267 (operation generalization deleted (2 0))
+      (strand-map 0 1 5 4 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" x1 y3 (pubk a)) (enc "okay" y3 y3 (pubk a))
+    (enc "okay" y3-0 y3 (pubk a)) (enc x1 y3 (pubk a))
+    (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x1 y3 (pubk a)))))
+  (label 310)
+  (parent 233)
+  (seen 266)
+  (seen-ops
+    (266 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 311)
+  (parent 238)
+  (seen 269)
+  (seen-ops
+    (269 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 6 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 312)
+  (parent 240)
+  (seen 267)
+  (seen-ops
+    (267 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 5 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 313)
+  (parent 242)
+  (seen 268)
+  (seen-ops
+    (268 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 5 6 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 314)
+  (parent 243)
+  (seen 245)
+  (seen-ops
+    (245 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 315)
+  (parent 248)
+  (seen 134)
+  (seen-ops
+    (134 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a)))))
+  (label 316)
+  (parent 249)
+  (seen 135)
+  (seen-ops
+    (135 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc "okay" x3 x3 (pubk a)) (enc "okay" x1 x3 (pubk a))
+    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 317)
+  (parent 250)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc "okay" x3 x3 (pubk a)) (enc "okay" x1 x3 (pubk a))
+    (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 318)
+  (parent 250)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 319)
+  (parent 251)
+  (seen 139)
+  (seen-ops
+    (139 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 320)
+  (parent 252)
+  (seen 138)
+  (seen-ops
+    (138 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc "okay" x3 x3 (pubk a)) (enc "okay" x1 x3 (pubk a))
+    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 321)
+  (parent 255)
+  (seen 317)
+  (seen-ops
+    (317 (operation generalization deleted (2 0))
+      (strand-map 0 1 4 3 5 6)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc "okay" x3 x3 (pubk a)) (enc "okay" x1 x3 (pubk a))
+    (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
+    (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" y3-0 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 322)
+  (parent 255)
+  (seen 318)
+  (seen-ops
+    (318 (operation generalization deleted (2 0))
+      (strand-map 0 1 4 3 5 6)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 323)
+  (parent 258)
+  (seen 288)
+  (seen-ops
+    (288 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((0 0) (7 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (0 1)) ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0))
+    ((7 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
+  (label 324)
+  (parent 258)
+  (seen 238 289)
+  (seen-ops
+    (238
+      (operation nonce-test (displaced 8 4 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 4 4 5 6))
+    (289
+      (operation nonce-test (displaced 8 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 6 2 3 4 5 6)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (0 1))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 325)
+  (parent 260)
+  (seen 290)
+  (seen-ops
+    (290 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0))
+    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
+  (label 326)
+  (parent 260)
+  (seen 240 291)
+  (seen-ops
+    (240
+      (operation nonce-test (displaced 7 4 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 4 4 5))
+    (291
+      (operation nonce-test (displaced 7 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 5 2 3 4 5)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((0 0) (7 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (0 1)) ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0))
+    ((7 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3-1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 327)
+  (parent 261)
+  (seen 242 293)
+  (seen-ops
+    (242
+      (operation nonce-test (displaced 8 4 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 3 4 4 5 6))
+    (293
+      (operation nonce-test (displaced 8 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 5 2 3 4 5 6)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" y3-1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
+  (label 328)
+  (parent 261)
+  (seen 292)
+  (seen-ops
+    (292 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (0 1))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 329)
+  (parent 263)
+  (seen 294)
+  (seen-ops
+    (294 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 330)
+  (parent 264)
+  (seen 295)
+  (seen-ops
+    (295 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 331)
+  (parent 273)
+  (seen 296)
+  (seen-ops
+    (296 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
+  (label 332)
+  (parent 273)
+  (seen 281 297)
+  (seen-ops
+    (281
+      (operation nonce-test (displaced 7 3 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 4 3 4 5))
+    (297
+      (operation nonce-test (displaced 7 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 5 2 3 4 5)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 333)
+  (parent 274)
+  (seen 298)
+  (seen-ops
+    (298 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 334)
+  (parent 275)
+  (seen 299)
+  (seen-ops
+    (299 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((0 0) (7 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (0 1)) ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0))
+    ((7 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
+  (label 335)
+  (parent 275)
+  (seen 284 300)
+  (seen-ops
+    (284
+      (operation nonce-test (displaced 8 3 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 4 3 4 5 6))
+    (300
+      (operation nonce-test (displaced 8 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 6 2 3 4 5 6)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a a-0 name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((0 0) (7 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (0 1)) ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0))
+    ((7 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (added-strand resp 2) x1 (1 0)
+    (enc "okay" y3-1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0))) (send (enc "okay" x3 x1 (pubk a-0))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 336)
+  (parent 277)
+  (seen 286 302)
+  (seen-ops
+    (286
+      (operation nonce-test (displaced 8 3 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
+        (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 2 4 3 4 5 6))
+    (302
+      (operation nonce-test (displaced 8 2 resp 2) x1 (1 0)
+        (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+        (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
+        (enc x1 x1 (pubk a))) (strand-map 0 1 5 2 3 4 5 6)))
+  (unrealized (1 0))
+  (comment "3 in cohort - 1 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" y3-1 x1 (pubk a)) (enc "okay" y3-2 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
+  (label 337)
+  (parent 277)
+  (seen 301)
+  (seen-ops
+    (301 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc x1 x3 (pubk a)) (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 338)
+  (parent 278)
+  (seen 303)
+  (seen-ops
+    (303 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
+    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+    (enc "okay" y3-2 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+    (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-2 y3-0 (pubk a)))))
+  (label 339)
+  (parent 281)
+  (seen 307)
+  (seen-ops
+    (307 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
+    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+    (enc "okay" y3-2 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+    (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-2 y3-0 (pubk a)))))
+  (label 340)
+  (parent 284)
+  (seen 308)
+  (seen-ops
+    (308 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a name))
+  (defstrand init 2 (x1 y3-0) (x2 x3) (x3 y3-0) (x4 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 y3-0) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-2) (a a))
+  (defstrand resp 2 (y1 y3-0) (y2 x3) (y3 y3-0) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation nonce-test (contracted (a-0 a)) y3-0 (1 0)
+    (enc "okay" y3-0 y3-0 (pubk a)) (enc "okay" y3-1 y3-0 (pubk a))
+    (enc "okay" y3-2 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))
+    (enc y3-0 y3-0 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc y3-0 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" x3 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a))) (send (enc "okay" y3 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a))))
+    ((recv (enc y3-0 y3-0 (pubk a)))
+      (send (enc "okay" y3-1 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-2 y3-0 (pubk a))))
+    ((recv (enc y3-0 x3 (pubk a)))
+      (send (enc "okay" y3-0 y3-0 (pubk a)))))
+  (label 341)
+  (parent 286)
+  (seen 309)
+  (seen-ops
+    (309 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+    (enc "okay" y3-2 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-2 y3 (pubk a)))))
+  (label 342)
+  (parent 289)
+  (seen 345)
+  (seen-ops
+    (345 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 5 4 6)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (0 1)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+    (enc "okay" y3-2 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-2 y3 (pubk a)))))
+  (label 343)
+  (parent 291)
+  (seen 267)
+  (seen-ops
+    (267 (operation generalization deleted (3 0))
+      (strand-map 0 1 2 5 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 y3-1 y3-2 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3-2) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+    (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-1 y3 (pubk a))
+    (enc "okay" y3-2 y3 (pubk a)) (enc y3 x3 (pubk a))
+    (enc y3 y3 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc y3 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3 (pubk a))) (send (enc "okay" y3-1 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3-2 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 344)
+  (parent 293)
+  (seen 343)
+  (seen-ops
+    (343 (operation generalization deleted (2 0))
+      (strand-map 0 1 6 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0))
+    ((5 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 345)
+  (parent 297)
+  (seen 307)
+  (seen-ops
+    (307 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a)))))
+  (label 346)
+  (parent 300)
+  (seen 308)
+  (seen-ops
+    (308 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-0 x1 (pubk a))
+    (enc "okay" y3-1 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 347)
+  (parent 302)
+  (seen 309)
+  (seen-ops
+    (309 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x1) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x1 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 348)
+  (parent 304)
+  (seen 305)
+  (seen-ops
+    (305 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4 5)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 349)
+  (parent 317)
+  (seen 230)
+  (seen-ops
+    (230 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1))
+    ((2 1) (0 1)) ((3 1) (1 0)) ((4 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4 5)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x1 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 350)
+  (parent 318)
+  (seen 231)
+  (seen-ops
+    (231 (operation generalization deleted (2 0)) (strand-map 0 1 3 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((0 0) (7 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (0 1)) ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0))
+    ((7 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
+  (label 351)
+  (parent 324)
+  (seen 342)
+  (seen-ops
+    (342 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6 7)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (1 0))
+    ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
+  (label 352)
+  (parent 326)
+  (seen 343)
+  (seen-ops
+    (343 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((0 0) (7 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (0 1)) ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0))
+    ((7 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 353)
+  (parent 327)
+  (seen 344)
+  (seen-ops
+    (344 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6 7)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 1)) ((3 1) (0 1))
+    ((4 1) (1 0)) ((5 1) (1 0)) ((6 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
+  (label 354)
+  (parent 332)
+  (seen 345)
+  (seen-ops
+    (345 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((0 0) (7 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (0 1)) ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0))
+    ((7 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a)))))
+  (label 355)
+  (parent 335)
+  (seen 346)
+  (seen-ops
+    (346 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6 7)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 y3-0 y3-1 y3-2 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x1) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-0) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x1) (y3 y3-1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 y3-2) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x1) (a a))
+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((0 0) (4 0)) ((0 0) (5 0))
+    ((0 0) (6 0)) ((0 0) (7 0)) ((1 1) (0 1)) ((2 1) (0 1))
+    ((3 1) (0 1)) ((4 1) (0 1)) ((5 1) (1 0)) ((6 1) (1 0))
+    ((7 1) (1 0)))
+  (non-orig (privk a))
+  (uniq-orig x1)
+  (operation nonce-test (contracted (a-0 a)) x1 (1 0)
+    (enc "okay" x1 x1 (pubk a)) (enc "okay" y3-1 x1 (pubk a))
+    (enc "okay" y3-2 x1 (pubk a)) (enc x1 x3 (pubk a))
+    (enc x1 x1 (pubk a)))
+  (strand-map 0 1 2 3 4 5 6 7)
+  (traces
+    ((send (cat (enc x1 x1 (pubk a)) (enc x1 x3 (pubk a))))
+      (recv (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-0 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" x1 x1 (pubk a))))
+    ((recv (enc x1 x1 (pubk a))) (send (enc "okay" y3-1 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" y3-2 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x1 x1 (pubk a)))))
+  (label 356)
+  (parent 336)
+  (seen 347)
+  (seen-ops
+    (347 (operation generalization deleted (2 0))
+      (strand-map 0 1 3 4 5 6 7)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/wonthull2_shapes.tst b/tst/wonthull2_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/wonthull2_shapes.tst
@@ -0,0 +1,207 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald wonthull2 (bound 9))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/wonthull2.scm")
+
+(comment "Strand count bounded at 9")
+
+(defprotocol wonthull2 basic
+  (defrole init
+    (vars (a name) (x1 x2 x3 x4 text))
+    (trace (send (cat (enc x1 x3 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a))))
+    (non-orig (privk a))
+    (uniq-orig x3))
+  (defrole resp
+    (vars (a name) (y1 y2 y3 text))
+    (trace (recv (enc y1 y2 (pubk a)))
+      (send (enc "okay" y3 y1 (pubk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wonthull2
+  (vars (x1 x2 x3 x4 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x3) (x4 x4) (a a))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (x3 (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x1 x2 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x2) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (x3 y3) (x4 y3)) y3 (0 1)
+    (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
+    (enc y3 x2 (pubk a)))
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x2 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x2 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (x1 x1) (x2 x2) (x3 y3) (x4 y3))))
+  (origs (y3 (0 0))))
+
+(defskeleton wonthull2
+  (vars (x2 y3 y3-0 text) (a name))
+  (defstrand init 2 (x1 y3) (x2 x2) (x3 y3-0) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 y3-0) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation generalization forgot y3)
+  (traces
+    ((send (cat (enc y3 y3-0 (pubk a)) (enc y3-0 x2 (pubk a))))
+      (recv (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 19)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (x1 y3) (x2 x2) (x3 y3-0) (x4 y3))))
+  (origs (y3-0 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol wonthull2 basic
+  (defrole init
+    (vars (a name) (x1 x2 x3 x4 text))
+    (trace (send (cat (enc x1 x3 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a))))
+    (non-orig (privk a))
+    (uniq-orig x3))
+  (defrole resp
+    (vars (a name) (y1 y2 y3 text))
+    (trace (recv (enc y1 y2 (pubk a)))
+      (send (enc "okay" y3 y1 (pubk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wonthull2
+  (vars (x1 x3 x1-0 x3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 x1-0) (x2 x3) (x3 x3-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3-0)
+  (traces
+    ((send (cat (enc x1-0 x3-0 (pubk a)) (enc x3-0 x3 (pubk a))))
+      (recv (enc "okay" x3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0)))
+      (send (enc "okay" x3 x1 (pubk a-0)))))
+  (label 20)
+  (unrealized (0 1))
+  (origs (x3-0 (0 0)))
+  (comment "4 in cohort - 4 not yet seen"))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (displaced 2 1 resp 2) x1-0 (0 1)
+    (enc "okay" x3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a))
+    (enc x1 x1-0 (pubk a)))
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 25)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps ((0 1) ((x1 x3) (x3 x3) (a a) (x1-0 x1) (x3-0 x3) (a-0 a))))
+  (origs (x3 (0 0))))
+
+(defskeleton wonthull2
+  (vars (x3 x1 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a)))))
+  (label 28)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps ((0 1) ((x1 x1) (x3 x3) (a a) (x1-0 x1) (x3-0 x3) (a-0 a))))
+  (origs (x3 (0 0))))
+
+(defskeleton wonthull2
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (displaced 3 2 resp 2) x1-0 (0 1)
+    (enc "okay" x3 x1-0 (pubk a)) (enc "okay" y3 x1-0 (pubk a))
+    (enc x1-0 x3 (pubk a)) (enc x1 x1-0 (pubk a)))
+  (traces
+    ((send (cat (enc x1 y3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 43)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps ((0 1) ((x1 y3) (x3 x3) (a a) (x1-0 x1) (x3-0 y3) (a-0 a))))
+  (origs (y3 (0 0))))
+
+(defskeleton wonthull2
+  (vars (x3 y3 y3-0 text) (a a-0 name))
+  (defstrand init 2 (x1 y3) (x2 x3) (x3 y3-0) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a-0))
+  (defstrand resp 2 (y1 y3) (y2 y3-0) (y3 y3-0) (a a))
+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig y3-0)
+  (operation generalization forgot (privk a-0))
+  (traces
+    ((send (cat (enc y3 y3-0 (pubk a)) (enc y3-0 x3 (pubk a))))
+      (recv (enc "okay" y3-0 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a-0))) (send (enc "okay" x3 y3 (pubk a-0))))
+    ((recv (enc y3 y3-0 (pubk a)))
+      (send (enc "okay" y3-0 y3 (pubk a)))))
+  (label 229)
+  (parent 20)
+  (realized)
+  (shape)
+  (maps ((0 1) ((x1 y3) (x3 x3) (a a) (x1-0 y3) (x3-0 y3-0) (a-0 a-0))))
+  (origs (y3-0 (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/wonthull3.tst b/tst/wonthull3.tst
--- a/tst/wonthull3.tst
+++ b/tst/wonthull3.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/wonthull3.scm")
 
 (defprotocol wonthull3 basic
@@ -41,6 +41,7 @@
   (uniq-orig x2)
   (operation nonce-test (displaced 1 0 init 2) x3 (0 2)
     (enc x3 (pubk a)) (enc x3 x2 (pubk a)))
+  (strand-map 0)
   (traces
     ((send (enc x2 (pubk a)))
       (send (cat (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a))))
@@ -60,6 +61,7 @@
   (uniq-orig x3)
   (operation nonce-test (added-strand resp 2) x3 (0 2) (enc x3 (pubk a))
     (enc x3 x2 (pubk a)))
+  (strand-map 0)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x2 (pubk a)) (enc x3 x2 (pubk a))))
@@ -79,6 +81,7 @@
   (uniq-orig x2)
   (operation nonce-test (added-strand resp 2) x2 (0 2) (enc x2 (pubk a))
     (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a)))
+  (strand-map 0)
   (traces
     ((send (enc x2 (pubk a)))
       (send (cat (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a))))
@@ -98,6 +101,7 @@
   (uniq-orig x3)
   (operation nonce-test (displaced 2 0 init 2) x3 (1 0)
     (enc x3 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x2 (pubk a)) (enc x3 x2 (pubk a))))
@@ -106,6 +110,11 @@
   (label 4)
   (parent 2)
   (seen 5)
+  (seen-ops
+    (5
+      (operation nonce-test (displaced 2 0 init 2) x3 (0 2)
+        (enc x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
+        (enc x3 x2 (pubk a))) (strand-map 0 1)))
   (unrealized (0 2))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -118,6 +127,7 @@
   (uniq-orig x2)
   (operation nonce-test (displaced 2 0 init 2) x2 (1 0)
     (enc x2 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc x2 (pubk a)))
       (send (cat (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a))))
@@ -137,6 +147,7 @@
   (uniq-orig y3)
   (operation nonce-test (contracted (x3 y3) (x4 y3)) y3 (0 2)
     (enc y3 (pubk a)) (enc "okay" y3 y3 (pubk a)) (enc y3 x2 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc y3 (pubk a)))
       (send (cat (enc x1 x2 (pubk a)) (enc y3 x2 (pubk a))))
@@ -159,6 +170,7 @@
   (uniq-orig x3)
   (operation nonce-test (added-strand resp 2) x3 (0 2) (enc x3 (pubk a))
     (enc "okay" y3 x3 (pubk a)) (enc x3 x2 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x2 (pubk a)) (enc x3 x2 (pubk a))))
@@ -168,6 +180,10 @@
   (label 7)
   (parent 4)
   (seen 4)
+  (seen-ops
+    (4
+      (operation nonce-test (displaced 3 0 init 2) x3 (2 0)
+        (enc x3 (pubk a))) (strand-map 0 1 1)))
   (unrealized (0 2) (2 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -181,6 +197,7 @@
   (operation nonce-test (contracted (x2 y3) (x4 y3)) y3 (0 2)
     (enc y3 (pubk a)) (enc "okay" y3 y3 (pubk a)) (enc x1 y3 (pubk a))
     (enc y3 y3 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc y3 (pubk a)))
       (send (cat (enc x1 y3 (pubk a)) (enc y3 y3 (pubk a))))
@@ -189,6 +206,8 @@
   (label 8)
   (parent 5)
   (seen 6)
+  (seen-ops
+    (6 (operation generalization separated y3-0) (strand-map 0 1)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -203,6 +222,7 @@
   (operation nonce-test (added-strand resp 2) x2 (0 2) (enc x2 (pubk a))
     (enc "okay" y3 x2 (pubk a)) (enc x1 x2 (pubk a))
     (enc x2 x2 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc x2 (pubk a)))
       (send (cat (enc x1 x2 (pubk a)) (enc x2 x2 (pubk a))))
@@ -212,6 +232,10 @@
   (label 9)
   (parent 5)
   (seen 5)
+  (seen-ops
+    (5
+      (operation nonce-test (displaced 3 0 init 2) x2 (2 0)
+        (enc x2 (pubk a))) (strand-map 0 1 1)))
   (unrealized (0 2) (2 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -263,6 +287,7 @@
   (uniq-orig x3)
   (operation nonce-test (displaced 2 1 resp 2) x3-0 (0 2)
     (enc x3-0 (pubk a)) (enc x3-0 x3 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -284,6 +309,7 @@
   (uniq-orig x1)
   (operation nonce-test (displaced 2 1 resp 2) x3-0 (0 2)
     (enc x3-0 (pubk a-0)) (enc x3-0 x3 (pubk a-0)))
+  (strand-map 0 1)
   (traces
     ((send (enc x1 (pubk a)))
       (send (cat (enc x1-0 x3 (pubk a)) (enc x1 x3 (pubk a))))
@@ -292,6 +318,11 @@
   (label 12)
   (parent 10)
   (seen 14)
+  (seen-ops
+    (14
+      (operation nonce-test (displaced 2 1 resp 2) x1-0 (0 2)
+        (enc x1-0 (pubk a)) (enc "okay" x3 x1-0 (pubk a))
+        (enc x1-0 x3 (pubk a))) (strand-map 0 1)))
   (unrealized (0 2))
   (origs (x1 (0 0)))
   (comment "2 in cohort - 1 not yet seen"))
@@ -306,6 +337,7 @@
   (uniq-orig x3-0)
   (operation nonce-test (added-strand resp 2) x3-0 (0 2)
     (enc x3-0 (pubk a)) (enc x3-0 x3 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc x3-0 (pubk a)))
       (send (cat (enc x1-0 x3 (pubk a)) (enc x3-0 x3 (pubk a))))
@@ -327,6 +359,7 @@
   (uniq-orig x3)
   (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
     (enc x3 (pubk a)) (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -348,6 +381,7 @@
   (uniq-orig x3)
   (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
     (enc x3 (pubk a)) (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -370,6 +404,7 @@
   (uniq-orig x3)
   (operation nonce-test (added-strand resp 2) x3 (1 0) (enc x3 (pubk a))
     (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -391,6 +426,7 @@
   (uniq-orig x1)
   (operation nonce-test (added-strand resp 2) x1 (0 2) (enc x1 (pubk a))
     (enc "okay" x3 x1 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1)
   (traces
     ((send (enc x1 (pubk a)))
       (send (cat (enc x1-0 x3 (pubk a)) (enc x1 x3 (pubk a))))
@@ -412,6 +448,7 @@
   (uniq-orig x3-0)
   (operation nonce-test (displaced 3 0 init 2) x3-0 (2 0)
     (enc x3-0 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x3-0 (pubk a)))
       (send (cat (enc x1-0 x3 (pubk a)) (enc x3-0 x3 (pubk a))))
@@ -422,6 +459,11 @@
   (label 18)
   (parent 13)
   (seen 20)
+  (seen-ops
+    (20
+      (operation nonce-test (displaced 3 1 resp 2) x3-0 (0 2)
+        (enc x3-0 (pubk a-0)) (enc "okay" y3 x3-0 (pubk a-0))
+        (enc x3-0 x3 (pubk a-0))) (strand-map 0 1 2)))
   (unrealized (0 2))
   (comment "4 in cohort - 3 not yet seen"))
 
@@ -435,6 +477,7 @@
   (uniq-orig x3)
   (operation nonce-test (displaced 3 0 init 2) x3 (2 0)
     (enc x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -456,6 +499,7 @@
   (uniq-orig x1)
   (operation nonce-test (displaced 3 0 init 2) x1 (2 0)
     (enc x1 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x1 (pubk a)))
       (send (cat (enc x1-0 x3 (pubk a)) (enc x1 x3 (pubk a))))
@@ -478,6 +522,7 @@
   (operation nonce-test (displaced 3 1 resp 2) x3-0 (0 2)
     (enc x3-0 (pubk a)) (enc "okay" y3 x3-0 (pubk a))
     (enc x3-0 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -487,6 +532,15 @@
   (label 21)
   (parent 18)
   (seen 19 27)
+  (seen-ops
+    (19
+      (operation nonce-test (displaced 3 2 resp 2) x3 (1 0)
+        (enc x3 (pubk a)) (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+      (strand-map 0 1 2))
+    (27
+      (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+        (enc x3 (pubk a)) (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+      (strand-map 0 1 2)))
   (unrealized (1 0))
   (comment "4 in cohort - 2 not yet seen"))
 
@@ -500,6 +554,7 @@
   (uniq-orig y3)
   (operation nonce-test (contracted (x1-0 y3) (x3-0 y3)) y3 (0 2)
     (enc y3 (pubk a)) (enc "okay" y3 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc y3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc y3 x3 (pubk a))))
@@ -509,6 +564,10 @@
   (label 22)
   (parent 18)
   (seen 28)
+  (seen-ops
+    (28
+      (operation nonce-test (contracted (a-0 a)) y3 (1 0)
+        (enc y3 (pubk a)) (enc y3 x3 (pubk a))) (strand-map 0 1 2)))
   (unrealized (1 0))
   (comment "4 in cohort - 3 not yet seen"))
 
@@ -525,6 +584,7 @@
   (operation nonce-test (added-strand resp 2) x3-0 (0 2)
     (enc x3-0 (pubk a)) (enc "okay" y3 x3-0 (pubk a))
     (enc x3-0 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x3-0 (pubk a)))
       (send (cat (enc x1-0 x3 (pubk a)) (enc x3-0 x3 (pubk a))))
@@ -536,6 +596,10 @@
   (label 23)
   (parent 18)
   (seen 18)
+  (seen-ops
+    (18
+      (operation nonce-test (displaced 4 0 init 2) x3-0 (3 0)
+        (enc x3-0 (pubk a))) (strand-map 0 1 2 2)))
   (unrealized (0 2) (3 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -550,6 +614,7 @@
   (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
     (enc x3 (pubk a)) (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
     (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -559,6 +624,8 @@
   (label 24)
   (parent 19)
   (seen 14)
+  (seen-ops
+    (14 (operation generalization deleted (2 0)) (strand-map 0 1)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -573,6 +640,7 @@
   (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
     (enc x3 (pubk a)) (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
     (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -582,6 +650,8 @@
   (label 25)
   (parent 19)
   (seen 15)
+  (seen-ops
+    (15 (operation generalization deleted (2 0)) (strand-map 0 1)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -598,6 +668,7 @@
   (operation nonce-test (added-strand resp 2) x3 (1 0) (enc x3 (pubk a))
     (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
     (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -608,6 +679,10 @@
   (label 26)
   (parent 19)
   (seen 19)
+  (seen-ops
+    (19
+      (operation nonce-test (displaced 4 0 init 2) x3 (3 0)
+        (enc x3 (pubk a))) (strand-map 0 1 2 2)))
   (unrealized (1 0) (3 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -622,6 +697,7 @@
   (operation nonce-test (displaced 3 1 resp 2) x1-0 (0 2)
     (enc x1-0 (pubk a)) (enc "okay" x3 x1-0 (pubk a))
     (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -631,6 +707,8 @@
   (label 27)
   (parent 20)
   (seen 14)
+  (seen-ops
+    (14 (operation generalization deleted (2 0)) (strand-map 0 1)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -645,6 +723,7 @@
   (operation nonce-test (displaced 3 2 resp 2) x1-0 (0 2)
     (enc x1-0 (pubk a)) (enc "okay" x3 x1-0 (pubk a))
     (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc y3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc y3 x3 (pubk a))))
@@ -671,6 +750,7 @@
   (operation nonce-test (added-strand resp 2) x1 (0 2) (enc x1 (pubk a))
     (enc "okay" x3 x1 (pubk a)) (enc "okay" y3 x1 (pubk a))
     (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x1 (pubk a)))
       (send (cat (enc x1-0 x3 (pubk a)) (enc x1 x3 (pubk a))))
@@ -681,6 +761,10 @@
   (label 29)
   (parent 20)
   (seen 20)
+  (seen-ops
+    (20
+      (operation nonce-test (displaced 4 0 init 2) x1 (3 0)
+        (enc x1 (pubk a))) (strand-map 0 1 2 2)))
   (unrealized (0 2) (3 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -694,6 +778,7 @@
   (uniq-orig x3)
   (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
     (enc x3 (pubk a)) (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -703,6 +788,8 @@
   (label 30)
   (parent 21)
   (seen 15)
+  (seen-ops
+    (15 (operation generalization deleted (2 0)) (strand-map 0 1)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -718,6 +805,7 @@
   (uniq-orig x3)
   (operation nonce-test (added-strand resp 2) x3 (1 0) (enc x3 (pubk a))
     (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -740,6 +828,7 @@
   (uniq-orig x3)
   (operation nonce-test (displaced 3 0 init 2) y3 (1 0)
     (enc y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -761,6 +850,7 @@
   (uniq-orig y3)
   (operation nonce-test (displaced 3 2 resp 2) y3 (1 0)
     (enc y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc y3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc y3 x3 (pubk a))))
@@ -770,6 +860,11 @@
   (label 33)
   (parent 22)
   (seen 37)
+  (seen-ops
+    (37
+      (operation nonce-test (displaced 3 2 resp 2) y3 (1 0)
+        (enc y3 (pubk a)) (enc "okay" y3 y3 (pubk a))
+        (enc y3 x3 (pubk a))) (strand-map 0 1 2)))
   (unrealized (1 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -785,6 +880,7 @@
   (uniq-orig y3)
   (operation nonce-test (added-strand resp 2) y3 (1 0) (enc y3 (pubk a))
     (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc y3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc y3 x3 (pubk a))))
@@ -809,6 +905,7 @@
   (uniq-orig x3)
   (operation nonce-test (displaced 4 0 init 2) x3 (3 0)
     (enc x3 (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -819,6 +916,12 @@
   (label 35)
   (parent 31)
   (seen 19)
+  (seen-ops
+    (19
+      (operation nonce-test (displaced 4 2 resp 2) x3 (1 0)
+        (enc x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a))
+        (enc x3 x3 (pubk a)) (enc x1-0 x3 (pubk a)))
+      (strand-map 0 1 2 2)))
   (unrealized (1 0))
   (comment "4 in cohort - 3 not yet seen"))
 
@@ -832,6 +935,7 @@
   (uniq-orig x3)
   (operation nonce-test (contracted (a-0 a)) x3 (1 0) (enc x3 (pubk a))
     (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -841,6 +945,8 @@
   (label 36)
   (parent 32)
   (seen 14)
+  (seen-ops
+    (14 (operation generalization deleted (2 0)) (strand-map 0 1)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -854,6 +960,7 @@
   (uniq-orig x3)
   (operation nonce-test (displaced 3 2 resp 2) x3 (1 0)
     (enc x3 (pubk a)) (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -877,6 +984,7 @@
   (uniq-orig x3)
   (operation nonce-test (added-strand resp 2) x3 (1 0) (enc x3 (pubk a))
     (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -899,6 +1007,7 @@
   (uniq-orig y3)
   (operation nonce-test (contracted (a-0 a)) y3 (1 0) (enc y3 (pubk a))
     (enc "okay" y3 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc y3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc y3 x3 (pubk a))))
@@ -908,6 +1017,9 @@
   (label 39)
   (parent 33)
   (seen 28)
+  (seen-ops
+    (28 (operation generalization weakened ((2 1) (1 0)))
+      (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -923,6 +1035,7 @@
   (uniq-orig y3)
   (operation nonce-test (added-strand resp 2) y3 (1 0) (enc y3 (pubk a))
     (enc "okay" y3 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc y3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc y3 x3 (pubk a))))
@@ -947,6 +1060,7 @@
   (uniq-orig y3)
   (operation nonce-test (displaced 4 0 init 2) y3 (3 0)
     (enc y3 (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc y3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc y3 x3 (pubk a))))
@@ -957,6 +1071,15 @@
   (label 41)
   (parent 34)
   (seen 47 48)
+  (seen-ops
+    (47
+      (operation nonce-test (displaced 4 0 init 2) y3-0 (1 0)
+        (enc y3-0 (pubk a)) (enc "okay" y3 y3-0 (pubk a))
+        (enc y3-0 x3 (pubk a))) (strand-map 0 1 2 3))
+    (48
+      (operation nonce-test (displaced 4 2 resp 2) y3 (1 0)
+        (enc y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
+        (enc y3 x3 (pubk a))) (strand-map 0 1 2 3)))
   (unrealized (1 0))
   (comment "4 in cohort - 2 not yet seen"))
 
@@ -973,6 +1096,7 @@
   (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
     (enc x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
     (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -983,6 +1107,8 @@
   (label 42)
   (parent 35)
   (seen 25)
+  (seen-ops
+    (25 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -999,6 +1125,7 @@
   (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
     (enc x3 (pubk a)) (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
     (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -1009,6 +1136,8 @@
   (label 43)
   (parent 35)
   (seen 24)
+  (seen-ops
+    (24 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1026,6 +1155,7 @@
   (operation nonce-test (added-strand resp 2) x3 (1 0) (enc x3 (pubk a))
     (enc "okay" y3-0 x3 (pubk a)) (enc x3 x3 (pubk a))
     (enc x1-0 x3 (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1-0 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -1037,6 +1167,10 @@
   (label 44)
   (parent 35)
   (seen 35)
+  (seen-ops
+    (35
+      (operation nonce-test (displaced 5 0 init 2) x3 (4 0)
+        (enc x3 (pubk a))) (strand-map 0 1 2 3 3)))
   (unrealized (1 0) (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1051,6 +1185,7 @@
   (operation nonce-test (contracted (a-0 a)) x3 (1 0) (enc x3 (pubk a))
     (enc "okay" x3 x3 (pubk a)) (enc x3 x3 (pubk a))
     (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -1060,6 +1195,8 @@
   (label 45)
   (parent 37)
   (seen 14)
+  (seen-ops
+    (14 (operation generalization deleted (2 0)) (strand-map 0 1)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1076,6 +1213,7 @@
   (operation nonce-test (added-strand resp 2) x3 (1 0) (enc x3 (pubk a))
     (enc "okay" x3 x3 (pubk a)) (enc x3 x3 (pubk a))
     (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -1100,6 +1238,7 @@
   (uniq-orig x3)
   (operation nonce-test (displaced 4 0 init 2) x3 (3 0)
     (enc x3 (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -1110,6 +1249,12 @@
   (label 47)
   (parent 38)
   (seen 51)
+  (seen-ops
+    (51
+      (operation nonce-test (displaced 4 2 resp 2) x3 (1 0)
+        (enc x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
+        (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+      (strand-map 0 1 2 3)))
   (unrealized (1 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -1125,6 +1270,7 @@
   (uniq-orig y3)
   (operation nonce-test (displaced 4 0 init 2) y3 (3 0)
     (enc y3 (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc y3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc y3 x3 (pubk a))))
@@ -1135,6 +1281,12 @@
   (label 48)
   (parent 40)
   (seen 37)
+  (seen-ops
+    (37
+      (operation nonce-test (displaced 4 3 resp 2) y3-0 (1 0)
+        (enc y3-0 (pubk a)) (enc "okay" y3-0 y3-0 (pubk a))
+        (enc "okay" y3 y3-0 (pubk a)) (enc y3-0 x3 (pubk a)))
+      (strand-map 0 1 2 2)))
   (unrealized (1 0))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -1150,6 +1302,7 @@
   (uniq-orig y3)
   (operation nonce-test (contracted (a-0 a)) y3 (1 0) (enc y3 (pubk a))
     (enc "okay" y3-0 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc y3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc y3 x3 (pubk a))))
@@ -1160,6 +1313,8 @@
   (label 49)
   (parent 41)
   (seen 28)
+  (seen-ops
+    (28 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1176,6 +1331,7 @@
   (uniq-orig y3)
   (operation nonce-test (added-strand resp 2) y3 (1 0) (enc y3 (pubk a))
     (enc "okay" y3-0 y3 (pubk a)) (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc y3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc y3 x3 (pubk a))))
@@ -1187,6 +1343,10 @@
   (label 50)
   (parent 41)
   (seen 41)
+  (seen-ops
+    (41
+      (operation nonce-test (displaced 5 0 init 2) y3 (4 0)
+        (enc y3 (pubk a))) (strand-map 0 1 2 3 3)))
   (unrealized (1 0) (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1202,6 +1362,7 @@
   (uniq-orig x3)
   (operation nonce-test (displaced 4 0 init 2) x3 (3 0)
     (enc x3 (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -1227,6 +1388,7 @@
   (operation nonce-test (contracted (a-0 a)) x3 (1 0) (enc x3 (pubk a))
     (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
     (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -1237,6 +1399,8 @@
   (label 52)
   (parent 47)
   (seen 24)
+  (seen-ops
+    (24 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1254,6 +1418,7 @@
   (operation nonce-test (added-strand resp 2) x3 (1 0) (enc x3 (pubk a))
     (enc "okay" y3 x3 (pubk a)) (enc x3 x3 (pubk a))
     (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -1265,6 +1430,10 @@
   (label 53)
   (parent 47)
   (seen 47)
+  (seen-ops
+    (47
+      (operation nonce-test (displaced 5 0 init 2) x3 (4 0)
+        (enc x3 (pubk a))) (strand-map 0 1 2 3 3)))
   (unrealized (1 0) (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1281,6 +1450,7 @@
   (operation nonce-test (contracted (a-0 a)) y3 (1 0) (enc y3 (pubk a))
     (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
     (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc y3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc y3 x3 (pubk a))))
@@ -1291,6 +1461,8 @@
   (label 54)
   (parent 48)
   (seen 39)
+  (seen-ops
+    (39 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1308,6 +1480,7 @@
   (operation nonce-test (added-strand resp 2) y3 (1 0) (enc y3 (pubk a))
     (enc "okay" y3 y3 (pubk a)) (enc "okay" y3-0 y3 (pubk a))
     (enc y3 x3 (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc y3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc y3 x3 (pubk a))))
@@ -1319,6 +1492,10 @@
   (label 55)
   (parent 48)
   (seen 48)
+  (seen-ops
+    (48
+      (operation nonce-test (displaced 5 0 init 2) y3 (4 0)
+        (enc y3 (pubk a))) (strand-map 0 1 2 3 3)))
   (unrealized (1 0) (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1335,6 +1512,7 @@
   (operation nonce-test (contracted (a-0 a)) x3 (1 0) (enc x3 (pubk a))
     (enc "okay" x3 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
     (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -1345,6 +1523,8 @@
   (label 56)
   (parent 51)
   (seen 24)
+  (seen-ops
+    (24 (operation generalization deleted (2 0)) (strand-map 0 1 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1362,6 +1542,7 @@
   (operation nonce-test (added-strand resp 2) x3 (1 0) (enc x3 (pubk a))
     (enc "okay" x3 x3 (pubk a)) (enc "okay" y3 x3 (pubk a))
     (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (strand-map 0 1 2 3)
   (traces
     ((send (enc x3 (pubk a)))
       (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
@@ -1373,6 +1554,10 @@
   (label 57)
   (parent 51)
   (seen 51)
+  (seen-ops
+    (51
+      (operation nonce-test (displaced 5 0 init 2) x3 (4 0)
+        (enc x3 (pubk a))) (strand-map 0 1 2 3 3)))
   (unrealized (1 0) (4 0))
   (comment "1 in cohort - 0 not yet seen"))
 
diff --git a/tst/wonthull3_shapes.tst b/tst/wonthull3_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/wonthull3_shapes.tst
@@ -0,0 +1,167 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/wonthull3.scm")
+
+(defprotocol wonthull3 basic
+  (defrole init
+    (vars (a name) (x1 x2 x3 x4 text))
+    (trace (send (enc x3 (pubk a)))
+      (send (cat (enc x1 x2 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a))))
+    (non-orig (privk a))
+    (uniq-orig x3))
+  (defrole resp
+    (vars (a name) (y1 y2 y3 text))
+    (trace (recv (enc y1 y2 (pubk a)))
+      (send (enc "okay" y3 y1 (pubk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wonthull3
+  (vars (x1 x2 x3 x4 text) (a name))
+  (defstrand init 3 (x1 x1) (x2 x2) (x3 x3) (x4 x4) (a a))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (traces
+    ((send (enc x3 (pubk a)))
+      (send (cat (enc x1 x2 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a)))))
+  (label 0)
+  (unrealized (0 2))
+  (origs (x3 (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull3
+  (vars (x1 x2 y3 text) (a name))
+  (defstrand init 3 (x1 x1) (x2 x2) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x2) (y3 y3) (a a))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (contracted (x3 y3) (x4 y3)) y3 (0 2)
+    (enc y3 (pubk a)) (enc "okay" y3 y3 (pubk a)) (enc y3 x2 (pubk a)))
+  (traces
+    ((send (enc y3 (pubk a)))
+      (send (cat (enc x1 x2 (pubk a)) (enc y3 x2 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x2 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 6)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (x1 x1) (x2 x2) (x3 y3) (x4 y3))))
+  (origs (y3 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol wonthull3 basic
+  (defrole init
+    (vars (a name) (x1 x2 x3 x4 text))
+    (trace (send (enc x3 (pubk a)))
+      (send (cat (enc x1 x2 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a))))
+    (non-orig (privk a))
+    (uniq-orig x3))
+  (defrole resp
+    (vars (a name) (y1 y2 y3 text))
+    (trace (recv (enc y1 y2 (pubk a)))
+      (send (enc "okay" y3 y1 (pubk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wonthull3
+  (vars (x1 x3 x1-0 x3-0 text) (a a-0 name))
+  (defstrand init 3 (x1 x1-0) (x2 x3) (x3 x3-0) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a-0))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
+  (non-orig (privk a))
+  (uniq-orig x3-0)
+  (traces
+    ((send (enc x3-0 (pubk a)))
+      (send (cat (enc x1-0 x3 (pubk a)) (enc x3-0 x3 (pubk a))))
+      (recv (enc "okay" x3-0 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a-0)))
+      (send (enc "okay" x3 x1 (pubk a-0)))))
+  (label 10)
+  (unrealized (0 2))
+  (origs (x3-0 (0 0)))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton wonthull3
+  (vars (x3 x1 text) (a name))
+  (defstrand init 3 (x1 x1) (x2 x3) (x3 x3) (x4 x3) (a a))
+  (defstrand resp 2 (y1 x3) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x3) (a-0 a)) x3 (1 0)
+    (enc x3 (pubk a)) (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (traces
+    ((send (enc x3 (pubk a)))
+      (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x3 (pubk a))))
+    ((recv (enc x3 x3 (pubk a))) (send (enc "okay" x3 x3 (pubk a)))))
+  (label 14)
+  (parent 10)
+  (realized)
+  (shape)
+  (maps ((0 1) ((x1 x3) (x3 x3) (a a) (x1-0 x1) (x3-0 x3) (a-0 a))))
+  (origs (x3 (0 0))))
+
+(defskeleton wonthull3
+  (vars (x3 x1 text) (a name))
+  (defstrand init 3 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
+  (non-orig (privk a))
+  (uniq-orig x3)
+  (operation nonce-test (contracted (x1-0 x1) (a-0 a)) x3 (1 0)
+    (enc x3 (pubk a)) (enc x3 x3 (pubk a)) (enc x1 x3 (pubk a)))
+  (traces
+    ((send (enc x3 (pubk a)))
+      (send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a)))))
+  (label 15)
+  (parent 10)
+  (realized)
+  (shape)
+  (maps ((0 1) ((x1 x1) (x3 x3) (a a) (x1-0 x1) (x3-0 x3) (a-0 a))))
+  (origs (x3 (0 0))))
+
+(defskeleton wonthull3
+  (vars (x3 x1 y3 text) (a name))
+  (defstrand init 3 (x1 x1) (x2 x3) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 x3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x3) (y3 y3) (a a))
+  (precedes ((0 1) (1 0)) ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (0 2)))
+  (non-orig (privk a))
+  (uniq-orig y3)
+  (operation nonce-test (displaced 3 2 resp 2) x1-0 (0 2)
+    (enc x1-0 (pubk a)) (enc "okay" x3 x1-0 (pubk a))
+    (enc "okay" y3 x1-0 (pubk a)) (enc x1-0 x3 (pubk a)))
+  (traces
+    ((send (enc y3 (pubk a)))
+      (send (cat (enc x1 x3 (pubk a)) (enc y3 x3 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" x3 y3 (pubk a))))
+    ((recv (enc y3 x3 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 28)
+  (parent 10)
+  (realized)
+  (shape)
+  (maps ((0 1) ((x1 y3) (x3 x3) (a a) (x1-0 x1) (x3-0 y3) (a-0 a))))
+  (origs (y3 (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/wonthull_shapes.tst b/tst/wonthull_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/wonthull_shapes.tst
@@ -0,0 +1,100 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald wonthull (bound 9))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/wonthull.scm")
+
+(comment "Strand count bounded at 9")
+
+(defprotocol wonthull basic
+  (defrole init
+    (vars (a name) (x1 x2 x3 x4 text))
+    (trace (send (cat (enc x1 x2 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a))))
+    (non-orig (privk a))
+    (uniq-orig x1 x2 x3))
+  (defrole resp
+    (vars (a name) (y1 y2 y3 text))
+    (trace (recv (enc y1 y2 (pubk a)))
+      (send (enc "okay" y3 y1 (pubk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wonthull
+  (vars (x1 x2 x3 x4 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 x3) (x4 x4) (a a))
+  (non-orig (privk a))
+  (uniq-orig x1 x2 x3)
+  (traces
+    ((send (cat (enc x1 x2 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (x3 (0 0)) (x2 (0 0)) (x1 (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton wonthull
+  (vars (x1 x2 y3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x2) (x3 y3) (x4 y3) (a a))
+  (defstrand resp 2 (y1 y3) (y2 x2) (y3 y3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1 x2 y3)
+  (operation nonce-test (contracted (x3 y3) (x4 y3)) y3 (0 1)
+    (enc "okay" y3 y3 (pubk a)) (enc y3 x2 (pubk a)))
+  (traces
+    ((send (cat (enc x1 x2 (pubk a)) (enc y3 x2 (pubk a))))
+      (recv (enc "okay" y3 y3 (pubk a))))
+    ((recv (enc y3 x2 (pubk a))) (send (enc "okay" y3 y3 (pubk a)))))
+  (label 4)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (x1 x1) (x2 x2) (x3 y3) (x4 y3))))
+  (origs (y3 (0 0)) (x2 (0 0)) (x1 (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol wonthull basic
+  (defrole init
+    (vars (a name) (x1 x2 x3 x4 text))
+    (trace (send (cat (enc x1 x2 (pubk a)) (enc x3 x2 (pubk a))))
+      (recv (enc "okay" x3 x4 (pubk a))))
+    (non-orig (privk a))
+    (uniq-orig x1 x2 x3))
+  (defrole resp
+    (vars (a name) (y1 y2 y3 text))
+    (trace (recv (enc y1 y2 (pubk a)))
+      (send (enc "okay" y3 y1 (pubk a)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton wonthull
+  (vars (x1 x3 text) (a name))
+  (defstrand init 2 (x1 x1) (x2 x3) (x3 x3) (x4 x1) (a a))
+  (defstrand resp 2 (y1 x1) (y2 x3) (y3 x3) (a a))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (privk a))
+  (uniq-orig x1 x3)
+  (traces
+    ((send (cat (enc x1 x3 (pubk a)) (enc x3 x3 (pubk a))))
+      (recv (enc "okay" x3 x1 (pubk a))))
+    ((recv (enc x1 x3 (pubk a))) (send (enc "okay" x3 x1 (pubk a)))))
+  (label 8)
+  (realized)
+  (shape)
+  (maps ((0 1) ((a a) (x1 x1) (x3 x3))))
+  (origs (x3 (0 0)) (x1 (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/woolam.tst b/tst/woolam.tst
--- a/tst/woolam.tst
+++ b/tst/woolam.tst
@@ -1,6 +1,6 @@
 (herald "Woo-Lam Protocol")
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/woolam.scm")
 
 (defprotocol woolam basic
@@ -49,6 +49,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand init 3) (enc n (ltk a s))
     (0 2))
+  (strand-map 0)
   (traces
     ((recv a) (send n) (recv (enc n (ltk a s)))
       (send (enc a (enc n (ltk a s)) (ltk b s)))
@@ -69,6 +70,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand serv 2) (enc a n (ltk b s))
     (0 4))
+  (strand-map 0 1)
   (traces
     ((recv a) (send n) (recv (enc n (ltk a s)))
       (send (enc a (enc n (ltk a s)) (ltk b s)))
@@ -91,6 +93,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 3 0 resp 4)
     (enc a (enc n (ltk a s)) (ltk b s)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv a) (send n) (recv (enc n (ltk a s)))
       (send (enc a (enc n (ltk a s)) (ltk b s)))
@@ -151,6 +154,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand init 3) (enc n (ltk b s))
     (0 4))
+  (strand-map 0)
   (traces
     ((recv a) (send n) (recv m) (send (enc a m (ltk b s)))
       (recv (enc n (ltk b s))))
@@ -171,6 +175,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand serv 2) (enc n (ltk b s))
     (0 4))
+  (strand-map 0)
   (traces
     ((recv a) (send n) (recv m) (send (enc a m (ltk b s)))
       (recv (enc n (ltk b s))))
@@ -190,6 +195,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 2 0 resp 4)
     (enc a-0 (enc n (ltk a-0 s)) (ltk b s)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv a) (send n) (recv (enc n (ltk a s)))
       (send (enc a (enc n (ltk a s)) (ltk b s)))
@@ -211,6 +217,7 @@
   (uniq-orig n n-0)
   (operation encryption-test (added-strand resp 4)
     (enc a-0 (enc n (ltk a-0 s)) (ltk b s)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv a) (send n) (recv m) (send (enc a m (ltk b s)))
       (recv (enc n (ltk b s))))
@@ -235,6 +242,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand init 3) (enc n (ltk a s))
     (0 2))
+  (strand-map 0 1)
   (traces
     ((recv a) (send n) (recv (enc n (ltk a s)))
       (send (enc a (enc n (ltk a s)) (ltk b s)))
@@ -259,6 +267,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand serv 2) (enc n (ltk a s))
     (0 2))
+  (strand-map 0 1)
   (traces
     ((recv a) (send n) (recv (enc n (ltk a s)))
       (send (enc a (enc n (ltk a s)) (ltk b s)))
@@ -284,6 +293,7 @@
   (uniq-orig n n-0)
   (operation encryption-test (added-strand resp 4)
     (enc a-0 (enc n (ltk a-0 s)) (ltk a s)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv a) (send n) (recv (enc n (ltk a s)))
       (send (enc a (enc n (ltk a s)) (ltk b s)))
@@ -345,6 +355,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 1 0 resp 4) (enc a n (ltk b s))
     (0 4))
+  (strand-map 0)
   (traces
     ((recv a) (send n) (recv (cat a n))
       (send (cat a b (enc a n (ltk b s)))) (recv (enc a n (ltk b s)))))
@@ -364,6 +375,7 @@
   (uniq-orig n n-0)
   (operation encryption-test (added-strand resp 4) (enc a n (ltk b s))
     (0 4))
+  (strand-map 0)
   (traces
     ((recv a) (send n) (recv m) (send (cat a b (enc m (ltk b s))))
       (recv (enc a n (ltk b s))))
@@ -385,6 +397,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand serv 2) (enc a n (ltk b s))
     (0 4))
+  (strand-map 0)
   (traces
     ((recv a) (send n) (recv m) (send (cat a b (enc m (ltk b s))))
       (recv (enc a n (ltk b s))))
@@ -404,6 +417,7 @@
   (uniq-orig n)
   (operation encryption-test (displaced 2 0 resp 4)
     (enc (enc n (ltk a s)) (ltk b s)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv a) (send n) (recv (enc n (ltk a s)))
       (send (cat a b (enc (enc n (ltk a s)) (ltk b s))))
@@ -425,6 +439,7 @@
   (uniq-orig n n-0)
   (operation encryption-test (added-strand resp 4)
     (enc (enc n (ltk a s)) (ltk b s)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv a) (send n) (recv m) (send (cat a b (enc m (ltk b s))))
       (recv (enc a n (ltk b s))))
@@ -447,6 +462,7 @@
   (uniq-orig n)
   (operation encryption-test (added-strand init 3) (enc n (ltk a s))
     (0 2))
+  (strand-map 0 1)
   (traces
     ((recv a) (send n) (recv (enc n (ltk a s)))
       (send (cat a b (enc (enc n (ltk a s)) (ltk b s))))
@@ -471,6 +487,7 @@
   (uniq-orig n n-0)
   (operation encryption-test (added-strand resp 4) (enc n (ltk a s))
     (0 2))
+  (strand-map 0 1)
   (traces
     ((recv a) (send n) (recv (enc n (ltk a s)))
       (send (cat a b (enc (enc n (ltk a s)) (ltk b s))))
@@ -497,6 +514,7 @@
   (uniq-orig n n-0)
   (operation encryption-test (added-strand init 3) (enc n (ltk a s))
     (2 2))
+  (strand-map 0 1 2)
   (traces
     ((recv a) (send n) (recv m) (send (cat a b (enc m (ltk b s))))
       (recv (enc a n (ltk b s))))
@@ -522,6 +540,7 @@
   (uniq-orig n n-0)
   (operation encryption-test (displaced 3 0 resp 4) (enc n (ltk a-0 s))
     (2 2))
+  (strand-map 0 1 2)
   (traces
     ((recv b) (send n) (recv n) (send (cat b b (enc n (ltk b s))))
       (recv (enc b n (ltk b s))))
@@ -547,6 +566,7 @@
   (uniq-orig n n-0 n-1)
   (operation encryption-test (added-strand resp 4) (enc n (ltk a s))
     (2 2))
+  (strand-map 0 1 2)
   (traces
     ((recv a) (send n) (recv m) (send (cat a b (enc m (ltk b s))))
       (recv (enc a n (ltk b s))))
diff --git a/tst/woolam_shapes.tst b/tst/woolam_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/woolam_shapes.tst
@@ -0,0 +1,406 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Woo-Lam Protocol")
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/woolam.scm")
+
+(defprotocol woolam basic
+  (defrole init
+    (vars (a s name) (n text))
+    (trace (send a) (recv n) (send (enc n (ltk a s))))
+    (non-orig (ltk a s)))
+  (defrole resp
+    (vars (a s b name) (n text))
+    (trace (recv a) (send n) (recv (enc n (ltk a s)))
+      (send (enc a (enc n (ltk a s)) (ltk b s)))
+      (recv (enc a n (ltk b s))))
+    (non-orig (ltk b s))
+    (uniq-orig n))
+  (defrole serv
+    (vars (a s b name) (n text))
+    (trace (recv (enc a (enc n (ltk a s)) (ltk b s)))
+      (send (enc a n (ltk b s)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton woolam
+  (vars (n text) (a s b name))
+  (defstrand resp 5 (n n) (a a) (s s) (b b))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig n)
+  (traces
+    ((recv a) (send n) (recv (enc n (ltk a s)))
+      (send (enc a (enc n (ltk a s)) (ltk b s)))
+      (recv (enc a n (ltk b s)))))
+  (label 0)
+  (unrealized (0 2) (0 4))
+  (origs (n (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton woolam
+  (vars (n text) (a s b name))
+  (defstrand resp 5 (n n) (a a) (s s) (b b))
+  (defstrand init 3 (n n) (a a) (s s))
+  (defstrand serv 2 (n n) (a a) (s s) (b b))
+  (precedes ((0 1) (1 1)) ((0 3) (2 0)) ((1 2) (0 2)) ((2 1) (0 4)))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig n)
+  (operation encryption-test (displaced 3 0 resp 4)
+    (enc a (enc n (ltk a s)) (ltk b s)) (2 0))
+  (traces
+    ((recv a) (send n) (recv (enc n (ltk a s)))
+      (send (enc a (enc n (ltk a s)) (ltk b s)))
+      (recv (enc a n (ltk b s))))
+    ((send a) (recv n) (send (enc n (ltk a s))))
+    ((recv (enc a (enc n (ltk a s)) (ltk b s)))
+      (send (enc a n (ltk b s)))))
+  (label 3)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (s s) (b b) (n n))))
+  (origs (n (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol woolam-msg basic
+  (defrole init
+    (vars (a s name) (n text))
+    (trace (send a) (recv n) (send (enc n (ltk a s))))
+    (non-orig (ltk a s)))
+  (defrole resp
+    (vars (a s b name) (n text) (m mesg))
+    (trace (recv a) (send n) (recv m) (send (enc a m (ltk b s)))
+      (recv (enc n (ltk b s))))
+    (non-orig (ltk b s))
+    (uniq-orig n))
+  (defrole serv
+    (vars (a s b name) (n text))
+    (trace (recv (enc a (enc n (ltk a s)) (ltk b s)))
+      (send (enc n (ltk b s)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton woolam-msg
+  (vars (m mesg) (n text) (a s b name))
+  (defstrand resp 5 (m m) (n n) (a a) (s s) (b b))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig n)
+  (traces
+    ((recv a) (send n) (recv m) (send (enc a m (ltk b s)))
+      (recv (enc n (ltk b s)))))
+  (label 4)
+  (unrealized (0 4))
+  (origs (n (0 1)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton woolam-msg
+  (vars (m mesg) (n text) (a s b name))
+  (defstrand resp 5 (m m) (n n) (a a) (s s) (b b))
+  (defstrand init 3 (n n) (a b) (s s))
+  (precedes ((0 1) (1 1)) ((1 2) (0 4)))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig n)
+  (operation encryption-test (added-strand init 3) (enc n (ltk b s))
+    (0 4))
+  (traces
+    ((recv a) (send n) (recv m) (send (enc a m (ltk b s)))
+      (recv (enc n (ltk b s))))
+    ((send b) (recv n) (send (enc n (ltk b s)))))
+  (label 5)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (s s) (b b) (n n) (m m))))
+  (origs (n (0 1))))
+
+(defskeleton woolam-msg
+  (vars (m mesg) (n n-0 text) (a s b a-0 name))
+  (defstrand resp 5 (m m) (n n) (a a) (s s) (b b))
+  (defstrand serv 2 (n n) (a a-0) (s s) (b b))
+  (defstrand resp 4 (m (enc n (ltk a-0 s))) (n n-0) (a a-0) (s s) (b b))
+  (precedes ((0 1) (2 2)) ((1 1) (0 4)) ((2 3) (1 0)))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig n n-0)
+  (operation encryption-test (added-strand resp 4)
+    (enc a-0 (enc n (ltk a-0 s)) (ltk b s)) (1 0))
+  (traces
+    ((recv a) (send n) (recv m) (send (enc a m (ltk b s)))
+      (recv (enc n (ltk b s))))
+    ((recv (enc a-0 (enc n (ltk a-0 s)) (ltk b s)))
+      (send (enc n (ltk b s))))
+    ((recv a-0) (send n-0) (recv (enc n (ltk a-0 s)))
+      (send (enc a-0 (enc n (ltk a-0 s)) (ltk b s)))))
+  (label 8)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (s s) (b b) (n n) (m m))))
+  (origs (n-0 (2 1)) (n (0 1))))
+
+(defskeleton woolam-msg
+  (vars (n text) (a s b name))
+  (defstrand resp 5 (m (enc n (ltk a s))) (n n) (a a) (s s) (b b))
+  (defstrand serv 2 (n n) (a a) (s s) (b b))
+  (defstrand init 3 (n n) (a a) (s s))
+  (precedes ((0 1) (2 1)) ((0 3) (1 0)) ((1 1) (0 4)) ((2 2) (0 2)))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig n)
+  (operation encryption-test (added-strand init 3) (enc n (ltk a s))
+    (0 2))
+  (traces
+    ((recv a) (send n) (recv (enc n (ltk a s)))
+      (send (enc a (enc n (ltk a s)) (ltk b s)))
+      (recv (enc n (ltk b s))))
+    ((recv (enc a (enc n (ltk a s)) (ltk b s)))
+      (send (enc n (ltk b s))))
+    ((send a) (recv n) (send (enc n (ltk a s)))))
+  (label 9)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (s s) (b b) (n n) (m (enc n (ltk a s))))))
+  (origs (n (0 1))))
+
+(defskeleton woolam-msg
+  (vars (n n-0 text) (a s b a-0 name))
+  (defstrand resp 5 (m (enc n (ltk a s))) (n n) (a a) (s s) (b b))
+  (defstrand serv 2 (n n) (a a) (s s) (b b))
+  (defstrand serv 2 (n n) (a a-0) (s s) (b a))
+  (defstrand resp 4 (m (enc n (ltk a-0 s))) (n n-0) (a a-0) (s s) (b a))
+  (precedes ((0 1) (3 2)) ((0 3) (1 0)) ((1 1) (0 4)) ((2 1) (0 2))
+    ((3 3) (2 0)))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig n n-0)
+  (operation encryption-test (added-strand resp 4)
+    (enc a-0 (enc n (ltk a-0 s)) (ltk a s)) (2 0))
+  (traces
+    ((recv a) (send n) (recv (enc n (ltk a s)))
+      (send (enc a (enc n (ltk a s)) (ltk b s)))
+      (recv (enc n (ltk b s))))
+    ((recv (enc a (enc n (ltk a s)) (ltk b s)))
+      (send (enc n (ltk b s))))
+    ((recv (enc a-0 (enc n (ltk a-0 s)) (ltk a s)))
+      (send (enc n (ltk a s))))
+    ((recv a-0) (send n-0) (recv (enc n (ltk a-0 s)))
+      (send (enc a-0 (enc n (ltk a-0 s)) (ltk a s)))))
+  (label 11)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (s s) (b b) (n n) (m (enc n (ltk a s))))))
+  (origs (n-0 (3 1)) (n (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol woolam-msg1 basic
+  (defrole init
+    (vars (a s name) (n text))
+    (trace (send a) (recv n) (send (enc n (ltk a s))))
+    (non-orig (ltk a s)))
+  (defrole resp
+    (vars (a s b name) (n text) (m mesg))
+    (trace (recv a) (send n) (recv m) (send (cat a b (enc m (ltk b s))))
+      (recv (enc a n (ltk b s))))
+    (non-orig (ltk b s))
+    (uniq-orig n))
+  (defrole serv
+    (vars (a s b name) (n text))
+    (trace (recv (cat a b (enc (enc n (ltk a s)) (ltk b s))))
+      (send (enc a n (ltk b s)))))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton woolam-msg1
+  (vars (m mesg) (n text) (a s b name))
+  (defstrand resp 5 (m m) (n n) (a a) (s s) (b b))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig n)
+  (traces
+    ((recv a) (send n) (recv m) (send (cat a b (enc m (ltk b s))))
+      (recv (enc a n (ltk b s)))))
+  (label 12)
+  (unrealized (0 4))
+  (origs (n (0 1)))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton woolam-msg1
+  (vars (n text) (a s b name))
+  (defstrand resp 5 (m (cat a n)) (n n) (a a) (s s) (b b))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig n)
+  (operation encryption-test (displaced 1 0 resp 4) (enc a n (ltk b s))
+    (0 4))
+  (traces
+    ((recv a) (send n) (recv (cat a n))
+      (send (cat a b (enc a n (ltk b s)))) (recv (enc a n (ltk b s)))))
+  (label 13)
+  (parent 12)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (s s) (b b) (n n) (m (cat a n)))))
+  (origs (n (0 1))))
+
+(defskeleton woolam-msg1
+  (vars (m mesg) (n n-0 text) (a s b a-0 name))
+  (defstrand resp 5 (m m) (n n) (a a) (s s) (b b))
+  (defstrand resp 4 (m (cat a n)) (n n-0) (a a-0) (s s) (b b))
+  (precedes ((0 1) (1 2)) ((1 3) (0 4)))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig n n-0)
+  (operation encryption-test (added-strand resp 4) (enc a n (ltk b s))
+    (0 4))
+  (traces
+    ((recv a) (send n) (recv m) (send (cat a b (enc m (ltk b s))))
+      (recv (enc a n (ltk b s))))
+    ((recv a-0) (send n-0) (recv (cat a n))
+      (send (cat a-0 b (enc a n (ltk b s))))))
+  (label 14)
+  (parent 12)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (s s) (b b) (n n) (m m))))
+  (origs (n-0 (1 1)) (n (0 1))))
+
+(defskeleton woolam-msg1
+  (vars (n text) (a s b name))
+  (defstrand resp 5 (m (enc n (ltk a s))) (n n) (a a) (s s) (b b))
+  (defstrand serv 2 (n n) (a a) (s s) (b b))
+  (defstrand init 3 (n n) (a a) (s s))
+  (precedes ((0 1) (2 1)) ((0 3) (1 0)) ((1 1) (0 4)) ((2 2) (0 2)))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig n)
+  (operation encryption-test (added-strand init 3) (enc n (ltk a s))
+    (0 2))
+  (traces
+    ((recv a) (send n) (recv (enc n (ltk a s)))
+      (send (cat a b (enc (enc n (ltk a s)) (ltk b s))))
+      (recv (enc a n (ltk b s))))
+    ((recv (cat a b (enc (enc n (ltk a s)) (ltk b s))))
+      (send (enc a n (ltk b s))))
+    ((send a) (recv n) (send (enc n (ltk a s)))))
+  (label 18)
+  (parent 12)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (s s) (b b) (n n) (m (enc n (ltk a s))))))
+  (origs (n (0 1))))
+
+(defskeleton woolam-msg1
+  (vars (n n-0 text) (a s b a-0 name))
+  (defstrand resp 5 (m (enc n (ltk a s))) (n n) (a a) (s s) (b b))
+  (defstrand serv 2 (n n) (a a) (s s) (b b))
+  (defstrand resp 4 (m n) (n n-0) (a a-0) (s s) (b a))
+  (precedes ((0 1) (2 2)) ((0 3) (1 0)) ((1 1) (0 4)) ((2 3) (0 2)))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig n n-0)
+  (operation encryption-test (added-strand resp 4) (enc n (ltk a s))
+    (0 2))
+  (traces
+    ((recv a) (send n) (recv (enc n (ltk a s)))
+      (send (cat a b (enc (enc n (ltk a s)) (ltk b s))))
+      (recv (enc a n (ltk b s))))
+    ((recv (cat a b (enc (enc n (ltk a s)) (ltk b s))))
+      (send (enc a n (ltk b s))))
+    ((recv a-0) (send n-0) (recv n)
+      (send (cat a-0 a (enc n (ltk a s))))))
+  (label 19)
+  (parent 12)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (s s) (b b) (n n) (m (enc n (ltk a s))))))
+  (origs (n-0 (2 1)) (n (0 1))))
+
+(defskeleton woolam-msg1
+  (vars (m mesg) (n n-0 text) (a s b a-0 name))
+  (defstrand resp 5 (m m) (n n) (a a) (s s) (b b))
+  (defstrand serv 2 (n n) (a a) (s s) (b b))
+  (defstrand resp 4 (m (enc n (ltk a s))) (n n-0) (a a-0) (s s) (b b))
+  (defstrand init 3 (n n) (a a) (s s))
+  (precedes ((0 1) (3 1)) ((1 1) (0 4)) ((2 3) (1 0)) ((3 2) (2 2)))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig n n-0)
+  (operation encryption-test (added-strand init 3) (enc n (ltk a s))
+    (2 2))
+  (traces
+    ((recv a) (send n) (recv m) (send (cat a b (enc m (ltk b s))))
+      (recv (enc a n (ltk b s))))
+    ((recv (cat a b (enc (enc n (ltk a s)) (ltk b s))))
+      (send (enc a n (ltk b s))))
+    ((recv a-0) (send n-0) (recv (enc n (ltk a s)))
+      (send (cat a-0 b (enc (enc n (ltk a s)) (ltk b s)))))
+    ((send a) (recv n) (send (enc n (ltk a s)))))
+  (label 20)
+  (parent 12)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (s s) (b b) (n n) (m m))))
+  (origs (n-0 (2 1)) (n (0 1))))
+
+(defskeleton woolam-msg1
+  (vars (n n-0 text) (s b a name))
+  (defstrand resp 5 (m n) (n n) (a b) (s s) (b b))
+  (defstrand serv 2 (n n) (a b) (s s) (b b))
+  (defstrand resp 4 (m (enc n (ltk b s))) (n n-0) (a a) (s s) (b b))
+  (precedes ((0 3) (2 2)) ((1 1) (0 4)) ((2 3) (1 0)))
+  (non-orig (ltk b s))
+  (uniq-orig n n-0)
+  (operation encryption-test (displaced 3 0 resp 4) (enc n (ltk a-0 s))
+    (2 2))
+  (traces
+    ((recv b) (send n) (recv n) (send (cat b b (enc n (ltk b s))))
+      (recv (enc b n (ltk b s))))
+    ((recv (cat b b (enc (enc n (ltk b s)) (ltk b s))))
+      (send (enc b n (ltk b s))))
+    ((recv a) (send n-0) (recv (enc n (ltk b s)))
+      (send (cat a b (enc (enc n (ltk b s)) (ltk b s))))))
+  (label 21)
+  (parent 12)
+  (realized)
+  (shape)
+  (maps ((0) ((a b) (s s) (b b) (n n) (m n))))
+  (origs (n (0 1)) (n-0 (2 1))))
+
+(defskeleton woolam-msg1
+  (vars (m mesg) (n n-0 n-1 text) (a s b a-0 a-1 name))
+  (defstrand resp 5 (m m) (n n) (a a) (s s) (b b))
+  (defstrand serv 2 (n n) (a a) (s s) (b b))
+  (defstrand resp 4 (m (enc n (ltk a s))) (n n-0) (a a-0) (s s) (b b))
+  (defstrand resp 4 (m n) (n n-1) (a a-1) (s s) (b a))
+  (precedes ((0 1) (3 2)) ((1 1) (0 4)) ((2 3) (1 0)) ((3 3) (2 2)))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig n n-0 n-1)
+  (operation encryption-test (added-strand resp 4) (enc n (ltk a s))
+    (2 2))
+  (traces
+    ((recv a) (send n) (recv m) (send (cat a b (enc m (ltk b s))))
+      (recv (enc a n (ltk b s))))
+    ((recv (cat a b (enc (enc n (ltk a s)) (ltk b s))))
+      (send (enc a n (ltk b s))))
+    ((recv a-0) (send n-0) (recv (enc n (ltk a s)))
+      (send (cat a-0 b (enc (enc n (ltk a s)) (ltk b s)))))
+    ((recv a-1) (send n-1) (recv n)
+      (send (cat a-1 a (enc n (ltk a s))))))
+  (label 22)
+  (parent 12)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (s s) (b b) (n n) (m m))))
+  (origs (n-1 (3 1)) (n-0 (2 1)) (n (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/wrap_decrypt.tst b/tst/wrap_decrypt.tst
deleted file mode 100644
# file too large to diff: tst/wrap_decrypt.tst
diff --git a/tst/wrap_decrypt_shapes.tst b/tst/wrap_decrypt_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/wrap_decrypt_shapes.tst
@@ -0,0 +1,539 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald wrap-decrypt (bound 8))
+
+(comment "CPSA 4.3.0")
+
+(comment "All input read from tst/wrap_decrypt.lsp")
+
+(defprotocol wrap-decrypt basic
+  (defrole make
+    (vars (k skey) (old mesg) (lk locn))
+    (trace (load lk old) (stor lk (cat k "init")) (send (hash k)))
+    (uniq-gen k))
+  (defrole set-wrap
+    (vars (k skey) (cur mesg) (lk locn))
+    (trace (load lk (cat k cur)) (stor lk (cat k "wrap")))
+    (gen-st (cat k cur))
+    (facts (neq cur "wrap")))
+  (defrole set-decrypt
+    (vars (k skey) (cur mesg) (lk locn))
+    (trace (load lk (cat k cur)) (stor lk (cat k "decrypt")))
+    (gen-st (cat k cur))
+    (facts (neq cur "decrypt")))
+  (defrole wrap
+    (vars (k0 k1 skey) (lk locn) (cur mesg))
+    (trace (recv (hash k0)) (recv (hash k1)) (load lk (cat k0 cur))
+      (load lk (cat k1 "wrap")) (send (enc k0 k1)))
+    (gen-st (cat k0 cur))
+    (gen-st (cat k1 "wrap")))
+  (defrole decrypt
+    (vars (x mesg) (k skey) (lk locn))
+    (trace (recv (enc x k)) (recv (hash k)) (load lk (cat k "decrypt"))
+      (send x))
+    (gen-st (cat k "decrypt")))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule trRl_make-at-1
+    (forall ((z strd)) (implies (p "make" z 2) (trans z 1))))
+  (defrule trRl_make-at-0
+    (forall ((z strd)) (implies (p "make" z 1) (trans z 0))))
+  (defrule fact-set-wrap-neq0
+    (forall ((z strd) (cur mesg))
+      (implies
+        (and (p "set-wrap" z 1) (p "set-wrap" "cur" z cur))
+        (fact neq cur "wrap"))))
+  (defrule gen-st-set-wrap-0
+    (forall ((z strd) (cur mesg) (k skey))
+      (implies
+        (and (p "set-wrap" z 1) (p "set-wrap" "cur" z cur)
+          (p "set-wrap" "k" z k))
+        (gen-st (cat k cur)))))
+  (defrule trRl_set-wrap-at-1
+    (forall ((z strd)) (implies (p "set-wrap" z 2) (trans z 1))))
+  (defrule trRl_set-wrap-at-0
+    (forall ((z strd)) (implies (p "set-wrap" z 1) (trans z 0))))
+  (defrule fact-set-decrypt-neq0
+    (forall ((z strd) (cur mesg))
+      (implies
+        (and (p "set-decrypt" z 1) (p "set-decrypt" "cur" z cur))
+        (fact neq cur "decrypt"))))
+  (defrule gen-st-set-decrypt-0
+    (forall ((z strd) (cur mesg) (k skey))
+      (implies
+        (and (p "set-decrypt" z 1) (p "set-decrypt" "cur" z cur)
+          (p "set-decrypt" "k" z k))
+        (gen-st (cat k cur)))))
+  (defrule trRl_set-decrypt-at-1
+    (forall ((z strd)) (implies (p "set-decrypt" z 2) (trans z 1))))
+  (defrule trRl_set-decrypt-at-0
+    (forall ((z strd)) (implies (p "set-decrypt" z 1) (trans z 0))))
+  (defrule gen-st-wrap-1
+    (forall ((z strd) (cur mesg) (k0 skey))
+      (implies
+        (and (p "wrap" z 3) (p "wrap" "cur" z cur) (p "wrap" "k0" z k0))
+        (gen-st (cat k0 cur)))))
+  (defrule gen-st-wrap-0
+    (forall ((z strd) (k1 skey))
+      (implies
+        (and (p "wrap" z 2) (p "wrap" "k1" z k1))
+        (gen-st (cat k1 "wrap")))))
+  (defrule gen-st-decrypt-0
+    (forall ((z strd) (k skey))
+      (implies
+        (and (p "decrypt" z 1) (p "decrypt" "k" z k))
+        (gen-st (cat k "decrypt")))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wrap-decrypt
+  (vars (old old-0 mesg)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pt-7 pval) (k kp skey)
+    (lk lk-0 lk-1 lk-2 lk-3 lk-4 locn))
+  (deflistener k)
+  (defstrand decrypt 4 (x k) (k kp) (lk lk))
+  (defstrand make 2 (old old) (k kp) (lk lk-0))
+  (defstrand set-decrypt 1 (cur "wrap") (k kp) (lk lk-1))
+  (defstrand set-wrap 1 (cur "init") (k kp) (lk lk-2))
+  (defstrand wrap 5 (cur "init") (k0 k) (k1 kp) (lk lk-3))
+  (defstrand make 2 (old old-0) (k k) (lk lk-4))
+  (traces ((recv k) (send k))
+    ((recv (enc k kp)) (recv (hash kp)) (load lk (cat pt kp "decrypt"))
+      (send k))
+    ((load lk-0 (cat pt-0 old)) (stor lk-0 (cat pt-1 kp "init")))
+    ((load lk-1 (cat pt-2 kp "wrap")))
+    ((load lk-2 (cat pt-3 kp "init")))
+    ((recv (hash k)) (recv (hash kp)) (load lk-3 (cat pt-4 k "init"))
+      (load lk-3 (cat pt-5 kp "wrap")) (send (enc k kp)))
+    ((load lk-4 (cat pt-6 old-0)) (stor lk-4 (cat pt-7 k "init"))))
+  (label 0)
+  (realized)
+  (origs (pt-7 (6 1)) (pt-1 (2 1)))
+  (comment "Not closed under rules"))
+
+(comment "Nothing left to do")
+
+(defprotocol wrap-decrypt basic
+  (defrole make
+    (vars (k skey) (old mesg) (lk locn))
+    (trace (load lk old) (stor lk (cat k "init")) (send (hash k)))
+    (uniq-gen k))
+  (defrole set-wrap
+    (vars (k skey) (cur mesg) (lk locn))
+    (trace (load lk (cat k cur)) (stor lk (cat k "wrap")))
+    (gen-st (cat k cur))
+    (facts (neq cur "wrap")))
+  (defrole set-decrypt
+    (vars (k skey) (cur mesg) (lk locn))
+    (trace (load lk (cat k cur)) (stor lk (cat k "decrypt")))
+    (gen-st (cat k cur))
+    (facts (neq cur "decrypt")))
+  (defrole wrap
+    (vars (k0 k1 skey) (lk locn) (cur mesg))
+    (trace (recv (hash k0)) (recv (hash k1)) (load lk (cat k0 cur))
+      (load lk (cat k1 "wrap")) (send (enc k0 k1)))
+    (gen-st (cat k0 cur))
+    (gen-st (cat k1 "wrap")))
+  (defrole decrypt
+    (vars (x mesg) (k skey) (lk locn))
+    (trace (recv (enc x k)) (recv (hash k)) (load lk (cat k "decrypt"))
+      (send x))
+    (gen-st (cat k "decrypt")))
+  (defrule cakeRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
+          (leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule no-interruption
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (leads-to z0 i0 z2 i2) (trans z1 i1)
+          (same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
+        (false))))
+  (defrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (defrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defrule scissorsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
+        (and (= z1 z2) (= i1 i2)))))
+  (defrule trRl_make-at-1
+    (forall ((z strd)) (implies (p "make" z 2) (trans z 1))))
+  (defrule trRl_make-at-0
+    (forall ((z strd)) (implies (p "make" z 1) (trans z 0))))
+  (defrule fact-set-wrap-neq0
+    (forall ((z strd) (cur mesg))
+      (implies
+        (and (p "set-wrap" z 1) (p "set-wrap" "cur" z cur))
+        (fact neq cur "wrap"))))
+  (defrule gen-st-set-wrap-0
+    (forall ((z strd) (cur mesg) (k skey))
+      (implies
+        (and (p "set-wrap" z 1) (p "set-wrap" "cur" z cur)
+          (p "set-wrap" "k" z k))
+        (gen-st (cat k cur)))))
+  (defrule trRl_set-wrap-at-1
+    (forall ((z strd)) (implies (p "set-wrap" z 2) (trans z 1))))
+  (defrule trRl_set-wrap-at-0
+    (forall ((z strd)) (implies (p "set-wrap" z 1) (trans z 0))))
+  (defrule fact-set-decrypt-neq0
+    (forall ((z strd) (cur mesg))
+      (implies
+        (and (p "set-decrypt" z 1) (p "set-decrypt" "cur" z cur))
+        (fact neq cur "decrypt"))))
+  (defrule gen-st-set-decrypt-0
+    (forall ((z strd) (cur mesg) (k skey))
+      (implies
+        (and (p "set-decrypt" z 1) (p "set-decrypt" "cur" z cur)
+          (p "set-decrypt" "k" z k))
+        (gen-st (cat k cur)))))
+  (defrule trRl_set-decrypt-at-1
+    (forall ((z strd)) (implies (p "set-decrypt" z 2) (trans z 1))))
+  (defrule trRl_set-decrypt-at-0
+    (forall ((z strd)) (implies (p "set-decrypt" z 1) (trans z 0))))
+  (defrule gen-st-wrap-1
+    (forall ((z strd) (cur mesg) (k0 skey))
+      (implies
+        (and (p "wrap" z 3) (p "wrap" "cur" z cur) (p "wrap" "k0" z k0))
+        (gen-st (cat k0 cur)))))
+  (defrule gen-st-wrap-0
+    (forall ((z strd) (k1 skey))
+      (implies
+        (and (p "wrap" z 2) (p "wrap" "k1" z k1))
+        (gen-st (cat k1 "wrap")))))
+  (defrule gen-st-decrypt-0
+    (forall ((z strd) (k skey))
+      (implies
+        (and (p "decrypt" z 1) (p "decrypt" "k" z k))
+        (gen-st (cat k "decrypt")))))
+  (defrule shearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (trans z2 i2)
+          (leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
+          (prec z0 i0 z2 i2))
+        (or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
+  (defrule invShearsRule
+    (forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
+      (implies
+        (and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
+          (leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
+        (or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
+
+(defskeleton wrap-decrypt
+  (vars (k skey))
+  (deflistener k)
+  (pen-non-orig k)
+  (traces ((recv k) (send k)))
+  (label 2)
+  (unrealized (0 0))
+  (origs)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton wrap-decrypt
+  (vars (old old-0 mesg) (pt pt-0 pt-1 pt-2 pt-3 pval) (k k1 skey)
+    (lk locn))
+  (deflistener k)
+  (defstrand wrap 5 (cur "init") (k0 k) (k1 k1) (lk lk))
+  (defstrand make 3 (old old) (k k) (lk lk))
+  (defstrand set-wrap 2 (cur "init") (k k1) (lk lk))
+  (defstrand make 2 (old old-0) (k k1) (lk lk))
+  (precedes ((1 4) (0 0)) ((2 1) (4 0)) ((2 2) (1 0)) ((3 1) (1 3))
+    ((4 1) (3 0)))
+  (pen-non-orig k)
+  (genStV (cat k "init") (cat k1 "init") (cat k1 "wrap"))
+  (facts (neq "init" "decrypt") (neq "init" "wrap"))
+  (rule invShearsRule trRl_make-at-0 trRl_make-at-1)
+  (operation channel-test (added-strand make 2)
+    (ch-msg lk (cat pt-2 k1 "init")) (3 0))
+  (traces ((recv k) (send k))
+    ((recv (hash k)) (recv (hash k1)) (load lk (cat pt-1 k "init"))
+      (load lk (cat pt k1 "wrap")) (send (enc k k1)))
+    ((load lk (cat pt-0 old)) (stor lk (cat pt-1 k "init"))
+      (send (hash k)))
+    ((load lk (cat pt-2 k1 "init")) (stor lk (cat pt k1 "wrap")))
+    ((load lk (cat pt-3 old-0)) (stor lk (cat pt-2 k1 "init"))))
+  (label 96)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((k k))))
+  (origs (pt-2 (4 1)) (pt (3 1)) (pt-1 (2 1))))
+
+(defskeleton wrap-decrypt
+  (vars (old old-0 old-1 mesg) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pval)
+    (k k1 skey) (lk lk-0 locn))
+  (deflistener k)
+  (defstrand make 2 (old old) (k k) (lk lk))
+  (defstrand wrap 5 (cur "init") (k0 k) (k1 k1) (lk lk))
+  (defstrand make 3 (old old-0) (k k) (lk lk-0))
+  (defstrand set-wrap 2 (cur "init") (k k1) (lk lk))
+  (defstrand make 2 (old old-1) (k k1) (lk lk))
+  (precedes ((1 1) (2 2)) ((1 1) (5 0)) ((2 4) (0 0)) ((3 2) (2 0))
+    ((4 1) (2 3)) ((5 1) (4 0)))
+  (pen-non-orig k)
+  (genStV (cat k "init") (cat k1 "init") (cat k1 "wrap"))
+  (facts (neq "init" "decrypt") (neq "init" "wrap"))
+  (rule invShearsRule trRl_make-at-0 trRl_make-at-1)
+  (operation channel-test (added-strand make 2)
+    (ch-msg lk (cat pt-4 k1 "init")) (4 0))
+  (traces ((recv k) (send k))
+    ((load lk (cat pt old)) (stor lk (cat pt-0 k "init")))
+    ((recv (hash k)) (recv (hash k1)) (load lk (cat pt-0 k "init"))
+      (load lk (cat pt-1 k1 "wrap")) (send (enc k k1)))
+    ((load lk-0 (cat pt-2 old-0)) (stor lk-0 (cat pt-3 k "init"))
+      (send (hash k)))
+    ((load lk (cat pt-4 k1 "init")) (stor lk (cat pt-1 k1 "wrap")))
+    ((load lk (cat pt-5 old-1)) (stor lk (cat pt-4 k1 "init"))))
+  (label 97)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((k k))))
+  (origs (pt-4 (5 1)) (pt-1 (4 1)) (pt-3 (3 1)) (pt-0 (1 1))))
+
+(defskeleton wrap-decrypt
+  (vars (old old-0 mesg) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (k k1 skey)
+    (lk locn))
+  (deflistener k)
+  (defstrand set-wrap 2 (cur "init") (k k) (lk lk))
+  (defstrand wrap 5 (cur "wrap") (k0 k) (k1 k1) (lk lk))
+  (defstrand make 3 (old old) (k k) (lk lk))
+  (defstrand set-wrap 2 (cur "init") (k k1) (lk lk))
+  (defstrand make 2 (old old-0) (k k1) (lk lk))
+  (precedes ((1 1) (2 2)) ((1 1) (5 0)) ((2 4) (0 0)) ((3 1) (1 0))
+    ((3 2) (2 0)) ((4 1) (2 3)) ((5 1) (4 0)))
+  (pen-non-orig k)
+  (genStV (cat k "init") (cat k "wrap") (cat k1 "init") (cat k1 "wrap"))
+  (facts (neq "init" "decrypt") (neq "init" "wrap"))
+  (rule invShearsRule trRl_make-at-0 trRl_make-at-1)
+  (operation channel-test (added-strand make 2)
+    (ch-msg lk (cat pt-3 k1 "init")) (4 0))
+  (traces ((recv k) (send k))
+    ((load lk (cat pt-2 k "init")) (stor lk (cat pt k "wrap")))
+    ((recv (hash k)) (recv (hash k1)) (load lk (cat pt k "wrap"))
+      (load lk (cat pt-0 k1 "wrap")) (send (enc k k1)))
+    ((load lk (cat pt-1 old)) (stor lk (cat pt-2 k "init"))
+      (send (hash k)))
+    ((load lk (cat pt-3 k1 "init")) (stor lk (cat pt-0 k1 "wrap")))
+    ((load lk (cat pt-4 old-0)) (stor lk (cat pt-3 k1 "init"))))
+  (label 152)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((k k))))
+  (origs (pt-3 (5 1)) (pt-0 (4 1)) (pt-2 (3 1)) (pt (1 1))))
+
+(defskeleton wrap-decrypt
+  (vars (old old-0 old-1 mesg)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval) (k k1 skey)
+    (lk lk-0 locn))
+  (deflistener k)
+  (defstrand make 2 (old old) (k k) (lk lk))
+  (defstrand set-wrap 2 (cur "init") (k k) (lk lk))
+  (defstrand wrap 5 (cur "wrap") (k0 k) (k1 k1) (lk lk))
+  (defstrand make 3 (old old-0) (k k) (lk lk-0))
+  (defstrand set-wrap 2 (cur "init") (k k1) (lk lk))
+  (defstrand make 2 (old old-1) (k k1) (lk lk))
+  (precedes ((1 1) (2 0)) ((2 1) (3 2)) ((2 1) (6 0)) ((3 4) (0 0))
+    ((4 2) (3 0)) ((5 1) (3 3)) ((6 1) (5 0)))
+  (pen-non-orig k)
+  (genStV (cat k "init") (cat k "wrap") (cat k1 "init") (cat k1 "wrap"))
+  (facts (neq "init" "decrypt") (neq "init" "wrap"))
+  (rule invShearsRule trRl_make-at-0 trRl_make-at-1)
+  (operation channel-test (added-strand make 2)
+    (ch-msg lk (cat pt-5 k1 "init")) (5 0))
+  (traces ((recv k) (send k))
+    ((load lk (cat pt old)) (stor lk (cat pt-0 k "init")))
+    ((load lk (cat pt-0 k "init")) (stor lk (cat pt-1 k "wrap")))
+    ((recv (hash k)) (recv (hash k1)) (load lk (cat pt-1 k "wrap"))
+      (load lk (cat pt-2 k1 "wrap")) (send (enc k k1)))
+    ((load lk-0 (cat pt-3 old-0)) (stor lk-0 (cat pt-4 k "init"))
+      (send (hash k)))
+    ((load lk (cat pt-5 k1 "init")) (stor lk (cat pt-2 k1 "wrap")))
+    ((load lk (cat pt-6 old-1)) (stor lk (cat pt-5 k1 "init"))))
+  (label 160)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((k k))))
+  (origs (pt-5 (6 1)) (pt-2 (5 1)) (pt-4 (4 1)) (pt-1 (2 1))
+    (pt-0 (1 1))))
+
+(defskeleton wrap-decrypt
+  (vars (old old-0 mesg) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (k k1 skey)
+    (lk locn))
+  (deflistener k)
+  (defstrand set-decrypt 2 (cur "init") (k k) (lk lk))
+  (defstrand wrap 5 (cur "decrypt") (k0 k) (k1 k1) (lk lk))
+  (defstrand make 3 (old old) (k k) (lk lk))
+  (defstrand set-wrap 2 (cur "init") (k k1) (lk lk))
+  (defstrand make 2 (old old-0) (k k1) (lk lk))
+  (precedes ((1 1) (2 2)) ((1 1) (5 0)) ((2 4) (0 0)) ((3 1) (1 0))
+    ((3 2) (2 0)) ((4 1) (2 3)) ((5 1) (4 0)))
+  (pen-non-orig k)
+  (genStV (cat k "decrypt") (cat k "init") (cat k1 "init")
+    (cat k1 "wrap"))
+  (facts (neq "init" "decrypt") (neq "init" "wrap"))
+  (rule invShearsRule trRl_make-at-0 trRl_make-at-1)
+  (operation channel-test (added-strand make 2)
+    (ch-msg lk (cat pt-3 k1 "init")) (4 0))
+  (traces ((recv k) (send k))
+    ((load lk (cat pt-2 k "init")) (stor lk (cat pt k "decrypt")))
+    ((recv (hash k)) (recv (hash k1)) (load lk (cat pt k "decrypt"))
+      (load lk (cat pt-0 k1 "wrap")) (send (enc k k1)))
+    ((load lk (cat pt-1 old)) (stor lk (cat pt-2 k "init"))
+      (send (hash k)))
+    ((load lk (cat pt-3 k1 "init")) (stor lk (cat pt-0 k1 "wrap")))
+    ((load lk (cat pt-4 old-0)) (stor lk (cat pt-3 k1 "init"))))
+  (label 199)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((k k))))
+  (origs (pt-3 (5 1)) (pt-0 (4 1)) (pt-2 (3 1)) (pt (1 1))))
+
+(defskeleton wrap-decrypt
+  (vars (old old-0 old-1 mesg)
+    (pt pt-0 pt-1 pt-2 pt-3 pt-4 pt-5 pt-6 pval) (k k1 skey)
+    (lk lk-0 locn))
+  (deflistener k)
+  (defstrand make 2 (old old) (k k) (lk lk))
+  (defstrand set-decrypt 2 (cur "init") (k k) (lk lk))
+  (defstrand wrap 5 (cur "decrypt") (k0 k) (k1 k1) (lk lk))
+  (defstrand make 3 (old old-0) (k k) (lk lk-0))
+  (defstrand set-wrap 2 (cur "init") (k k1) (lk lk))
+  (defstrand make 2 (old old-1) (k k1) (lk lk))
+  (precedes ((1 1) (2 0)) ((2 1) (3 2)) ((2 1) (6 0)) ((3 4) (0 0))
+    ((4 2) (3 0)) ((5 1) (3 3)) ((6 1) (5 0)))
+  (pen-non-orig k)
+  (genStV (cat k "decrypt") (cat k "init") (cat k1 "init")
+    (cat k1 "wrap"))
+  (facts (neq "init" "decrypt") (neq "init" "wrap"))
+  (rule invShearsRule trRl_make-at-0 trRl_make-at-1)
+  (operation channel-test (added-strand make 2)
+    (ch-msg lk (cat pt-5 k1 "init")) (5 0))
+  (traces ((recv k) (send k))
+    ((load lk (cat pt old)) (stor lk (cat pt-0 k "init")))
+    ((load lk (cat pt-0 k "init")) (stor lk (cat pt-1 k "decrypt")))
+    ((recv (hash k)) (recv (hash k1)) (load lk (cat pt-1 k "decrypt"))
+      (load lk (cat pt-2 k1 "wrap")) (send (enc k k1)))
+    ((load lk-0 (cat pt-3 old-0)) (stor lk-0 (cat pt-4 k "init"))
+      (send (hash k)))
+    ((load lk (cat pt-5 k1 "init")) (stor lk (cat pt-2 k1 "wrap")))
+    ((load lk (cat pt-6 old-1)) (stor lk (cat pt-5 k1 "init"))))
+  (label 200)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((k k))))
+  (origs (pt-5 (6 1)) (pt-2 (5 1)) (pt-4 (4 1)) (pt-1 (2 1))
+    (pt-0 (1 1))))
+
+(defskeleton wrap-decrypt
+  (vars (old old-0 mesg) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (k skey)
+    (lk lk-0 locn))
+  (deflistener k)
+  (defstrand make 2 (old old) (k k) (lk lk))
+  (defstrand set-wrap 2 (cur "init") (k k) (lk lk))
+  (defstrand wrap 5 (cur "wrap") (k0 k) (k1 k) (lk lk))
+  (defstrand make 3 (old old-0) (k k) (lk lk-0))
+  (defstrand set-decrypt 2 (cur "init") (k k) (lk lk-0))
+  (defstrand decrypt 4 (x k) (k k) (lk lk-0))
+  (precedes ((1 1) (2 0)) ((2 1) (3 2)) ((3 4) (6 0)) ((4 1) (5 0))
+    ((4 2) (3 0)) ((5 1) (6 2)) ((6 3) (0 0)))
+  (pen-non-orig k)
+  (genStV (cat k "decrypt") (cat k "init") (cat k "wrap"))
+  (facts (neq "init" "decrypt") (neq "init" "wrap"))
+  (operation encryption-test (displaced 7 3 wrap 5) (enc k k) (6 0))
+  (traces ((recv k) (send k))
+    ((load lk (cat pt old)) (stor lk (cat pt-0 k "init")))
+    ((load lk (cat pt-0 k "init")) (stor lk (cat pt-1 k "wrap")))
+    ((recv (hash k)) (recv (hash k)) (load lk (cat pt-1 k "wrap"))
+      (load lk (cat pt-1 k "wrap")) (send (enc k k)))
+    ((load lk-0 (cat pt-2 old-0)) (stor lk-0 (cat pt-3 k "init"))
+      (send (hash k)))
+    ((load lk-0 (cat pt-3 k "init")) (stor lk-0 (cat pt-4 k "decrypt")))
+    ((recv (enc k k)) (recv (hash k)) (load lk-0 (cat pt-4 k "decrypt"))
+      (send k)))
+  (label 1039)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((k k))))
+  (origs (pt-4 (5 1)) (pt-1 (2 1)) (pt-3 (4 1)) (pt-0 (1 1))))
+
+(defskeleton wrap-decrypt
+  (vars (old old-0 mesg) (pt pt-0 pt-1 pt-2 pt-3 pt-4 pval) (k skey)
+    (lk lk-0 locn))
+  (deflistener k)
+  (defstrand make 2 (old old) (k k) (lk lk))
+  (defstrand set-wrap 2 (cur "init") (k k) (lk lk))
+  (defstrand wrap 5 (cur "init") (k0 k) (k1 k) (lk lk))
+  (defstrand make 3 (old old-0) (k k) (lk lk-0))
+  (defstrand set-decrypt 2 (cur "init") (k k) (lk lk-0))
+  (defstrand decrypt 4 (x k) (k k) (lk lk-0))
+  (precedes ((1 1) (2 0)) ((1 1) (3 2)) ((2 1) (3 3)) ((3 4) (6 0))
+    ((4 1) (5 0)) ((4 2) (3 0)) ((5 1) (6 2)) ((6 3) (0 0)))
+  (pen-non-orig k)
+  (genStV (cat k "decrypt") (cat k "init") (cat k "wrap"))
+  (facts (neq "init" "decrypt") (neq "init" "wrap"))
+  (operation encryption-test (displaced 7 3 wrap 5) (enc k k) (6 0))
+  (traces ((recv k) (send k))
+    ((load lk (cat pt old)) (stor lk (cat pt-0 k "init")))
+    ((load lk (cat pt-0 k "init")) (stor lk (cat pt-1 k "wrap")))
+    ((recv (hash k)) (recv (hash k)) (load lk (cat pt-0 k "init"))
+      (load lk (cat pt-1 k "wrap")) (send (enc k k)))
+    ((load lk-0 (cat pt-2 old-0)) (stor lk-0 (cat pt-3 k "init"))
+      (send (hash k)))
+    ((load lk-0 (cat pt-3 k "init")) (stor lk-0 (cat pt-4 k "decrypt")))
+    ((recv (enc k k)) (recv (hash k)) (load lk-0 (cat pt-4 k "decrypt"))
+      (send k)))
+  (label 1143)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((k k))))
+  (origs (pt-4 (5 1)) (pt-1 (2 1)) (pt-3 (4 1)) (pt-0 (1 1))))
+
+(comment "Step limit exceeded--aborting run")
diff --git a/tst/yahalom-6.3.6.tst b/tst/yahalom-6.3.6.tst
--- a/tst/yahalom-6.3.6.tst
+++ b/tst/yahalom-6.3.6.tst
@@ -5,7 +5,7 @@
   (url "http://www.eecs.umich.edu/acal/swerve/docs/49-1.pdf")
   (bound 15))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/yahalom-6.3.6.scm")
 (comment "Strand count bounded at 15")
 
@@ -57,6 +57,7 @@
   (uniq-orig k n-a n-b)
   (operation encryption-test (added-strand serv 2)
     (enc b k n-a n-b (ltk a s)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat a n-a)) (recv (cat (enc b k n-a n-b (ltk a s)) blob))
       (send (cat blob (enc n-b k))))
@@ -78,6 +79,7 @@
   (uniq-orig k n-a n-b)
   (operation encryption-test (added-strand resp 2)
     (enc a n-a n-b (ltk b s)) (1 0))
+  (strand-map 0 1)
   (traces
     ((send (cat a n-a)) (recv (cat (enc b k n-a n-b (ltk a s)) blob))
       (send (cat blob (enc n-b k))))
@@ -141,6 +143,7 @@
   (uniq-orig k n-a n-b)
   (operation encryption-test (added-strand serv 2) (enc a k (ltk b s))
     (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k)))) ((recv k) (send k))
@@ -161,6 +164,7 @@
   (uniq-orig k n-a n-b)
   (operation encryption-test (displaced 3 0 resp 2)
     (enc a n-a-0 n-b-0 (ltk b s)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k)))) ((recv k) (send k))
@@ -183,6 +187,7 @@
   (uniq-orig k n-a n-b)
   (operation encryption-test (added-strand resp 2)
     (enc a n-a-0 n-b-0 (ltk b s)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k)))) ((recv k) (send k))
@@ -243,6 +248,7 @@
   (uniq-orig k n-a n-b)
   (operation encryption-test (added-strand serv 2) (enc a k (ltk b s))
     (0 2))
+  (strand-map 0)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -262,6 +268,7 @@
   (uniq-orig k n-a n-b)
   (operation encryption-test (displaced 2 0 resp 2)
     (enc a n-a-0 n-b-0 (ltk b s)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -282,6 +289,7 @@
   (uniq-orig k n-a n-b)
   (operation encryption-test (added-strand resp 2)
     (enc a n-a-0 n-b-0 (ltk b s)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -304,6 +312,7 @@
   (non-orig (ltk a s) (ltk b s))
   (uniq-orig k n-a n-b)
   (operation encryption-test (added-strand init 3) (enc n-b k) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -326,6 +335,7 @@
   (non-orig (ltk a s) (ltk b s))
   (uniq-orig k n-a n-b)
   (operation encryption-test (added-listener k) (enc n-b k) (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -350,6 +360,7 @@
   (non-orig (ltk a s) (ltk b s))
   (uniq-orig k n-a n-b)
   (operation encryption-test (added-strand init 3) (enc n-b k) (0 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -374,6 +385,7 @@
   (non-orig (ltk a s) (ltk b s))
   (uniq-orig k n-a n-b)
   (operation encryption-test (added-listener k) (enc n-b k) (0 2))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -398,6 +410,7 @@
   (uniq-orig k n-a n-b)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (s-0 s) (n-a-0 n-a))
     n-b (2 1) (enc a n-a n-b (ltk b s)) (enc b k n-a n-b (ltk a s)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -427,6 +440,7 @@
   (uniq-orig k n-a n-b)
   (operation nonce-test (added-strand init 3) n-b (2 1)
     (enc a n-a n-b (ltk b s)) (enc b k n-a n-b (ltk a s)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -456,6 +470,7 @@
   (uniq-orig k k-0 n-a n-b)
   (operation nonce-test (added-strand serv 2) n-b (2 1)
     (enc a n-a n-b (ltk b s)) (enc b k n-a n-b (ltk a s)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -469,6 +484,11 @@
   (label 17)
   (parent 11)
   (seen 19)
+  (seen-ops
+    (19
+      (operation nonce-test (added-strand init 3) n-b (2 1)
+        (enc a n-a n-b (ltk b s)) (enc b k n-a n-b (ltk a s))
+        (enc b k-0 n-a n-b (ltk a s))) (strand-map 0 1 2 4)))
   (unrealized (2 1))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -487,6 +507,7 @@
   (uniq-orig k k-0 n-a n-b)
   (operation nonce-test (added-strand serv 2) n-b (3 1)
     (enc a n-a n-b (ltk b s)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -519,6 +540,7 @@
   (uniq-orig k k-0 n-a n-b)
   (operation nonce-test (added-strand serv 2) n-b (2 1) (enc n-b k)
     (enc a n-a n-b (ltk b s)) (enc b k n-a n-b (ltk a s)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -552,6 +574,7 @@
   (uniq-orig k n-a n-b)
   (operation nonce-test (added-listener k) n-b (2 1) (enc n-b k)
     (enc a n-a n-b (ltk b s)) (enc b k n-a n-b (ltk a s)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -582,6 +605,7 @@
   (operation nonce-test (contracted (a-0 a) (b-0 b) (s-0 s) (n-a-0 n-a))
     n-b (2 1) (enc a n-a n-b (ltk b s)) (enc b k n-a n-b (ltk a s))
     (enc b k-0 n-a n-b (ltk a s)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -594,6 +618,8 @@
   (label 21)
   (parent 17)
   (seen 15)
+  (seen-ops
+    (15 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -614,6 +640,7 @@
   (operation nonce-test (added-strand init 3) n-b (2 1)
     (enc a n-a n-b (ltk b s)) (enc b k n-a n-b (ltk a s))
     (enc b k-0 n-a n-b (ltk a s)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -649,6 +676,7 @@
   (uniq-orig k k-0 n-a n-b)
   (operation nonce-test (added-strand init 3) n-b (3 1)
     (enc a n-a n-b (ltk b s)) (enc b k-0 n-a n-b (ltk a s)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -687,6 +715,7 @@
   (operation nonce-test (added-listener k) n-b (2 1) (enc n-b k)
     (enc a n-a n-b (ltk b s)) (enc b k n-a n-b (ltk a s))
     (enc b k-0 n-a n-b (ltk a s)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -725,6 +754,7 @@
   (operation nonce-test (added-strand serv 2) n-b (2 1) (enc n-b k-0)
     (enc a n-a n-b (ltk b s)) (enc b k n-a n-b (ltk a s))
     (enc b k-0 n-a n-b (ltk a s)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -764,6 +794,7 @@
   (operation nonce-test (added-listener k-0) n-b (2 1) (enc n-b k-0)
     (enc a n-a n-b (ltk b s)) (enc b k n-a n-b (ltk a s))
     (enc b k-0 n-a n-b (ltk a s)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -802,6 +833,7 @@
   (uniq-orig k k-0 k-1 n-a n-b)
   (operation nonce-test (added-strand serv 2) n-b (3 1) (enc n-b k-0)
     (enc a n-a n-b (ltk b s)) (enc b k-0 n-a n-b (ltk a s)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -842,6 +874,7 @@
   (uniq-orig k k-0 n-a n-b)
   (operation nonce-test (added-listener k-0) n-b (3 1) (enc n-b k-0)
     (enc a n-a n-b (ltk b s)) (enc b k-0 n-a n-b (ltk a s)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -882,6 +915,7 @@
   (operation nonce-test (added-listener k-0) n-b (2 1) (enc n-b k-0)
     (enc a n-a n-b (ltk b s)) (enc b k n-a n-b (ltk a s))
     (enc b k-0 n-a n-b (ltk a s)) (enc b k-1 n-a n-b (ltk a s)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -925,6 +959,7 @@
   (operation nonce-test (added-listener k-0) n-b (3 1) (enc n-b k-0)
     (enc a n-a n-b (ltk b s)) (enc b k-0 n-a n-b (ltk a s))
     (enc b k-1 n-a n-b (ltk a s)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
       (recv (cat (enc a k (ltk b s)) (enc n-b k))))
@@ -996,6 +1031,7 @@
   (uniq-orig k n-a n-b)
   (operation encryption-test (added-strand resp 2)
     (enc a n-a n-b (ltk b s)) (0 0))
+  (strand-map 0)
   (traces
     ((recv (cat b (enc a n-a n-b (ltk b s))))
       (send (cat (enc b k n-a n-b (ltk a s)) (enc a k (ltk b s)))))
diff --git a/tst/yahalom-6.3.6_shapes.tst b/tst/yahalom-6.3.6_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/yahalom-6.3.6_shapes.tst
@@ -0,0 +1,242 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Yahalom Protocol"
+  (comment "A Survey of Authentication Protocol Literature:"
+    "Version 1.0, John Clark and Jeremy Jacob,"
+    "Yahalom Protocol, Section 6.3.6, Page 49")
+  (url "http://www.eecs.umich.edu/acal/swerve/docs/49-1.pdf")
+  (bound 15))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/yahalom-6.3.6.scm")
+
+(comment "Strand count bounded at 15")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b s name) (n-a n-b text) (k skey) (blob mesg))
+    (trace (send (cat a n-a))
+      (recv (cat (enc b k n-a n-b (ltk a s)) blob))
+      (send (cat blob (enc n-b k)))))
+  (defrole resp
+    (vars (a b s name) (n-a n-b text) (k skey))
+    (trace (recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
+      (recv (cat (enc a k (ltk b s)) (enc n-b k)))))
+  (defrole serv
+    (vars (a b s name) (n-a n-b text) (k skey))
+    (trace (recv (cat b (enc a n-a n-b (ltk b s))))
+      (send (cat (enc b k n-a n-b (ltk a s)) (enc a k (ltk b s)))))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Yahalom protocol, Section 6.3.6, Page 49")
+  (url "http://www.eecs.umich.edu/acal/swerve/docs/49-1.pdf"))
+
+(defskeleton yahalom
+  (vars (blob mesg) (k skey) (n-a n-b text) (a b s name))
+  (defstrand init 3 (blob blob) (k k) (n-a n-a) (n-b n-b) (a a) (b b)
+    (s s))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig n-a n-b)
+  (traces
+    ((send (cat a n-a)) (recv (cat (enc b k n-a n-b (ltk a s)) blob))
+      (send (cat blob (enc n-b k)))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (n-a (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (blob mesg) (k skey) (n-a n-b text) (a b s name))
+  (defstrand init 3 (blob blob) (k k) (n-a n-a) (n-b n-b) (a a) (b b)
+    (s s))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (s s))
+  (defstrand resp 2 (n-a n-a) (n-b n-b) (a a) (b b) (s s))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig k n-a n-b)
+  (operation encryption-test (added-strand resp 2)
+    (enc a n-a n-b (ltk b s)) (1 0))
+  (traces
+    ((send (cat a n-a)) (recv (cat (enc b k n-a n-b (ltk a s)) blob))
+      (send (cat blob (enc n-b k))))
+    ((recv (cat b (enc a n-a n-b (ltk b s))))
+      (send (cat (enc b k n-a n-b (ltk a s)) (enc a k (ltk b s)))))
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))))
+  (label 2)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (n-a n-a) (n-b n-b) (k k) (blob blob))))
+  (origs (k (1 1)) (n-a (0 0)) (n-b (2 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b s name) (n-a n-b text) (k skey) (blob mesg))
+    (trace (send (cat a n-a))
+      (recv (cat (enc b k n-a n-b (ltk a s)) blob))
+      (send (cat blob (enc n-b k)))))
+  (defrole resp
+    (vars (a b s name) (n-a n-b text) (k skey))
+    (trace (recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
+      (recv (cat (enc a k (ltk b s)) (enc n-b k)))))
+  (defrole serv
+    (vars (a b s name) (n-a n-b text) (k skey))
+    (trace (recv (cat b (enc a n-a n-b (ltk b s))))
+      (send (cat (enc b k n-a n-b (ltk a s)) (enc a k (ltk b s)))))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Yahalom protocol, Section 6.3.6, Page 49")
+  (url "http://www.eecs.umich.edu/acal/swerve/docs/49-1.pdf"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b s name))
+  (defstrand resp 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (s s))
+  (deflistener k)
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig n-a n-b)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
+      (recv (cat (enc a k (ltk b s)) (enc n-b k)))) ((recv k) (send k)))
+  (label 3)
+  (unrealized (0 2))
+  (origs (n-b (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b s name) (n-a n-b text) (k skey) (blob mesg))
+    (trace (send (cat a n-a))
+      (recv (cat (enc b k n-a n-b (ltk a s)) blob))
+      (send (cat blob (enc n-b k)))))
+  (defrole resp
+    (vars (a b s name) (n-a n-b text) (k skey))
+    (trace (recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
+      (recv (cat (enc a k (ltk b s)) (enc n-b k)))))
+  (defrole serv
+    (vars (a b s name) (n-a n-b text) (k skey))
+    (trace (recv (cat b (enc a n-a n-b (ltk b s))))
+      (send (cat (enc b k n-a n-b (ltk a s)) (enc a k (ltk b s)))))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Yahalom protocol, Section 6.3.6, Page 49")
+  (url "http://www.eecs.umich.edu/acal/swerve/docs/49-1.pdf"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b s name))
+  (defstrand resp 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (s s))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig n-a n-b)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
+      (recv (cat (enc a k (ltk b s)) (enc n-b k)))))
+  (label 7)
+  (unrealized (0 2))
+  (origs (n-b (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (blob mesg) (k skey) (n-a n-b text) (a b s name))
+  (defstrand resp 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (s s))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (s s))
+  (defstrand init 3 (blob blob) (k k) (n-a n-a) (n-b n-b) (a a) (b b)
+    (s s))
+  (precedes ((0 1) (1 0)) ((1 1) (2 1)) ((2 0) (0 0)) ((2 2) (0 2)))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig k n-a n-b)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (s-0 s) (n-a-0 n-a))
+    n-b (2 1) (enc a n-a n-b (ltk b s)) (enc b k n-a n-b (ltk a s)))
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
+      (recv (cat (enc a k (ltk b s)) (enc n-b k))))
+    ((recv (cat b (enc a n-a n-b (ltk b s))))
+      (send (cat (enc b k n-a n-b (ltk a s)) (enc a k (ltk b s)))))
+    ((send (cat a n-a)) (recv (cat (enc b k n-a n-b (ltk a s)) blob))
+      (send (cat blob (enc n-b k)))))
+  (label 15)
+  (parent 7)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (n-a n-a) (n-b n-b) (k k))))
+  (origs (k (1 1)) (n-a (2 0)) (n-b (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b s name) (n-a n-b text) (k skey) (blob mesg))
+    (trace (send (cat a n-a))
+      (recv (cat (enc b k n-a n-b (ltk a s)) blob))
+      (send (cat blob (enc n-b k)))))
+  (defrole resp
+    (vars (a b s name) (n-a n-b text) (k skey))
+    (trace (recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))
+      (recv (cat (enc a k (ltk b s)) (enc n-b k)))))
+  (defrole serv
+    (vars (a b s name) (n-a n-b text) (k skey))
+    (trace (recv (cat b (enc a n-a n-b (ltk b s))))
+      (send (cat (enc b k n-a n-b (ltk a s)) (enc a k (ltk b s)))))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false))))
+  (comment "Yahalom protocol, Section 6.3.6, Page 49")
+  (url "http://www.eecs.umich.edu/acal/swerve/docs/49-1.pdf"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b s name))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (s s))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig k n-a n-b)
+  (traces
+    ((recv (cat b (enc a n-a n-b (ltk b s))))
+      (send (cat (enc b k n-a n-b (ltk a s)) (enc a k (ltk b s))))))
+  (label 31)
+  (unrealized (0 0))
+  (origs (k (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b s name))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (s s))
+  (defstrand resp 2 (n-a n-a) (n-b n-b) (a a) (b b) (s s))
+  (precedes ((1 1) (0 0)))
+  (non-orig (ltk a s) (ltk b s))
+  (uniq-orig k n-a n-b)
+  (operation encryption-test (added-strand resp 2)
+    (enc a n-a n-b (ltk b s)) (0 0))
+  (traces
+    ((recv (cat b (enc a n-a n-b (ltk b s))))
+      (send (cat (enc b k n-a n-b (ltk a s)) (enc a k (ltk b s)))))
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b s))))))
+  (label 32)
+  (parent 31)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (n-a n-a) (n-b n-b) (k k))))
+  (origs (k (0 1)) (n-b (1 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/yahalom-forward.scm b/tst/yahalom-forward.scm
new file mode 100644
--- /dev/null
+++ b/tst/yahalom-forward.scm
@@ -0,0 +1,41 @@
+(herald "Yahalom Protocol With Forwarding" (bound 15))
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b c name) (n-a n-b text) (k skey))
+    (trace (send (cat a n-a))
+	   (recv (enc b k n-a n-b (ltk a c)))
+	   (send (enc n-b k))))
+  (defrole resp
+    (vars (b a c name) (n-a n-b text) (rest mesg) (k skey))
+    (trace (recv (cat a n-a))
+	   (send (cat b (enc a n-a n-b (ltk b c))))
+	   (recv (cat (enc a k (ltk b c)) rest))
+	   (send rest) 
+	   (recv (enc n-b k))))
+  (defrole serv
+    (vars (c a b name) (n-a n-b text) (k skey))
+    (trace (recv (cat b (enc a n-a n-b (ltk b c))))
+	   (send (cat (enc a k (ltk b c))
+		      (enc b k n-a n-b (ltk a c)))))
+    (uniq-orig k)))
+
+(defskeleton yahalom
+  (vars (a b c name) (n-b text))
+  (defstrand resp 5 (a a) (b b) (c c) (n-b n-b))
+  (non-orig (ltk b c) (ltk a c))
+  (uniq-orig n-b))
+
+;;; Ensure encryption key remains secret.
+(defskeleton yahalom
+  (vars (a b c name) (n-b text) (k skey))
+  (defstrand resp 5 (a a) (b b) (c c) (n-b n-b) (k k))
+  (deflistener k)
+  (non-orig (ltk b c) (ltk a c))
+  (uniq-orig n-b))
+
+(defskeleton yahalom
+  (vars (a b c name) (n-a text))
+  (defstrand init 3 (n-a n-a) (a a) (b b) (c c))
+  (non-orig (ltk b c) (ltk a c))
+  (uniq-orig n-a))
diff --git a/tst/yahalom-forward.tst b/tst/yahalom-forward.tst
new file mode 100644
--- /dev/null
+++ b/tst/yahalom-forward.tst
@@ -0,0 +1,1594 @@
+(herald "Yahalom Protocol With Forwarding" (bound 15))
+
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/yahalom-forward.scm")
+(comment "Strand count bounded at 15")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b c name) (n-a n-b text) (k skey))
+    (trace (send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a c name) (n-a n-b text) (rest mesg) (k skey))
+    (trace (recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))))
+  (defrole serv
+    (vars (c a b name) (n-a n-b text) (k skey))
+    (trace (recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig n-b)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))))
+  (label 0)
+  (unrealized (0 2) (0 4))
+  (origs (n-b (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k skey) (n-b n-a n-a-0 n-b-0 text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a-0) (n-b n-b-0) (c c) (a a) (b b))
+  (precedes ((1 1) (0 2)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-b)
+  (operation encryption-test (added-strand serv 2) (enc a k (ltk b c))
+    (0 2))
+  (strand-map 0)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a-0 n-b-0 (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a-0 n-b-0 (ltk a c))))))
+  (label 1)
+  (parent 0)
+  (unrealized (0 4) (1 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-b)
+  (operation encryption-test (displaced 2 0 resp 2)
+    (enc a n-a-0 n-b-0 (ltk b c)) (1 0))
+  (strand-map 0 1)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c))))))
+  (label 2)
+  (parent 1)
+  (unrealized (0 4))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k skey) (n-b n-a n-a-0 n-b-0 text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a-0) (n-b n-b-0) (c c) (a a) (b b))
+  (defstrand resp 2 (n-a n-a-0) (n-b n-b-0) (b b) (a a) (c c))
+  (precedes ((1 1) (0 2)) ((2 1) (1 0)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-b)
+  (operation encryption-test (added-strand resp 2)
+    (enc a n-a-0 n-b-0 (ltk b c)) (1 0))
+  (strand-map 0 1)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a-0 n-b-0 (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a-0 n-b-0 (ltk a c)))))
+    ((recv (cat a n-a-0)) (send (cat b (enc a n-a-0 n-b-0 (ltk b c))))))
+  (label 3)
+  (parent 1)
+  (unrealized (0 4))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k skey) (n-b n-a n-a-0 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((1 1) (2 1)) ((2 2) (0 4)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-b)
+  (operation encryption-test (added-strand init 3) (enc n-b k) (0 4))
+  (strand-map 0 1)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a-0 n-a-0)) (recv (enc b-0 k n-a-0 n-b (ltk a-0 c-0)))
+      (send (enc n-b k))))
+  (label 4)
+  (parent 2)
+  (unrealized (2 1))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (deflistener k)
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((1 1) (2 0)) ((2 1) (0 4)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-b)
+  (operation encryption-test (added-listener k) (enc n-b k) (0 4))
+  (strand-map 0 1)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((recv k) (send k)))
+  (label 5)
+  (parent 2)
+  (unrealized (0 4) (2 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k skey) (n-b n-a n-a-0 n-b-0 n-a-1 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a-0) (n-b n-b-0) (c c) (a a) (b b))
+  (defstrand resp 2 (n-a n-a-0) (n-b n-b-0) (b b) (a a) (c c))
+  (defstrand init 3 (k k) (n-a n-a-1) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (precedes ((0 1) (3 1)) ((1 1) (0 2)) ((1 1) (3 1)) ((2 1) (1 0))
+    ((3 2) (0 4)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-b)
+  (operation encryption-test (added-strand init 3) (enc n-b k) (0 4))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a-0 n-b-0 (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a-0 n-b-0 (ltk a c)))))
+    ((recv (cat a n-a-0)) (send (cat b (enc a n-a-0 n-b-0 (ltk b c)))))
+    ((send (cat a-0 n-a-1)) (recv (enc b-0 k n-a-1 n-b (ltk a-0 c-0)))
+      (send (enc n-b k))))
+  (label 6)
+  (parent 3)
+  (unrealized (3 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k skey) (n-b n-a n-a-0 n-b-0 text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a-0) (n-b n-b-0) (c c) (a a) (b b))
+  (defstrand resp 2 (n-a n-a-0) (n-b n-b-0) (b b) (a a) (c c))
+  (deflistener k)
+  (precedes ((1 1) (0 2)) ((1 1) (3 0)) ((2 1) (1 0)) ((3 1) (0 4)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-b)
+  (operation encryption-test (added-listener k) (enc n-b k) (0 4))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a-0 n-b-0 (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a-0 n-b-0 (ltk a c)))))
+    ((recv (cat a n-a-0)) (send (cat b (enc a n-a-0 n-b-0 (ltk b c)))))
+    ((recv k) (send k)))
+  (label 7)
+  (parent 3)
+  (unrealized (0 4) (3 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((1 1) (2 1)) ((2 2) (0 4)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-b)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (c-0 c) (n-a-0 n-a))
+    n-b (2 1) (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c)))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (label 8)
+  (parent 4)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (c c) (n-b n-b) (n-a n-a) (rest rest) (k k))))
+  (origs (k (1 1)) (n-b (0 1))))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k skey) (n-b n-a n-a-0 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((1 1) (3 1)) ((2 2) (0 4))
+    ((3 2) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-b)
+  (operation nonce-test (added-strand init 3) n-b (2 1)
+    (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c)))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a-0 n-a-0)) (recv (enc b-0 k n-a-0 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (label 9)
+  (parent 4)
+  (seen 8)
+  (seen-ops
+    (8
+      (operation nonce-test
+        (contracted (a-0 a) (b-0 b) (c-0 c) (n-a-0 n-a)) n-b (2 1)
+        (enc n-b k) (enc a n-a n-b (ltk b c))
+        (enc b k n-a n-b (ltk a c))) (strand-map 0 1 2 2)))
+  (unrealized (2 1))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 skey) (n-b n-a n-a-0 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (1 0)) ((0 1) (3 0)) ((1 1) (0 2)) ((1 1) (2 1))
+    ((2 2) (0 4)) ((3 1) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 n-b)
+  (operation nonce-test (added-strand serv 2) n-b (2 1)
+    (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c)))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a-0 n-a-0)) (recv (enc b-0 k n-a-0 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c))))))
+  (label 10)
+  (parent 4)
+  (seen 12)
+  (seen-ops
+    (12
+      (operation nonce-test (added-strand init 3) n-b (2 1)
+        (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
+        (enc b k-0 n-a n-b (ltk a c))) (strand-map 0 1 2 4)))
+  (unrealized (2 1))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 skey) (n-b n-a n-a-0 n-b-0 n-a-1 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a-0) (n-b n-b-0) (c c) (a a) (b b))
+  (defstrand resp 2 (n-a n-a-0) (n-b n-b-0) (b b) (a a) (c c))
+  (defstrand init 3 (k k) (n-a n-a-1) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (4 0)) ((1 1) (0 2)) ((1 1) (3 1)) ((2 1) (1 0))
+    ((3 2) (0 4)) ((4 1) (3 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 n-b)
+  (operation nonce-test (added-strand serv 2) n-b (3 1)
+    (enc a n-a n-b (ltk b c)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a-0 n-b-0 (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a-0 n-b-0 (ltk a c)))))
+    ((recv (cat a n-a-0)) (send (cat b (enc a n-a-0 n-b-0 (ltk b c)))))
+    ((send (cat a-0 n-a-1)) (recv (enc b-0 k n-a-1 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c))))))
+  (label 11)
+  (parent 6)
+  (unrealized (3 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 skey) (n-b n-a n-a-0 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (1 0)) ((0 1) (4 0)) ((1 1) (0 2)) ((1 1) (3 1))
+    ((2 2) (0 4)) ((3 2) (2 1)) ((4 1) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 n-b)
+  (operation nonce-test (added-strand serv 2) n-b (2 1) (enc n-b k)
+    (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a-0 n-a-0)) (recv (enc b-0 k n-a-0 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c))))))
+  (label 12)
+  (parent 9)
+  (unrealized (2 1))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k skey) (n-b n-a n-a-0 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (deflistener k)
+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((1 1) (3 1)) ((1 1) (4 0))
+    ((2 2) (0 4)) ((3 2) (2 1)) ((4 1) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-b)
+  (operation nonce-test (added-listener k) n-b (2 1) (enc n-b k)
+    (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a-0 n-a-0)) (recv (enc b-0 k n-a-0 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))) ((recv k) (send k)))
+  (label 13)
+  (parent 9)
+  (unrealized (4 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (1 0)) ((0 1) (3 0)) ((1 1) (0 2)) ((1 1) (2 1))
+    ((2 2) (0 4)) ((3 1) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 n-b)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (c-0 c) (n-a-0 n-a))
+    n-b (2 1) (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
+    (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c))))))
+  (label 14)
+  (parent 10)
+  (seen 8)
+  (seen-ops
+    (8 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 skey) (n-b n-a n-a-0 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (precedes ((0 1) (1 0)) ((0 1) (3 0)) ((1 1) (0 2)) ((1 1) (2 1))
+    ((2 2) (0 4)) ((3 1) (4 1)) ((4 2) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 n-b)
+  (operation nonce-test (added-strand init 3) n-b (2 1)
+    (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
+    (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a-0 n-a-0)) (recv (enc b-0 k n-a-0 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0))))
+  (label 15)
+  (parent 10)
+  (seen 18)
+  (seen-ops
+    (18
+      (operation nonce-test (added-strand init 3) n-b (2 1)
+        (enc n-b k-0) (enc a n-a n-b (ltk b c))
+        (enc b k n-a n-b (ltk a c)) (enc b k-0 n-a n-b (ltk a c)))
+      (strand-map 0 1 2 4 5)))
+  (unrealized (2 1))
+  (comment "4 in cohort - 3 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 skey) (n-b n-a n-a-0 n-b-0 n-a-1 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a-0) (n-b n-b-0) (c c) (a a) (b b))
+  (defstrand resp 2 (n-a n-a-0) (n-b n-b-0) (b b) (a a) (c c))
+  (defstrand init 3 (k k) (n-a n-a-1) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (precedes ((0 1) (4 0)) ((1 1) (0 2)) ((1 1) (3 1)) ((2 1) (1 0))
+    ((3 2) (0 4)) ((4 1) (5 1)) ((5 2) (3 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 n-b)
+  (operation nonce-test (added-strand init 3) n-b (3 1)
+    (enc a n-a n-b (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a-0 n-b-0 (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a-0 n-b-0 (ltk a c)))))
+    ((recv (cat a n-a-0)) (send (cat b (enc a n-a-0 n-b-0 (ltk b c)))))
+    ((send (cat a-0 n-a-1)) (recv (enc b-0 k n-a-1 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0))))
+  (label 16)
+  (parent 11)
+  (unrealized (3 1))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (1 0)) ((0 1) (4 0)) ((1 1) (0 2)) ((1 1) (3 1))
+    ((2 2) (0 4)) ((3 2) (2 1)) ((4 1) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 n-b)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (c-0 c) (n-a-0 n-a))
+    n-b (2 1) (enc n-b k) (enc a n-a n-b (ltk b c))
+    (enc b k n-a n-b (ltk a c)) (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c))))))
+  (label 17)
+  (parent 12)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 skey) (n-b n-a n-a-0 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (precedes ((0 1) (1 0)) ((0 1) (4 0)) ((1 1) (0 2)) ((1 1) (3 1))
+    ((2 2) (0 4)) ((3 2) (2 1)) ((4 1) (5 1)) ((5 2) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 n-b)
+  (operation nonce-test (added-strand init 3) n-b (2 1) (enc n-b k)
+    (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
+    (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a-0 n-a-0)) (recv (enc b-0 k n-a-0 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0))))
+  (label 18)
+  (parent 12)
+  (unrealized (2 1))
+  (comment "4 in cohort - 4 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 skey) (n-b n-a n-a-0 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (deflistener k)
+  (precedes ((0 1) (1 0)) ((0 1) (4 0)) ((1 1) (0 2)) ((1 1) (3 1))
+    ((1 1) (5 0)) ((2 2) (0 4)) ((3 2) (2 1)) ((4 1) (2 1))
+    ((5 1) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 n-b)
+  (operation nonce-test (added-listener k) n-b (2 1) (enc n-b k)
+    (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
+    (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a-0 n-a-0)) (recv (enc b-0 k n-a-0 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((recv k) (send k)))
+  (label 19)
+  (parent 12)
+  (unrealized (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (precedes ((0 1) (1 0)) ((0 1) (3 0)) ((1 1) (0 2)) ((1 1) (2 1))
+    ((2 2) (0 4)) ((3 1) (4 1)) ((4 2) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 n-b)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (c-0 c) (n-a-0 n-a))
+    n-b (2 1) (enc n-b k-0) (enc a n-a n-b (ltk b c))
+    (enc b k n-a n-b (ltk a c)) (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0))))
+  (label 20)
+  (parent 15)
+  (seen 14)
+  (seen-ops
+    (14 (operation generalization deleted (4 0)) (strand-map 0 1 2 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 k-1 skey) (n-b n-a n-a-0 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-1) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (1 0)) ((0 1) (3 0)) ((0 1) (5 0)) ((1 1) (0 2))
+    ((1 1) (2 1)) ((2 2) (0 4)) ((3 1) (4 1)) ((4 2) (2 1))
+    ((5 1) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 k-1 n-b)
+  (operation nonce-test (added-strand serv 2) n-b (2 1) (enc n-b k-0)
+    (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
+    (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a-0 n-a-0)) (recv (enc b-0 k n-a-0 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-1 (ltk b c)) (enc b k-1 n-a n-b (ltk a c))))))
+  (label 21)
+  (parent 15)
+  (seen 26)
+  (seen-ops
+    (26
+      (operation nonce-test (added-strand init 3) n-b (2 1)
+        (enc n-b k-0) (enc a n-a n-b (ltk b c))
+        (enc b k n-a n-b (ltk a c)) (enc b k-0 n-a n-b (ltk a c))
+        (enc b k-1 n-a n-b (ltk a c))) (strand-map 0 1 2 4 5 6)))
+  (unrealized (2 1))
+  (comment "3 in cohort - 2 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 skey) (n-b n-a n-a-0 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (deflistener k-0)
+  (precedes ((0 1) (1 0)) ((0 1) (3 0)) ((1 1) (0 2)) ((1 1) (2 1))
+    ((2 2) (0 4)) ((3 1) (4 1)) ((3 1) (5 0)) ((4 2) (2 1))
+    ((5 1) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 n-b)
+  (operation nonce-test (added-listener k-0) n-b (2 1) (enc n-b k-0)
+    (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
+    (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a-0 n-a-0)) (recv (enc b-0 k n-a-0 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0))) ((recv k-0) (send k-0)))
+  (label 22)
+  (parent 15)
+  (unrealized (2 1) (5 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 k-1 skey) (n-b n-a n-a-0 n-b-0 n-a-1 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a-0) (n-b n-b-0) (c c) (a a) (b b))
+  (defstrand resp 2 (n-a n-a-0) (n-b n-b-0) (b b) (a a) (c c))
+  (defstrand init 3 (k k) (n-a n-a-1) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-1) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (4 0)) ((0 1) (6 0)) ((1 1) (0 2)) ((1 1) (3 1))
+    ((2 1) (1 0)) ((3 2) (0 4)) ((4 1) (5 1)) ((5 2) (3 1))
+    ((6 1) (3 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 k-1 n-b)
+  (operation nonce-test (added-strand serv 2) n-b (3 1) (enc n-b k-0)
+    (enc a n-a n-b (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a-0 n-b-0 (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a-0 n-b-0 (ltk a c)))))
+    ((recv (cat a n-a-0)) (send (cat b (enc a n-a-0 n-b-0 (ltk b c)))))
+    ((send (cat a-0 n-a-1)) (recv (enc b-0 k n-a-1 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-1 (ltk b c)) (enc b k-1 n-a n-b (ltk a c))))))
+  (label 23)
+  (parent 16)
+  (unrealized (3 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 skey) (n-b n-a n-a-0 n-b-0 n-a-1 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a-0) (n-b n-b-0) (c c) (a a) (b b))
+  (defstrand resp 2 (n-a n-a-0) (n-b n-b-0) (b b) (a a) (c c))
+  (defstrand init 3 (k k) (n-a n-a-1) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (deflistener k-0)
+  (precedes ((0 1) (4 0)) ((1 1) (0 2)) ((1 1) (3 1)) ((2 1) (1 0))
+    ((3 2) (0 4)) ((4 1) (5 1)) ((4 1) (6 0)) ((5 2) (3 1))
+    ((6 1) (3 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 n-b)
+  (operation nonce-test (added-listener k-0) n-b (3 1) (enc n-b k-0)
+    (enc a n-a n-b (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a-0 n-b-0 (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a-0 n-b-0 (ltk a c)))))
+    ((recv (cat a n-a-0)) (send (cat b (enc a n-a-0 n-b-0 (ltk b c)))))
+    ((send (cat a-0 n-a-1)) (recv (enc b-0 k n-a-1 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0))) ((recv k-0) (send k-0)))
+  (label 24)
+  (parent 16)
+  (unrealized (3 1) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (1 0)) ((0 1) (3 0)) ((1 1) (0 2)) ((1 1) (2 1))
+    ((2 2) (0 4)) ((3 1) (0 4)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 n-b)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c))))))
+  (label 25)
+  (parent 17)
+  (seen 8)
+  (seen-ops
+    (8 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 k-1 skey) (n-b n-a n-a-0 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-1) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (1 0)) ((0 1) (4 0)) ((0 1) (6 0)) ((1 1) (0 2))
+    ((1 1) (3 1)) ((2 2) (0 4)) ((3 2) (2 1)) ((4 1) (5 1))
+    ((5 2) (2 1)) ((6 1) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 k-1 n-b)
+  (operation nonce-test (added-strand serv 2) n-b (2 1) (enc n-b k)
+    (enc n-b k-0) (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
+    (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a-0 n-a-0)) (recv (enc b-0 k n-a-0 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-1 (ltk b c)) (enc b k-1 n-a n-b (ltk a c))))))
+  (label 26)
+  (parent 18)
+  (unrealized (2 1))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (precedes ((0 1) (1 0)) ((0 1) (4 0)) ((1 1) (0 2)) ((1 1) (3 1))
+    ((2 2) (0 4)) ((3 2) (2 1)) ((4 1) (5 1)) ((5 2) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 n-b)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (c-0 c) (n-a-0 n-a))
+    n-b (2 1) (enc n-b k) (enc n-b k-0) (enc a n-a n-b (ltk b c))
+    (enc b k n-a n-b (ltk a c)) (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0))))
+  (label 27)
+  (parent 18)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 skey) (n-b n-a n-a-0 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (deflistener k)
+  (precedes ((0 1) (1 0)) ((0 1) (4 0)) ((1 1) (0 2)) ((1 1) (3 1))
+    ((1 1) (6 0)) ((2 2) (0 4)) ((3 2) (2 1)) ((4 1) (5 1))
+    ((5 2) (2 1)) ((6 1) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 n-b)
+  (operation nonce-test (added-listener k) n-b (2 1) (enc n-b k)
+    (enc n-b k-0) (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
+    (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a-0 n-a-0)) (recv (enc b-0 k n-a-0 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0))) ((recv k) (send k)))
+  (label 28)
+  (parent 18)
+  (unrealized (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 skey) (n-b n-a n-a-0 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (deflistener k-0)
+  (precedes ((0 1) (1 0)) ((0 1) (4 0)) ((1 1) (0 2)) ((1 1) (3 1))
+    ((2 2) (0 4)) ((3 2) (2 1)) ((4 1) (5 1)) ((4 1) (6 0))
+    ((5 2) (2 1)) ((6 1) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 n-b)
+  (operation nonce-test (added-listener k-0) n-b (2 1) (enc n-b k)
+    (enc n-b k-0) (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
+    (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a-0 n-a-0)) (recv (enc b-0 k n-a-0 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0))) ((recv k-0) (send k-0)))
+  (label 29)
+  (parent 18)
+  (unrealized (2 1) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 k-1 skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-1) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (1 0)) ((0 1) (3 0)) ((0 1) (5 0)) ((1 1) (0 2))
+    ((1 1) (2 1)) ((2 2) (0 4)) ((3 1) (4 1)) ((4 2) (2 1))
+    ((5 1) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 k-1 n-b)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (c-0 c) (n-a-0 n-a))
+    n-b (2 1) (enc n-b k-0) (enc a n-a n-b (ltk b c))
+    (enc b k n-a n-b (ltk a c)) (enc b k-0 n-a n-b (ltk a c))
+    (enc b k-1 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-1 (ltk b c)) (enc b k-1 n-a n-b (ltk a c))))))
+  (label 30)
+  (parent 21)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 k-1 skey) (n-b n-a n-a-0 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-1) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (deflistener k-0)
+  (precedes ((0 1) (1 0)) ((0 1) (3 0)) ((0 1) (5 0)) ((1 1) (0 2))
+    ((1 1) (2 1)) ((2 2) (0 4)) ((3 1) (4 1)) ((3 1) (6 0))
+    ((4 2) (2 1)) ((5 1) (2 1)) ((6 1) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 k-1 n-b)
+  (operation nonce-test (added-listener k-0) n-b (2 1) (enc n-b k-0)
+    (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
+    (enc b k-0 n-a n-b (ltk a c)) (enc b k-1 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a-0 n-a-0)) (recv (enc b-0 k n-a-0 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-1 (ltk b c)) (enc b k-1 n-a n-b (ltk a c)))))
+    ((recv k-0) (send k-0)))
+  (label 31)
+  (parent 21)
+  (unrealized (2 1) (6 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 k-1 skey) (n-b n-a n-a-0 n-b-0 n-a-1 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a-0) (n-b n-b-0) (c c) (a a) (b b))
+  (defstrand resp 2 (n-a n-a-0) (n-b n-b-0) (b b) (a a) (c c))
+  (defstrand init 3 (k k) (n-a n-a-1) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-1) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (deflistener k-0)
+  (precedes ((0 1) (4 0)) ((0 1) (6 0)) ((1 1) (0 2)) ((1 1) (3 1))
+    ((2 1) (1 0)) ((3 2) (0 4)) ((4 1) (5 1)) ((4 1) (7 0))
+    ((5 2) (3 1)) ((6 1) (3 1)) ((7 1) (3 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 k-1 n-b)
+  (operation nonce-test (added-listener k-0) n-b (3 1) (enc n-b k-0)
+    (enc a n-a n-b (ltk b c)) (enc b k-0 n-a n-b (ltk a c))
+    (enc b k-1 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a-0 n-b-0 (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a-0 n-b-0 (ltk a c)))))
+    ((recv (cat a n-a-0)) (send (cat b (enc a n-a-0 n-b-0 (ltk b c)))))
+    ((send (cat a-0 n-a-1)) (recv (enc b-0 k n-a-1 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-1 (ltk b c)) (enc b k-1 n-a n-b (ltk a c)))))
+    ((recv k-0) (send k-0)))
+  (label 32)
+  (parent 23)
+  (unrealized (3 1) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 k-1 skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-1) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (1 0)) ((0 1) (4 0)) ((0 1) (6 0)) ((1 1) (0 2))
+    ((1 1) (3 1)) ((2 2) (0 4)) ((3 2) (2 1)) ((4 1) (5 1))
+    ((5 2) (2 1)) ((6 1) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 k-1 n-b)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (c-0 c) (n-a-0 n-a))
+    n-b (2 1) (enc n-b k) (enc n-b k-0) (enc a n-a n-b (ltk b c))
+    (enc b k n-a n-b (ltk a c)) (enc b k-0 n-a n-b (ltk a c))
+    (enc b k-1 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-1 (ltk b c)) (enc b k-1 n-a n-b (ltk a c))))))
+  (label 33)
+  (parent 26)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 k-1 skey) (n-b n-a n-a-0 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-1) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (deflistener k)
+  (precedes ((0 1) (1 0)) ((0 1) (4 0)) ((0 1) (6 0)) ((1 1) (0 2))
+    ((1 1) (3 1)) ((1 1) (7 0)) ((2 2) (0 4)) ((3 2) (2 1))
+    ((4 1) (5 1)) ((5 2) (2 1)) ((6 1) (2 1)) ((7 1) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 k-1 n-b)
+  (operation nonce-test (added-listener k) n-b (2 1) (enc n-b k)
+    (enc n-b k-0) (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
+    (enc b k-0 n-a n-b (ltk a c)) (enc b k-1 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a-0 n-a-0)) (recv (enc b-0 k n-a-0 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-1 (ltk b c)) (enc b k-1 n-a n-b (ltk a c)))))
+    ((recv k) (send k)))
+  (label 34)
+  (parent 26)
+  (unrealized (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 k-1 skey) (n-b n-a n-a-0 text)
+    (a b c a-0 b-0 c-0 name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a-0) (n-b n-b) (a a-0) (b b-0) (c c-0))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-1) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (deflistener k-0)
+  (precedes ((0 1) (1 0)) ((0 1) (4 0)) ((0 1) (6 0)) ((1 1) (0 2))
+    ((1 1) (3 1)) ((2 2) (0 4)) ((3 2) (2 1)) ((4 1) (5 1))
+    ((4 1) (7 0)) ((5 2) (2 1)) ((6 1) (2 1)) ((7 1) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 k-1 n-b)
+  (operation nonce-test (added-listener k-0) n-b (2 1) (enc n-b k)
+    (enc n-b k-0) (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
+    (enc b k-0 n-a n-b (ltk a c)) (enc b k-1 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5 6)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a-0 n-a-0)) (recv (enc b-0 k n-a-0 n-b (ltk a-0 c-0)))
+      (send (enc n-b k)))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-1 (ltk b c)) (enc b k-1 n-a n-b (ltk a c)))))
+    ((recv k-0) (send k-0)))
+  (label 35)
+  (parent 26)
+  (unrealized (2 1) (7 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (precedes ((0 1) (1 0)) ((0 1) (3 0)) ((1 1) (0 2)) ((1 1) (2 1))
+    ((2 2) (0 4)) ((3 1) (4 1)) ((4 2) (0 4)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 n-b)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4 5)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0))))
+  (label 36)
+  (parent 27)
+  (seen 25)
+  (seen-ops
+    (25 (operation generalization deleted (4 0)) (strand-map 0 1 2 3)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 k-1 skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand serv 2 (k k-1) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (1 0)) ((0 1) (3 0)) ((0 1) (4 0)) ((1 1) (0 2))
+    ((1 1) (2 1)) ((2 2) (0 4)) ((3 1) (2 1)) ((4 1) (2 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 k-1 n-b)
+  (operation generalization deleted (4 0))
+  (strand-map 0 1 2 3 5)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-1 (ltk b c)) (enc b k-1 n-a n-b (ltk a c))))))
+  (label 37)
+  (parent 30)
+  (seen 14)
+  (seen-ops
+    (14 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 k-1 skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k-0) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-1) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (1 0)) ((0 1) (3 0)) ((0 1) (5 0)) ((1 1) (0 2))
+    ((1 1) (2 1)) ((2 2) (0 4)) ((3 1) (4 1)) ((4 2) (0 4))
+    ((5 1) (0 4)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 k-1 n-b)
+  (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4 5 6)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k-0 n-a n-b (ltk a c)))
+      (send (enc n-b k-0)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-1 (ltk b c)) (enc b k-1 n-a n-b (ltk a c))))))
+  (label 38)
+  (parent 33)
+  (realized)
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k k-0 k-1 skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k-0) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand serv 2 (k k-1) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (1 0)) ((0 1) (3 0)) ((0 1) (4 0)) ((1 1) (0 2))
+    ((1 1) (2 1)) ((2 2) (0 4)) ((3 1) (0 4)) ((4 1) (0 4)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k k-0 k-1 n-b)
+  (operation generalization deleted (4 0))
+  (strand-map 0 1 2 3 5)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-0 (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k-1 (ltk b c)) (enc b k-1 n-a n-b (ltk a c))))))
+  (label 39)
+  (parent 38)
+  (seen 25)
+  (seen-ops
+    (25 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
+  (realized)
+  (comment "1 in cohort - 0 not yet seen"))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b c name) (n-a n-b text) (k skey))
+    (trace (send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a c name) (n-a n-b text) (rest mesg) (k skey))
+    (trace (recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))))
+  (defrole serv
+    (vars (c a b name) (n-a n-b text) (k skey))
+    (trace (recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (deflistener k)
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig n-b)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))) ((recv k) (send k)))
+  (label 40)
+  (unrealized (0 2) (0 4))
+  (origs (n-b (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k skey) (n-b n-a n-a-0 n-b-0 text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (deflistener k)
+  (defstrand serv 2 (k k) (n-a n-a-0) (n-b n-b-0) (c c) (a a) (b b))
+  (precedes ((2 1) (0 2)) ((2 1) (1 0)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-b)
+  (operation encryption-test (added-strand serv 2) (enc a k (ltk b c))
+    (0 2))
+  (strand-map 0 1)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))) ((recv k) (send k))
+    ((recv (cat b (enc a n-a-0 n-b-0 (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a-0 n-b-0 (ltk a c))))))
+  (label 41)
+  (parent 40)
+  (unrealized (0 4) (1 0) (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k skey) (n-b n-a text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (deflistener k)
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 1) (2 0)) ((2 1) (0 2)) ((2 1) (1 0)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-b)
+  (operation encryption-test (displaced 3 0 resp 2)
+    (enc a n-a-0 n-b-0 (ltk b c)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))) ((recv k) (send k))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c))))))
+  (label 42)
+  (parent 41)
+  (unrealized (0 4) (1 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton yahalom
+  (vars (rest mesg) (k skey) (n-b n-a n-a-0 n-b-0 text) (a b c name))
+  (defstrand resp 5 (rest rest) (k k) (n-a n-a) (n-b n-b) (b b) (a a)
+    (c c))
+  (deflistener k)
+  (defstrand serv 2 (k k) (n-a n-a-0) (n-b n-b-0) (c c) (a a) (b b))
+  (defstrand resp 2 (n-a n-a-0) (n-b n-b-0) (b b) (a a) (c c))
+  (precedes ((2 1) (0 2)) ((2 1) (1 0)) ((3 1) (2 0)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-b)
+  (operation encryption-test (added-strand resp 2)
+    (enc a n-a-0 n-b-0 (ltk b c)) (2 0))
+  (strand-map 0 1 2)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))) ((recv k) (send k))
+    ((recv (cat b (enc a n-a-0 n-b-0 (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a-0 n-b-0 (ltk a c)))))
+    ((recv (cat a n-a-0)) (send (cat b (enc a n-a-0 n-b-0 (ltk b c))))))
+  (label 43)
+  (parent 41)
+  (unrealized (0 4) (1 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b c name) (n-a n-b text) (k skey))
+    (trace (send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a c name) (n-a n-b text) (rest mesg) (k skey))
+    (trace (recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (cat (enc a k (ltk b c)) rest)) (send rest)
+      (recv (enc n-b k))))
+  (defrole serv
+    (vars (c a b name) (n-a n-b text) (k skey))
+    (trace (recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b c name))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig n-a)
+  (traces
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (label 44)
+  (unrealized (0 1))
+  (origs (n-a (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b c name))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-a)
+  (operation encryption-test (added-strand serv 2)
+    (enc b k n-a n-b (ltk a c)) (0 1))
+  (strand-map 0)
+  (traces
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c))))))
+  (label 45)
+  (parent 44)
+  (unrealized (1 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b c name))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand resp 2 (n-a n-a) (n-b n-b) (b b) (a a) (c c))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-a)
+  (operation encryption-test (added-strand resp 2)
+    (enc a n-a n-b (ltk b c)) (1 0))
+  (strand-map 0 1)
+  (traces
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (cat (enc a k (ltk b c)) (enc b k n-a n-b (ltk a c)))))
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))))
+  (label 46)
+  (parent 45)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (c c) (n-a n-a) (n-b n-b) (k k))))
+  (origs (k (1 1)) (n-a (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/yahalom.tst b/tst/yahalom.tst
--- a/tst/yahalom.tst
+++ b/tst/yahalom.tst
@@ -1,6 +1,6 @@
 (herald "Yahalom Protocol Without Forwarding" (bound 15))
 
-(comment "CPSA 4.4.3")
+(comment "CPSA 4.4.4")
 (comment "All input read from tst/yahalom.scm")
 (comment "Strand count bounded at 15")
 
@@ -47,6 +47,7 @@
   (uniq-orig k n-b)
   (operation encryption-test (added-strand serv 3) (enc a k (ltk b c))
     (0 2))
+  (strand-map 0)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -67,6 +68,7 @@
   (uniq-orig k n-b)
   (operation encryption-test (displaced 2 0 resp 2)
     (enc a n-a-0 n-b-0 (ltk b c)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -87,6 +89,7 @@
   (uniq-orig k n-b)
   (operation encryption-test (added-strand resp 2)
     (enc a n-a-0 n-b-0 (ltk b c)) (1 0))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -107,6 +110,7 @@
   (non-orig (ltk a c) (ltk b c))
   (uniq-orig k n-b)
   (operation encryption-test (added-strand init 3) (enc n-b k) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -128,6 +132,7 @@
   (non-orig (ltk a c) (ltk b c))
   (uniq-orig k n-b)
   (operation encryption-test (added-listener k) (enc n-b k) (0 3))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -151,6 +156,7 @@
   (non-orig (ltk a c) (ltk b c))
   (uniq-orig k n-b)
   (operation encryption-test (added-strand init 3) (enc n-b k) (0 3))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -174,6 +180,7 @@
   (non-orig (ltk a c) (ltk b c))
   (uniq-orig k n-b)
   (operation encryption-test (added-listener k) (enc n-b k) (0 3))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -196,6 +203,7 @@
   (uniq-orig k n-b)
   (operation nonce-test (contracted (a-0 a) (b-0 b) (c-0 c) (n-a-0 n-a))
     n-b (2 1) (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -222,6 +230,7 @@
   (uniq-orig k n-b)
   (operation nonce-test (added-strand init 3) n-b (2 1)
     (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -234,6 +243,12 @@
   (label 9)
   (parent 4)
   (seen 8)
+  (seen-ops
+    (8
+      (operation nonce-test
+        (contracted (a-0 a) (b-0 b) (c-0 c) (n-a-0 n-a)) n-b (2 1)
+        (enc n-b k) (enc a n-a n-b (ltk b c))
+        (enc b k n-a n-b (ltk a c))) (strand-map 0 1 2 2)))
   (unrealized (2 1))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -249,6 +264,7 @@
   (uniq-orig k k-0 n-b)
   (operation nonce-test (added-strand serv 2) n-b (2 1)
     (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -261,6 +277,11 @@
   (label 10)
   (parent 4)
   (seen 14)
+  (seen-ops
+    (14
+      (operation nonce-test (added-strand init 3) n-b (2 1)
+        (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
+        (enc b k-0 n-a n-b (ltk a c))) (strand-map 0 1 2 4)))
   (unrealized (2 1))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -274,6 +295,7 @@
   (uniq-orig k n-b)
   (operation nonce-test (displaced 3 1 serv 3) k (2 0)
     (enc b k n-a n-b (ltk a c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -300,6 +322,7 @@
   (uniq-orig k k-0 n-b)
   (operation nonce-test (added-strand serv 2) n-b (3 1)
     (enc a n-a n-b (ltk b c)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -326,6 +349,7 @@
   (uniq-orig k n-b)
   (operation nonce-test (displaced 4 1 serv 3) k (3 0)
     (enc b k n-a-0 n-b-0 (ltk a c)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -352,6 +376,7 @@
   (uniq-orig k k-0 n-b)
   (operation nonce-test (added-strand serv 2) n-b (2 1) (enc n-b k)
     (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -381,6 +406,7 @@
   (uniq-orig k n-b)
   (operation nonce-test (added-listener k) n-b (2 1) (enc n-b k)
     (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -408,6 +434,7 @@
   (operation nonce-test (contracted (a-0 a) (b-0 b) (c-0 c) (n-a-0 n-a))
     n-b (2 1) (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
     (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -420,6 +447,8 @@
   (label 16)
   (parent 10)
   (seen 8)
+  (seen-ops
+    (8 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -437,6 +466,7 @@
   (operation nonce-test (added-strand init 3) n-b (2 1)
     (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
     (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -451,6 +481,12 @@
   (label 17)
   (parent 10)
   (seen 20)
+  (seen-ops
+    (20
+      (operation nonce-test (added-strand init 3) n-b (2 1)
+        (enc n-b k-0) (enc a n-a n-b (ltk b c))
+        (enc b k n-a n-b (ltk a c)) (enc b k-0 n-a n-b (ltk a c)))
+      (strand-map 0 1 2 4 5)))
   (unrealized (2 1))
   (comment "4 in cohort - 3 not yet seen"))
 
@@ -469,6 +505,7 @@
   (uniq-orig k k-0 n-b)
   (operation nonce-test (added-strand init 3) n-b (3 1)
     (enc a n-a n-b (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -500,6 +537,7 @@
   (operation nonce-test (contracted (a-0 a) (b-0 b) (c-0 c) (n-a-0 n-a))
     n-b (2 1) (enc n-b k) (enc a n-a n-b (ltk b c))
     (enc b k n-a n-b (ltk a c)) (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -531,6 +569,7 @@
   (operation nonce-test (added-strand init 3) n-b (2 1) (enc n-b k)
     (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
     (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -565,6 +604,7 @@
   (operation nonce-test (added-listener k) n-b (2 1) (enc n-b k)
     (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
     (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -594,6 +634,7 @@
   (uniq-orig k n-b)
   (operation nonce-test (displaced 5 1 serv 3) k (4 0)
     (enc b k n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -623,6 +664,7 @@
   (operation nonce-test (contracted (a-0 a) (b-0 b) (c-0 c) (n-a-0 n-a))
     n-b (2 1) (enc n-b k-0) (enc a n-a n-b (ltk b c))
     (enc b k n-a n-b (ltk a c)) (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -637,6 +679,8 @@
   (label 23)
   (parent 17)
   (seen 16)
+  (seen-ops
+    (16 (operation generalization deleted (4 0)) (strand-map 0 1 2 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -656,6 +700,7 @@
   (operation nonce-test (added-strand serv 2) n-b (2 1) (enc n-b k-0)
     (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
     (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -672,6 +717,12 @@
   (label 24)
   (parent 17)
   (seen 29)
+  (seen-ops
+    (29
+      (operation nonce-test (added-strand init 3) n-b (2 1)
+        (enc n-b k-0) (enc a n-a n-b (ltk b c))
+        (enc b k n-a n-b (ltk a c)) (enc b k-0 n-a n-b (ltk a c))
+        (enc b k-1 n-a n-b (ltk a c))) (strand-map 0 1 2 4 5 6)))
   (unrealized (2 1))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -691,6 +742,7 @@
   (operation nonce-test (added-listener k-0) n-b (2 1) (enc n-b k-0)
     (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
     (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -724,6 +776,7 @@
   (uniq-orig k k-0 k-1 n-b)
   (operation nonce-test (added-strand serv 2) n-b (3 1) (enc n-b k-0)
     (enc a n-a n-b (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -760,6 +813,7 @@
   (uniq-orig k k-0 n-b)
   (operation nonce-test (added-listener k-0) n-b (3 1) (enc n-b k-0)
     (enc a n-a n-b (ltk b c)) (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -788,6 +842,7 @@
   (non-orig (ltk a c) (ltk b c))
   (uniq-orig k k-0 n-b)
   (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -800,6 +855,8 @@
   (label 28)
   (parent 19)
   (seen 8)
+  (seen-ops
+    (8 (operation generalization deleted (3 0)) (strand-map 0 1 2)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -820,6 +877,7 @@
   (operation nonce-test (added-strand serv 2) n-b (2 1) (enc n-b k)
     (enc n-b k-0) (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
     (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -855,6 +913,7 @@
   (operation nonce-test (contracted (a-0 a) (b-0 b) (c-0 c) (n-a-0 n-a))
     n-b (2 1) (enc n-b k) (enc n-b k-0) (enc a n-a n-b (ltk b c))
     (enc b k n-a n-b (ltk a c)) (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -890,6 +949,7 @@
   (operation nonce-test (added-listener k) n-b (2 1) (enc n-b k)
     (enc n-b k-0) (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
     (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -925,6 +985,7 @@
   (operation nonce-test (added-listener k-0) n-b (2 1) (enc n-b k)
     (enc n-b k-0) (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
     (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -958,6 +1019,7 @@
   (uniq-orig k k-0 n-b)
   (operation nonce-test (displaced 6 1 serv 3) k (5 0)
     (enc b k n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -992,6 +1054,7 @@
     n-b (2 1) (enc n-b k-0) (enc a n-a n-b (ltk b c))
     (enc b k n-a n-b (ltk a c)) (enc b k-0 n-a n-b (ltk a c))
     (enc b k-1 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1027,6 +1090,7 @@
   (operation nonce-test (added-listener k-0) n-b (2 1) (enc n-b k-0)
     (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
     (enc b k-0 n-a n-b (ltk a c)) (enc b k-1 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1060,6 +1124,7 @@
   (uniq-orig k k-0 n-b)
   (operation nonce-test (displaced 3 6 serv 3) k-0 (5 0)
     (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 5 3 4)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1097,6 +1162,7 @@
   (operation nonce-test (added-listener k-0) n-b (3 1) (enc n-b k-0)
     (enc a n-a n-b (ltk b c)) (enc b k-0 n-a n-b (ltk a c))
     (enc b k-1 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1133,6 +1199,7 @@
   (uniq-orig k k-0 n-b)
   (operation nonce-test (displaced 4 7 serv 3) k-0 (6 0)
     (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 6 4 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1170,6 +1237,7 @@
     n-b (2 1) (enc n-b k) (enc n-b k-0) (enc a n-a n-b (ltk b c))
     (enc b k n-a n-b (ltk a c)) (enc b k-0 n-a n-b (ltk a c))
     (enc b k-1 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1208,6 +1276,7 @@
   (operation nonce-test (added-listener k) n-b (2 1) (enc n-b k)
     (enc n-b k-0) (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
     (enc b k-0 n-a n-b (ltk a c)) (enc b k-1 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1246,6 +1315,7 @@
   (operation nonce-test (added-listener k-0) n-b (2 1) (enc n-b k)
     (enc n-b k-0) (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c))
     (enc b k-0 n-a n-b (ltk a c)) (enc b k-1 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1278,6 +1348,7 @@
   (non-orig (ltk a c) (ltk b c))
   (uniq-orig k k-0 n-b)
   (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1292,6 +1363,8 @@
   (label 42)
   (parent 30)
   (seen 28)
+  (seen-ops
+    (28 (operation generalization deleted (4 0)) (strand-map 0 1 2 3)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1311,6 +1384,7 @@
   (uniq-orig k k-0 n-b)
   (operation nonce-test (displaced 7 1 serv 3) k (6 0)
     (enc b k n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5 6)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1346,6 +1420,7 @@
   (uniq-orig k k-0 n-b)
   (operation nonce-test (displaced 4 7 serv 3) k-0 (6 0)
     (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 6 4 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1378,6 +1453,7 @@
   (non-orig (ltk a c) (ltk b c))
   (uniq-orig k k-0 k-1 n-b)
   (operation generalization deleted (4 0))
+  (strand-map 0 1 2 3 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1392,6 +1468,8 @@
   (label 45)
   (parent 34)
   (seen 16)
+  (seen-ops
+    (16 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1411,6 +1489,7 @@
   (uniq-orig k k-0 k-1 n-b)
   (operation nonce-test (displaced 3 7 serv 3) k-0 (6 0)
     (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 6 3 4 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1449,6 +1528,7 @@
   (uniq-orig k k-0 k-1 n-b)
   (operation nonce-test (displaced 4 8 serv 3) k-0 (7 0)
     (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 7 4 5 6)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1484,6 +1564,7 @@
   (non-orig (ltk a c) (ltk b c))
   (uniq-orig k k-0 k-1 n-b)
   (operation generalization deleted (2 0))
+  (strand-map 0 1 3 4 5 6)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1519,6 +1600,7 @@
   (uniq-orig k k-0 k-1 n-b)
   (operation nonce-test (displaced 8 1 serv 3) k (7 0)
     (enc b k n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 4 5 6 7)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1557,6 +1639,7 @@
   (uniq-orig k k-0 k-1 n-b)
   (operation nonce-test (displaced 4 8 serv 3) k-0 (7 0)
     (enc b k-0 n-a n-b (ltk a c)))
+  (strand-map 0 1 2 3 7 4 5 6)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1591,6 +1674,7 @@
   (non-orig (ltk a c) (ltk b c))
   (uniq-orig k k-0 k-1 n-b)
   (operation generalization deleted (4 0))
+  (strand-map 0 1 2 3 5)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k)))
@@ -1605,6 +1689,8 @@
   (label 51)
   (parent 48)
   (seen 28)
+  (seen-ops
+    (28 (operation generalization deleted (3 0)) (strand-map 0 1 2 4)))
   (realized)
   (comment "1 in cohort - 0 not yet seen"))
 
@@ -1656,6 +1742,7 @@
   (uniq-orig k n-b)
   (operation encryption-test (added-strand serv 3) (enc a k (ltk b c))
     (0 2))
+  (strand-map 0 1)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k))) ((recv k) (send k))
@@ -1677,6 +1764,7 @@
   (uniq-orig k n-b)
   (operation encryption-test (displaced 3 0 resp 2)
     (enc a n-a-0 n-b-0 (ltk b c)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k))) ((recv k) (send k))
@@ -1698,6 +1786,7 @@
   (uniq-orig k n-b)
   (operation encryption-test (added-strand resp 2)
     (enc a n-a-0 n-b-0 (ltk b c)) (2 0))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k))) ((recv k) (send k))
@@ -1719,6 +1808,7 @@
   (uniq-orig k n-b)
   (operation nonce-test (displaced 3 2 serv 3) k (1 0)
     (enc b k n-a n-b (ltk a c)))
+  (strand-map 0 1 2)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k))) ((recv k) (send k))
@@ -1741,6 +1831,7 @@
   (uniq-orig k n-b)
   (operation nonce-test (displaced 4 2 serv 3) k (1 0)
     (enc b k n-a-0 n-b-0 (ltk a c)))
+  (strand-map 0 1 2 3)
   (traces
     ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
       (recv (enc a k (ltk b c))) (recv (enc n-b k))) ((recv k) (send k))
@@ -1798,6 +1889,7 @@
   (uniq-orig k n-a)
   (operation encryption-test (added-strand serv 2)
     (enc b k n-a n-b (ltk a c)) (0 1))
+  (strand-map 0)
   (traces
     ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
       (send (enc n-b k)))
@@ -1818,6 +1910,7 @@
   (uniq-orig k n-a)
   (operation encryption-test (added-strand resp 2)
     (enc a n-a n-b (ltk b c)) (1 0))
+  (strand-map 0 1)
   (traces
     ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
       (send (enc n-b k)))
diff --git a/tst/yahalom_shapes.tst b/tst/yahalom_shapes.tst
new file mode 100644
--- /dev/null
+++ b/tst/yahalom_shapes.tst
@@ -0,0 +1,167 @@
+(comment "CPSA 4.3.1")
+(comment "Extracted shapes")
+
+(herald "Yahalom Protocol Without Forwarding" (bound 15))
+
+(comment "CPSA 4.3.1")
+
+(comment "All input read from tst/yahalom.scm")
+
+(comment "Strand count bounded at 15")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b c name) (n-a n-b text) (k skey))
+    (trace (send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a c name) (n-a n-b text) (k skey))
+    (trace (recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (enc a k (ltk b c))) (recv (enc n-b k))))
+  (defrole serv
+    (vars (c a b name) (n-a n-b text) (k skey))
+    (trace (recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (enc b k n-a n-b (ltk a c))) (send (enc a k (ltk b c))))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-b n-a text) (a b c name))
+  (defstrand resp 4 (k k) (n-a n-a) (n-b n-b) (b b) (a a) (c c))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig n-b)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (enc a k (ltk b c))) (recv (enc n-b k))))
+  (label 0)
+  (unrealized (0 2) (0 3))
+  (origs (n-b (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-b n-a text) (a b c name))
+  (defstrand resp 4 (k k) (n-a n-a) (n-b n-b) (b b) (a a) (c c))
+  (defstrand serv 3 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (precedes ((0 1) (1 0)) ((1 1) (2 1)) ((1 2) (0 2)) ((2 2) (0 3)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-b)
+  (operation nonce-test (contracted (a-0 a) (b-0 b) (c-0 c) (n-a-0 n-a))
+    n-b (2 1) (enc a n-a n-b (ltk b c)) (enc b k n-a n-b (ltk a c)))
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (enc a k (ltk b c))) (recv (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (enc b k n-a n-b (ltk a c))) (send (enc a k (ltk b c))))
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (label 8)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (c c) (n-b n-b) (n-a n-a) (k k))))
+  (origs (k (1 1)) (n-b (0 1))))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b c name) (n-a n-b text) (k skey))
+    (trace (send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a c name) (n-a n-b text) (k skey))
+    (trace (recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (enc a k (ltk b c))) (recv (enc n-b k))))
+  (defrole serv
+    (vars (c a b name) (n-a n-b text) (k skey))
+    (trace (recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (enc b k n-a n-b (ltk a c))) (send (enc a k (ltk b c))))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-b n-a text) (a b c name))
+  (defstrand resp 4 (k k) (n-a n-a) (n-b n-b) (b b) (a a) (c c))
+  (deflistener k)
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig n-b)
+  (traces
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (enc a k (ltk b c))) (recv (enc n-b k)))
+    ((recv k) (send k)))
+  (label 52)
+  (unrealized (0 2) (0 3))
+  (origs (n-b (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(comment "Nothing left to do")
+
+(defprotocol yahalom basic
+  (defrole init
+    (vars (a b c name) (n-a n-b text) (k skey))
+    (trace (send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (defrole resp
+    (vars (b a c name) (n-a n-b text) (k skey))
+    (trace (recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))
+      (recv (enc a k (ltk b c))) (recv (enc n-b k))))
+  (defrole serv
+    (vars (c a b name) (n-a n-b text) (k skey))
+    (trace (recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (enc b k n-a n-b (ltk a c))) (send (enc a k (ltk b c))))
+    (uniq-orig k))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b c name))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig n-a)
+  (traces
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k))))
+  (label 58)
+  (unrealized (0 1))
+  (origs (n-a (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yahalom
+  (vars (k skey) (n-a n-b text) (a b c name))
+  (defstrand init 3 (k k) (n-a n-a) (n-b n-b) (a a) (b b) (c c))
+  (defstrand serv 2 (k k) (n-a n-a) (n-b n-b) (c c) (a a) (b b))
+  (defstrand resp 2 (n-a n-a) (n-b n-b) (b b) (a a) (c c))
+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))
+  (non-orig (ltk a c) (ltk b c))
+  (uniq-orig k n-a)
+  (operation encryption-test (added-strand resp 2)
+    (enc a n-a n-b (ltk b c)) (1 0))
+  (traces
+    ((send (cat a n-a)) (recv (enc b k n-a n-b (ltk a c)))
+      (send (enc n-b k)))
+    ((recv (cat b (enc a n-a n-b (ltk b c))))
+      (send (enc b k n-a n-b (ltk a c))))
+    ((recv (cat a n-a)) (send (cat b (enc a n-a n-b (ltk b c))))))
+  (label 60)
+  (parent 58)
+  (realized)
+  (shape)
+  (maps ((0) ((a a) (b b) (c c) (n-a n-a) (n-b n-b) (k k))))
+  (origs (k (1 1)) (n-a (0 0))))
+
+(comment "Nothing left to do")
diff --git a/tst/yes-or-no.scm b/tst/yes-or-no.scm
new file mode 100644
--- /dev/null
+++ b/tst/yes-or-no.scm
@@ -0,0 +1,52 @@
+(herald yes-or-no)
+
+(defprotocol yes-or-no basic
+  (defrole init-positive
+    (vars (y n data) (question text) (ans name) (ans-key akey))
+    (trace
+     (send (enc question y n ans-key))
+     (recv y)))
+
+  (defrole init-negative
+    (vars (y n data) (question text) (ans name) (ans-key akey))
+    (trace
+     (send (enc question y n ans-key))
+     (recv n)))
+
+  (defrole resp-positive
+    (vars (y n data) (question text) (ans name) (ans-key akey))
+    (trace
+     (recv (enc question y n ans-key))
+     (send y)))
+
+  (defrole resp-negative
+    (vars (y n data) (question text) (ans name) (ans-key akey))
+    (trace
+     (recv (enc question y n ans-key))
+     (send n))))
+
+(defskeleton yes-or-no
+  (vars (y data) (ans-key akey))
+  (defstrand init-positive 2 (y y) (ans-key ans-key))
+  (uniq-orig y)
+  (non-orig (invk ans-key)))
+
+(defskeleton yes-or-no
+  (vars (ans-key akey) (n data))
+  (defstrand init-negative 2 (n n) (ans-key ans-key))
+  (uniq-orig n) 
+  (non-orig (invk ans-key)))
+
+(defskeleton yes-or-no
+  (vars (y data) (ans-key akey))
+  (defstrand init-positive 1 (y y) (ans-key ans-key))
+  (deflistener y)
+  (uniq-orig y)
+  (non-orig (invk ans-key)))
+
+(defskeleton yes-or-no
+  (vars (n data) (ans-key akey))
+  (defstrand init-positive 1 (n n) (ans-key ans-key))
+  (deflistener n) 
+  (uniq-orig n)
+  (non-orig (invk ans-key)))
diff --git a/tst/yes-or-no.tst b/tst/yes-or-no.tst
new file mode 100644
--- /dev/null
+++ b/tst/yes-or-no.tst
@@ -0,0 +1,260 @@
+(herald yes-or-no)
+
+(comment "CPSA 4.4.4")
+(comment "All input read from tst/yes-or-no.scm")
+
+(defprotocol yes-or-no basic
+  (defrole init-positive
+    (vars (y n data) (question text) (ans-key akey))
+    (trace (send (enc question y n ans-key)) (recv y)))
+  (defrole init-negative
+    (vars (y n data) (question text) (ans-key akey))
+    (trace (send (enc question y n ans-key)) (recv n)))
+  (defrole resp-positive
+    (vars (y n data) (question text) (ans-key akey))
+    (trace (recv (enc question y n ans-key)) (send y)))
+  (defrole resp-negative
+    (vars (y n data) (question text) (ans-key akey))
+    (trace (recv (enc question y n ans-key)) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yes-or-no
+  (vars (y n data) (question text) (ans-key akey))
+  (defstrand init-positive 2 (y y) (n n) (question question)
+    (ans-key ans-key))
+  (non-orig (invk ans-key))
+  (uniq-orig y)
+  (traces ((send (enc question y n ans-key)) (recv y)))
+  (label 0)
+  (unrealized (0 1))
+  (origs (y (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yes-or-no
+  (vars (y n data) (question text) (ans-key akey))
+  (defstrand init-positive 2 (y y) (n n) (question question)
+    (ans-key ans-key))
+  (defstrand resp-positive 2 (y y) (n n) (question question)
+    (ans-key ans-key))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk ans-key))
+  (uniq-orig y)
+  (operation nonce-test (added-strand resp-positive 2) y (0 1)
+    (enc question y n ans-key))
+  (strand-map 0)
+  (traces ((send (enc question y n ans-key)) (recv y))
+    ((recv (enc question y n ans-key)) (send y)))
+  (label 1)
+  (parent 0)
+  (realized)
+  (shape)
+  (maps ((0) ((y y) (ans-key ans-key) (n n) (question question))))
+  (origs (y (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol yes-or-no basic
+  (defrole init-positive
+    (vars (y n data) (question text) (ans-key akey))
+    (trace (send (enc question y n ans-key)) (recv y)))
+  (defrole init-negative
+    (vars (y n data) (question text) (ans-key akey))
+    (trace (send (enc question y n ans-key)) (recv n)))
+  (defrole resp-positive
+    (vars (y n data) (question text) (ans-key akey))
+    (trace (recv (enc question y n ans-key)) (send y)))
+  (defrole resp-negative
+    (vars (y n data) (question text) (ans-key akey))
+    (trace (recv (enc question y n ans-key)) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yes-or-no
+  (vars (n y data) (question text) (ans-key akey))
+  (defstrand init-negative 2 (y y) (n n) (question question)
+    (ans-key ans-key))
+  (non-orig (invk ans-key))
+  (uniq-orig n)
+  (traces ((send (enc question y n ans-key)) (recv n)))
+  (label 2)
+  (unrealized (0 1))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yes-or-no
+  (vars (n y data) (question text) (ans-key akey))
+  (defstrand init-negative 2 (y y) (n n) (question question)
+    (ans-key ans-key))
+  (defstrand resp-negative 2 (y y) (n n) (question question)
+    (ans-key ans-key))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk ans-key))
+  (uniq-orig n)
+  (operation nonce-test (added-strand resp-negative 2) n (0 1)
+    (enc question y n ans-key))
+  (strand-map 0)
+  (traces ((send (enc question y n ans-key)) (recv n))
+    ((recv (enc question y n ans-key)) (send n)))
+  (label 3)
+  (parent 2)
+  (realized)
+  (shape)
+  (maps ((0) ((ans-key ans-key) (n n) (y y) (question question))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol yes-or-no basic
+  (defrole init-positive
+    (vars (y n data) (question text) (ans-key akey))
+    (trace (send (enc question y n ans-key)) (recv y)))
+  (defrole init-negative
+    (vars (y n data) (question text) (ans-key akey))
+    (trace (send (enc question y n ans-key)) (recv n)))
+  (defrole resp-positive
+    (vars (y n data) (question text) (ans-key akey))
+    (trace (recv (enc question y n ans-key)) (send y)))
+  (defrole resp-negative
+    (vars (y n data) (question text) (ans-key akey))
+    (trace (recv (enc question y n ans-key)) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yes-or-no
+  (vars (y n data) (question text) (ans-key akey))
+  (defstrand init-positive 1 (y y) (n n) (question question)
+    (ans-key ans-key))
+  (deflistener y)
+  (non-orig (invk ans-key))
+  (uniq-orig y)
+  (traces ((send (enc question y n ans-key))) ((recv y) (send y)))
+  (label 4)
+  (unrealized (1 0))
+  (preskeleton)
+  (origs (y (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton yes-or-no
+  (vars (y n data) (question text) (ans-key akey))
+  (defstrand init-positive 1 (y y) (n n) (question question)
+    (ans-key ans-key))
+  (deflistener y)
+  (precedes ((0 0) (1 0)))
+  (non-orig (invk ans-key))
+  (uniq-orig y)
+  (traces ((send (enc question y n ans-key))) ((recv y) (send y)))
+  (label 5)
+  (parent 4)
+  (unrealized (1 0))
+  (origs (y (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yes-or-no
+  (vars (y n data) (question text) (ans-key akey))
+  (defstrand init-positive 1 (y y) (n n) (question question)
+    (ans-key ans-key))
+  (deflistener y)
+  (defstrand resp-positive 2 (y y) (n n) (question question)
+    (ans-key ans-key))
+  (precedes ((0 0) (2 0)) ((2 1) (1 0)))
+  (non-orig (invk ans-key))
+  (uniq-orig y)
+  (operation nonce-test (added-strand resp-positive 2) y (1 0)
+    (enc question y n ans-key))
+  (strand-map 0 1)
+  (traces ((send (enc question y n ans-key))) ((recv y) (send y))
+    ((recv (enc question y n ans-key)) (send y)))
+  (label 6)
+  (parent 5)
+  (realized)
+  (shape)
+  (maps ((0 1) ((y y) (ans-key ans-key) (n n) (question question))))
+  (origs (y (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol yes-or-no basic
+  (defrole init-positive
+    (vars (y n data) (question text) (ans-key akey))
+    (trace (send (enc question y n ans-key)) (recv y)))
+  (defrole init-negative
+    (vars (y n data) (question text) (ans-key akey))
+    (trace (send (enc question y n ans-key)) (recv n)))
+  (defrole resp-positive
+    (vars (y n data) (question text) (ans-key akey))
+    (trace (recv (enc question y n ans-key)) (send y)))
+  (defrole resp-negative
+    (vars (y n data) (question text) (ans-key akey))
+    (trace (recv (enc question y n ans-key)) (send n)))
+  (defgenrule neqRl_indx
+    (forall ((x indx)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_strd
+    (forall ((x strd)) (implies (fact neq x x) (false))))
+  (defgenrule neqRl_mesg
+    (forall ((x mesg)) (implies (fact neq x x) (false)))))
+
+(defskeleton yes-or-no
+  (vars (n y data) (question text) (ans-key akey))
+  (defstrand init-positive 1 (y y) (n n) (question question)
+    (ans-key ans-key))
+  (deflistener n)
+  (non-orig (invk ans-key))
+  (uniq-orig n)
+  (traces ((send (enc question y n ans-key))) ((recv n) (send n)))
+  (label 7)
+  (unrealized (1 0))
+  (preskeleton)
+  (origs (n (0 0)))
+  (comment "Not a skeleton"))
+
+(defskeleton yes-or-no
+  (vars (n y data) (question text) (ans-key akey))
+  (defstrand init-positive 1 (y y) (n n) (question question)
+    (ans-key ans-key))
+  (deflistener n)
+  (precedes ((0 0) (1 0)))
+  (non-orig (invk ans-key))
+  (uniq-orig n)
+  (traces ((send (enc question y n ans-key))) ((recv n) (send n)))
+  (label 8)
+  (parent 7)
+  (unrealized (1 0))
+  (origs (n (0 0)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton yes-or-no
+  (vars (n y data) (question text) (ans-key akey))
+  (defstrand init-positive 1 (y y) (n n) (question question)
+    (ans-key ans-key))
+  (deflistener n)
+  (defstrand resp-negative 2 (y y) (n n) (question question)
+    (ans-key ans-key))
+  (precedes ((0 0) (2 0)) ((2 1) (1 0)))
+  (non-orig (invk ans-key))
+  (uniq-orig n)
+  (operation nonce-test (added-strand resp-negative 2) n (1 0)
+    (enc question y n ans-key))
+  (strand-map 0 1)
+  (traces ((send (enc question y n ans-key))) ((recv n) (send n))
+    ((recv (enc question y n ans-key)) (send n)))
+  (label 9)
+  (parent 8)
+  (realized)
+  (shape)
+  (maps ((0 1) ((n n) (ans-key ans-key) (y y) (question question))))
+  (origs (n (0 0))))
+
+(comment "Nothing left to do")
